RisimO Опубликовано 8 апреля, 2013 Поделиться Опубликовано 8 апреля, 2013 Всем привет!Появился вопрос, пишу трейнер для игры. Наткнулся на вот такую инструкцию: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 returnhereaob_ammo:ammo:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)unregistersymbol(ammo)ammo:movss xmm1,[edx+54]Я совершенно не уверен в правильности AobScan'a, к тому же игра вылетает при таком коде(если через чит энжин вручную менять то всё нормально)Как правильно написать код? Что нужно изменить? Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 8 апреля, 2013 Поделиться Опубликовано 8 апреля, 2013 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) // закрываем ведро Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 8 апреля, 2013 Автор Поделиться Опубликовано 8 апреля, 2013 Меньше много адресов, больше ничего не найдено. Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 8 апреля, 2013 Поделиться Опубликовано 8 апреля, 2013 тогда возьми значимый байт сверху)aobscan(aob_ammo,?? ?? ?? ?? ?? ?? ?? ?? F3 0F 10 4A 54 F3 0F 10 15 XX XX XX XX XX XX) // важен бит F3 - начало инжекта, окружающие для точности поиска, чем их больше тем лучше, до разумного конечно.***"aob_ammo"+8: // +[?? ?? ?? ?? ?? ?? ?? ??]sheat:***_______________________________________Мои мысли требуют доработки реализациией_______________________________________ Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 9 апреля, 2013 Поделиться Опубликовано 9 апреля, 2013 Ставь игру на паузу. Активируй скрипт и смотри в дизассемблер на результат. Если инструкции ассемблировались не верно, то используй вариант записи байтовlabel(someLabel)someLabel:db xx xx xx xx ... // написать байтовое представления инструкции movss xmm7,[edx+54]Если инструкции ассемблировались верно, значит инъекция кода неправильная и тогда ищи другие варианты инъекции. Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 9 апреля, 2013 Автор Поделиться Опубликовано 9 апреля, 2013 <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 54db F3 0F 10 4A 54aob_ammo:ammo:db F3 0F 10 42 54returnhere:[DISABLE]ammo:db F3 0F 10 4A 54unregistersymbol(ammo)dealloc(newmem)И всё работает! Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiger Опубликовано 9 апреля, 2013 Поделиться Опубликовано 9 апреля, 2013 могу ошибаться, но можно упростить...[ENABLE]label(ammo)registersymbol(ammo)aobscan(aob_ammo,F3 0F 10 4A 54 F3)aob_ammo:ammo:db F3 0F 10 42 54returnhere:[DISABLE]ammo:db F3 0F 10 4A 54unregistersymbol(ammo) Ссылка на комментарий Поделиться на другие сайты Поделиться
RisimO Опубликовано 9 апреля, 2013 Автор Поделиться Опубликовано 9 апреля, 2013 Оу, спасибо. Недодумал! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения