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

Нестандартные для меня(!) функции


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

Всем привет!

Появился вопрос, пишу трейнер для игры. Наткнулся на вот такую инструкцию:

movss xmm1,[edx+54]

Мне нужно поменять на

movss xmm7,[edx+54]

Всё повесив на AobScan:


[ENABLE]
alloc(newmem,2048)
label(ammo)
label(returnhere)
registersymbol(ammo)
aobscan(aob_ammo,F3 0F 10 4A 54 F3 0F 10 15)//байты правильные.
newmem:
movss xmm7,[edx+54]
movss xmm1,[edx+54]
jmp returnhere

aob_ammo:
ammo:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
unregistersymbol(ammo)
ammo:
movss xmm1,[edx+54]

Я совершенно не уверен в правильности AobScan'a, к тому же игра вылетает при таком коде(если через чит энжин вручную менять то всё нормально)

Как правильно написать код? Что нужно изменить?

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

aobscan(aob_ammo,F3 0F 10 4A 54 F3 0F 10 15)

добавь еще 5-10 значимых бит после....( или до, но тогда вычисляй позицию аммо +5/+10)


Если все корректно работает без аобскана, тогда все что нужно поправить:


[DISABLE]
ammo:
movss xmm1,[edx+54] // Сначала вернем как было
unregistersymbol(ammo) // убираем фантик
dealloc(newmem) // закрываем ведро

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

тогда возьми значимый байт сверху)

aobscan(aob_ammo,?? ?? ?? ?? ?? ?? ?? ?? F3 0F 10 4A 54 F3 0F 10 15 XX XX XX XX XX XX) // важен бит F3 - начало инжекта, окружающие для точности поиска, чем их больше тем лучше, до разумного конечно.


***
"aob_ammo"+8: // +[?? ?? ?? ?? ?? ?? ?? ??]
sheat:
***

_______________________________________

Мои мысли требуют доработки реализациией

_______________________________________

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

Ставь игру на паузу. Активируй скрипт и смотри в дизассемблер на результат. Если инструкции ассемблировались не верно, то используй вариант записи байтов

label(someLabel)

someLabel:

db xx xx xx xx ... // написать байтовое представления инструкции movss xmm7,[edx+54]

Если инструкции ассемблировались верно, значит инъекция кода неправильная и тогда ищи другие варианты инъекции.

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

<br>

Ставь игру на паузу. Активируй скрипт и смотри в дизассемблер на результат. Если инструкции ассемблировались не верно, то используй вариант записи байтов

label(someLabel)<br>

someLabel:

db xx xx xx xx ... // написать байтовое представления инструкции movss xmm7,[edx+54]<br>

Если инструкции ассемблировались верно, значит инъекция кода неправильная и тогда ищи другие варианты инъекции.<br>

Спасибо обоим, игрушка как я понял надух не переносит jmp код переделал на такой:


[ENABLE]
alloc(newmem,2048)
label(ammo)
label(returnhere)
registersymbol(ammo)
aobscan(aob_ammo,F3 0F 10 4A 54 F3)
newmem:
db F3 0F 10 42 54
db F3 0F 10 4A 54

aob_ammo:
ammo:
db F3 0F 10 42 54

returnhere:

[DISABLE]
ammo:
db F3 0F 10 4A 54
unregistersymbol(ammo)
dealloc(newmem)

И всё работает!

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

могу ошибаться, но можно упростить...

[ENABLE]

label(ammo)

registersymbol(ammo)

aobscan(aob_ammo,F3 0F 10 4A 54 F3)

aob_ammo:

ammo:

db F3 0F 10 42 54

returnhere:

[DISABLE]

ammo:

db F3 0F 10 4A 54

unregistersymbol(ammo)

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

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

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

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