О, модер объявился из спячки... Требует чтоб всё было на английском....
Походу нам придётся искать новое место для тусовки, ибо это, я чую, скоро прикроют.
Это на самом деле может быть все что угодно, начиная от какого-нибудь менеджера методов обьекта типа игрок и заканчивая функцией "сформировать и отправить пакет определенного типа"
Как искать .. как искать зверей в лесу? Идешь и ищешь Кто долго копаются в клиенте знают много злачных мест, и примерная схема логики работы может подсказать нужное направление.
Но уже простая замена записи в регистр ecx значения P1, на помещение этого самого значения в стек (push P1), приводит к вышеуказанной ошибке. То же самое и с call.
После долгих раскопок, вот что получилось для имени игрока (оба дают имя чара):
[[[[[[$009771BC] +$04]+$08]+$1f0]+$16c]+$74]+$0
[[[[[[[[$009771BC] +$04]+$08]+$1f0]+$1a8]+$0c]+$16c]+$74]+$0
dwar, твои ошибки и AV являются следствием элементарного незнания/непонимания того, как объекты хранятся в памяти.
В-кратце поясняю :
1) большая часть функций типа __thiscall (в переводе на русский это будет this->subroutine)
2) особенность __thiscall в том, что этот самый this, то есть экземпляр класса ОБЯЗАТЕЛЬНО заносится в ecx, который и пушится перед вызовом функции.
В твоём коде, какгбы это по-мягче сказать.... ахинея :
Стандартным, при помощи CE и долго-нудного отсеивания результатов. Для имени чара, вначале ищется текст в юникоде, ну а потом поехало, ведь уже после второго смещения выдается список как минимум из сотни адресов, но, зная, какие не дают результата, отсеивание идет быстро. Больше здесь советов дать невозможно.
А на счет передвижения, я тоже сейчас над этим работаю, но пока нет результата. Пытался искать float значения, но они ни к чему не привели. Самый лучший вариант – поиск Unknown initial value, с последующим отсеиванием changed/unchanged, - долго, трудоемко, но вероятность получить требуемый результат выше.
Quote:
Originally Posted by BuBucekTop
1) большая часть функций типа __thiscall (в переводе на русский это будет this->subroutine)
2) особенность __thiscall в том, что этот самый this, то есть экземпляр класса ОБЯЗАТЕЛЬНО заносится в ecx, который и пушится перед вызовом функции.
Учитель, спасибо за разъяснения!
Но, например, для записи значения в память, такой то код использовать можно?
P.S.
[$00981c2c] - Кол-во сделанных кликов в окне клиента
Дальше, два адреса со значениями, которые меняются при перемещении чара. Что за значения, понятия не имею, я просто обратил на них внимание и нашел для них базовый адрес.
$009771d0+$04+$264
$009771BC+$08+$44+$08+$264