Перейти к содержанию

Рекомендуемые сообщения

Проблема такая:

Нахожу кол-во патронов в пистолете, изменяю, всё норм. Как только отладчик запускаю, игра без всякого краша просто закрывается.

Что сделать чтоб такого небыло?

Ссылка на комментарий
Поделиться на другие сайты

Я думаю у тебя вообще проблем быть не должно

snap2vq.th.jpg

из плагинов установлены только StrongOD и CmdBar

сами скрипты

[sp=патроны не уменьшаются]


[ENABLE]
aobscan(_faddress,83xxxxxxxxxxxx8bxxxxxxxxxx85xx74xx8bxxxx85xx8dxxxx74xx8bxxxx2bxx)

_faddress: // 0052762B = JustCause2.exe+12762B
nop
nop
nop
nop
nop
nop
nop

[DISABLE]
aobscan(_faddress,90908bxxxxxxxxxx85xx74xx8bxxxx85xx8dxxxx74xx8bxxxx2bxx)

_faddress-5:
add dword ptr [esi+000001e8],ff

dealloc(_newmem)
//Alt: db 83 86 E8 01 00 00 FF

[/sp]

[sp=кол-во запасных патрон]


[ENABLE]
aobscan(_faddress,8bxxxxxx03xxxxxxxx8bxxxxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxx8bxxxxxxxx)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)

_newmem:
mov dword ptr [eax+ecx*4+78],3e7
_originalcode:
mov eax,[eax+ecx*4+78]
add eax,[ebp-04]
jmp _returnhere

_faddress: // 00775036 = JustCause2.exe+375036
jmp _newmem
nop
nop
_returnhere:

[DISABLE]
aobscan(_faddress,9090xxxx8bxxxxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxx8bxxxxxxxx)

_faddress-5:
mov eax,[eax+ecx*4+78]
add eax,[ebp-04]
dealloc(_newmem)
//Alt: db 8B 44 88 78 03 45 FC

[/sp]

[sp=гранаты]


[ENABLE]
aobscan(_faddress,83xxxxxxxxxxxxxx0fxxxxxxxxxx8dxxxxe8xxxxxxxx83xxxxxx75xxxxxxxxxx)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)

_newmem:
mov dword ptr [eax+ebx*4+000000d4],63
_originalcode:
cmp dword ptr [eax+ebx*4+000000d4],00
jmp _returnhere

_faddress: // 00614EA2 = JustCause2_Game.exe+214EA2
jmp _newmem
nop
nop
nop
_returnhere:

[DISABLE]
aobscan(_faddress,9090900fxxxxxxxxxx8dxxxxe8xxxxxxxx83xxxxxx75xxxxxxxxxx)

_faddress-5:
cmp dword ptr [eax+ebx*4+000000d4],00

dealloc(_newmem)
//Alt: db 83 BC 98 D4 00 00 00 00

[/sp]

Ссылка на комментарий
Поделиться на другие сайты

Доломал я игру практически. 12 опций сделал.

Что-то я не понял, где-то я ошибся, а где не пойму.

Скрипт уровня розыска.

[cod]НЕ СОВСЕМ ТА ИНСТРУКЦИЯ[/cod]

по задумке, когда значение флага "1", то добавляет уровень розыска, а когда "2", то уменьшает. Но получается немного не так...

назначили флагу значение "1" - увеличилось, и оно автоматом сменилось на "0", как и должно быть. Затем еще раз назначили значение "1" и... уровень розыска уменьшился, хотя должен был увеличиться.

Ссылка на комментарий
Поделиться на другие сайты

А я знаю почему так :D

Для этих целей надо пользоваться инструкциями сопроцессора FPU... Так что надо скрипт немного подправить. Если не получится, то я помогу попозже.

Ссылка на комментарий
Поделиться на другие сайты

не совсем ту инструкцию я выбрал. Она "на запись".

Вот на доступ. Но тут тоже как-то через попу, если 3 флага. если 2 (1 и 0), то прекрасно работает.

[cod][ENABLE]

aobscan(_faddress,f3xxxxxxxx0fxxxxxxxxxxxxxxxx8bxx76xx33xx38xxxxxxxxxx74xxxxxxxxxx)

alloc(_newmem,2048)

label(_returnhere)

label(_originalcode)

label(_newmem2)

label(_flag)

registersymbol(_flag)

_newmem:

cmp byte ptr [_flag],1

jne _newmem2

cmp dword ptr [eax+30],0

jbe _originalcode

sub dword ptr [eax+30],41A00000

mov byte ptr [_flag],0

jmp _originalcode

_newmem2:

cmp byte ptr [_flag],2

jne _originalcode

cmp dword ptr [eax+30],42C80000 //100.0

jae _originalcode

add dword ptr [ecx+30],41A00000

mov byte ptr [_flag],0

_originalcode:

movss xmm0,[eax+30]

jmp _returnhere

_flag:

dd 0

_faddress: // 006B2965 = JustCause2.exe+2B2965

jmp _newmem

_returnhere:

[DISABLE]

aobscan(_faddress,0fxxxxxxxxxxxxxxxx8bxx76xx33xx38xxxxxxxxxx74xxxxxxxxxx)

_faddress-5:

movss xmm0,[eax+30]

dealloc(_newmem)

//Alt: db F3 0F 10 40 30[/cod]

уж смоги попозже, плз (нахал :lol: ), так бы я сюда не запостил.

щас пока из 1 инструкции сделаю 5 опций - этот скрип огромен)))

Ссылка на комментарий
Поделиться на другие сайты

Я написал по памяти, но могу ошибаться. Обычно, ошибки в логике написания инструкций FPU я сразу вижу и испрвляю при пошаговой отладке со справочником перед глазами, что и советую.

[sp=Код][ENABLE]

aobscan(_faddress,f3xxxxxxxx0fxxxxxxxxxxxxxxxx8bxx76xx33xx38xxxxxxxxxx74xxxxxxxxxx)

alloc(_newmem,2048)

label(_returnhere)

label(_originalcode)

label(_newmem2)

label(_flag)

registersymbol(_flag)

_newmem:

pushf

push ecx

mov ecx,[_flag]

cmp al,1

cmp byte ptr [_flag],1

jne _newmem2

cmp dword ptr [eax+30],0

jbe _originalcode

fld [eax+30] // отнимаем 20

fld float(20)

fsubp ST,ST2

fstp [eax+30]

mov byte ptr [_flag],0

jmp _originalcode

_newmem2:

cmp al,2

jne _originalcode

cmp dword ptr [eax+30],42C80000 //100.0

jae _originalcode

fld [ecx+30]

fld float(20)

faddp ST,ST2

fstp [ecx+30]

mov byte ptr [_flag],0

_originalcode:

pop ecx

popf

movss xmm0,[eax+30]

jmp _returnhere

_flag:

dd 0

_faddress: // 006B2965 = JustCause2.exe+2B2965

jmp _newmem

_returnhere:

[DISABLE]

aobscan(_faddress,0fxxxxxxxxxxxxxxxx8bxx76xx33xx38xxxxxxxxxx74xxxxxxxxxx)

_faddress-5:

movss xmm0,[eax+30]

dealloc(_newmem)

//Alt: db F3 0F 10 40 30[/sp]

Ссылка на комментарий
Поделиться на другие сайты

Да, не очень сложен этот FPU. Вообще хорошо бы каждому разобраться с подобными инструкциями окончательно, чтобы как я делать меньше ошибок. Да и мне бы тоже не помешало,поэтому может быть тутор сегодня сделаю, но никому не обещаю.

Ссылка на комментарий
Поделиться на другие сайты

зарелизил))

http://multi-up.com/245702

думаю это не окончательный вариант.. еще много всего можно сделать.

P.S. чет так влом в последнее время с копипейстом в масмовский движек хекс кодов мучиться надоело.. то в CE, то в GTS сделаю)))

Ссылка на комментарий
Поделиться на другие сайты

Трейнер получился красивым.

Я давным давно склоняюсь к тому чтобы к трейнерам с автоассемблером был некоторый модуль, тогда сами трейнеры могли бы быть малых размеров и они бы работали при условии, что есть этот модуль. А его можно собрать из исходников CheatEngine.

ps Я сделал мини-тутор по работе с FPU числами компилятора Borland C++. Заливаю... Надо ещё понять в какой раздел тему создать с этим тутором.

Ссылка на комментарий
Поделиться на другие сайты

На дефолтных настройках все нормально. JC2 может вылететь при бряке, если только ты аттачился к процессу игры, а не запускал игру из под отладчика.

Кстати, до установки бряка, лучше перейти в КПК по "F1", меньше гемора.

Ссылка на комментарий
Поделиться на другие сайты

В сержантском тренере всё работает, только на бомбах подрываюсь и снайперы убивают. Ложная тревога) а вот +23 тренер непонятно с чего работал и вдруг перестал...

Ссылка на комментарий
Поделиться на другие сайты

SERGANT а что тебе помешало сделать полное бессмертие, чтобы никто убить не мог? Ведь для этого достаточно изменить максимальное значение здоровья. Оно должно быть по соседству с адресом текущего здоровья (-4h или +10h). Только что проверял - всё работает. Даже из взорвавшейся машины можно спокойно выйти. Ставил 100 000

Ссылка на комментарий
Поделиться на другие сайты

Что значит "видимое"? Смерть же наступает из-за того, что снайперы и бомбы зараз отнимают все жизни. Пишем в адрес максимального значения здоровья 100000 и получаем полное бессмертие - 100 тыщ здоровья тебе ни один взрыв не отнимет. Вот я с помощью этой таблицы бессмертие делал: http://forum.cheatengine.org/viewtopic.php?t=497165 (странная таблица, адреса не морозятся...)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.