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

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

Привет! Вот хочу переделать трейнер на Deadhunt. Мой старый был написан на Tmk, вот хочу шагнуть в ногу со временем. Написал скрипт, нажал Execute, зашёл в игру, не вылетела, но и не поменяла значение. Как решить проблему? Скрипт:

[ENABLE]

//code from here to '[DISABLE]' will be used to enable the cheat

alloc(newmem,2048) //2kb should be enough

label(returnhere)

label(originalcode)

label(exit)

newmem:

mov [edx],000003E7

originalcode:

mov [edx],ecx

mov eax,[ebp-0000012c]

exit:

jmp returnhere

Deadhunt.exe+84753:

jmp newmem

nop

nop

nop

returnhere:

[DISABLE]

//code from here till the end of the code will be used to disable the cheat

dealloc(newmem)

Deadhunt.exe+84753:

mov [edx],ecx

mov eax,[ebp-0000012c]

//Alt: db 89 0A 8B 85 D4 FE FF FF

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

Попробуй так


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov ecx,000003E7
originalcode:
mov [edx],ecx
mov eax,[ebp-0000012c]
exit:
jmp returnhere

Deadhunt.exe+84753:
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
Deadhunt.exe+84753:
mov [edx],ecx
mov eax,[ebp-0000012c]

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


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov ecx,000003E7 // Тут пишем условые к инструкции на пример чтоб постоянно было 999 (000003E7) когда адрес обращается к инструкции. В этом случае правильно будет так mov ecx,000003E7. а у тебя mov [edx],000003E7.
originalcode:
mov [edx],ecx // к этой инструкции
mov eax,[ebp-0000012c]
exit:
jmp returnhere

Deadhunt.exe+84753: // Этот адрес скопировал под [DISABLE]
jmp newmem
nop
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
Deadhunt.exe+84753:
mov [edx],ecx
mov eax,[ebp-0000012c]

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

Я так понял, что если инстр. вида mov [edx],ecx, то берётся eax и записывается mov ecx,ХХХХ, а если mov eax,[esi+xxxx], то mov [esi+xxxx],xxxx?

В общем да. Мы командой

mov

записываем постоянное значение в

 ecx

.

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

Слушай, а вот допустим понаходил инструкций уйму и как проверить за что она отвечает? Как в TSearch поставил кружок красный и видно за что она отвечает. Как в CE сделать?

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

Слушай, а вот допустим понаходил инструкций уйму и как проверить за что она отвечает? Как в TSearch поставил кружок красный и видно за что она отвечает. Как в CE сделать?

В отладчике выделяешь инструкцию правой кнопкой мышки и Найти адреса,получающие доступ к этой инструкции

с версии ENG Find out what addresses this instruction accesses

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

Чтобы вручную не перводить в HEX десятичные целые числа в скриптах можно использовать префикс "#". Если вещественные то (float). Если double, то надо смотреть в справке уже не помню.


...
newmem:
mov [eax], #100
mov [eax+4], (float)100
...

Подскажите, а как скрипт СЕ перевести обратно в TMK?

А Вы сами подумайте можно или нет?! Очевидно, что нет. Либо вручную это делать либо писать программу. Лучше написать программу на LUA, которая бы выводила байты как на TMK... учите LUA, если настолько сильно требуется переводить в TMK формат. Я всё же советую забыть про TMK и пользоваться и учиться Cheat Engine 6.1 CR 1 (последняя тестовая версия и готовиться к финальной 6.1)

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

Согласен! CE лучше. Только конструктор трейнеров меня не прикалывает :blink:. Если поможете сделаю трейнер +2 на Xenus 2 v1.1.

Обьект взлома - опыт. Он там float. Инструкция вида movss [xxx+xxx],xmm0. По всякому пробовал записать, CE ругается :mad:

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

Инструкция вида movss [xxx+xxx],xmm0. По всякому пробовал записать, CE ругается :mad:


................
label(name)
newmem:
mov [name],63
originalcode:
movss xmm0,[name]
movss [xxx+xxx],xmm0

exit:
jmp returnhere

name:
dd 0
.........................

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

[ENABLE]

alloc(newmem,2048)

label(returnhere)

label(originalcode)

label(exit)

newmem:

mov [eax+esi*4+00001228],5F5E100

originalcode:

movss [eax+esi*4+00001228],xmm0

exit:

jmp returnhere

game.dll+DE415:

jmp newmem

nop

nop

nop

nop

returnhere:

[DISABLE]

dealloc(newmem)

game.dll+DE415:

movss [eax+esi*4+00001228],xmm0

//Alt: db F3 0F 11 84 B0 28 12 00 00

Ничего не меняется

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

Ничего не меняется

переделаю ваш скрипт, если из сообщения выше вы чего-то не поняли


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
label(exp)

newmem:
mov [exp],5F5E100
movss xmm0,[exp]
originalcode:
movss [eax+esi*4+00001228],xmm0
exit:
jmp returnhere

exp:
dd 0

game.dll+DE415:
jmp newmem
nop
nop
nop
nop
returnhere:


[DISABLE]
dealloc(newmem)
game.dll+DE415:
movss [eax+esi*4+00001228],xmm0
//Alt: db F3 0F 11 84 B0 28 12 00 00

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

ANT' date='23 Май 2011 - 00:28' timestamp='1306088895' post='3035']

переделаю ваш скрипт, если из сообщения выше вы чего-то не поняли


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
label(exp)

newmem:
mov [exp],5F5E100
movss xmm0,[exp]
originalcode:
movss [eax+esi*4+00001228],xmm0
exit:
jmp returnhere

exp:
dd 0

game.dll+DE415:
jmp newmem
nop
nop
nop
nop
returnhere:


[DISABLE]
dealloc(newmem)
game.dll+DE415:
movss [eax+esi*4+00001228],xmm0
//Alt: db F3 0F 11 84 B0 28 12 00 00

На заметку. Для инструкций работающих с регистрами xmm проверяйте, что ваши новые данные должны быть выровнены от начала блока памяти кратно 16 байт (иначе возможно игра будет подвисать, дёргаться или ещё что-нибудь), ещё говорят выровнены по 16-му параграфу. Назначь метку, от метки newmem на расстоянии кратном 16-ти байтам.

Пример:

[ENABLE]
alloc(_newmem,2048)

label(_coord)
registersymbol(_coord)

_newmem:
_coord: // кратно 16-ти байтам
dd (float)48.45
dd (float)2.96
dd (float)-3.54
dd (float)1

// а тут сделать тело чит-кода

// или здесь отступить кратно 16-ти байтам


[DISABLE]
dealloc(_newmem)
unregistersymbol(coord)
//Alt: db 0F 28 44 24 10


[ENABLE]
aobscan(_faddress,66xxxxxxxx8bxxxxxxxxxx89xxxx80xxxxxxxxxxxx74xxd9xxxxxxxxxxxxd9xx)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)

_newmem:
movaps xmm0,[_coord]
_originalcode:
db 66 0F D6 46 30 //"movq [esi+30],xmm0" - не компилировалось, поэтому пришлось писать байтами
jmp _returnhere

_faddress: // 00753ECF = metro2033.exe+353ECF
jmp _newmem
_returnhere:

[DISABLE]
aobscan(_faddress,8bxxxxxxxxxx89xxxx80xxxxxxxxxxxx74xxd9xxxxxxxxxxxxd9xx)

_faddress-5:
db 66 0F D6 46 30 //movq [esi+30],xmm0

dealloc(_newmem)
//Alt: db 66 0F D6 46 30

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

Izmalkoff по поводу твоего трейнера Deadhunt ты там писал что <<Однако урон может вам нанести "Предводитель" во второй миссии, от зомби, скелетов урона не наблюдалось>> Выложи скрипт на бессмертие посмотрю, скрипт создан на CE?

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

×
×
  • Создать...

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

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