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

Вывод адресов из адреса по сигнатуре в таблицу


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

Доброго времени суток форумчане. столкнулся с проблемой на писания теле порта. Дело в том что адреса начиная с самого адреса и вплоть до 12 уровня и дальше показываются как статистические а на самом деле меняются как перезапуске  игры, так и если просто с загрузке сохранения. Чтоб решить эту проблему я снял сигнатуру с самого указателя на адрес. вот будущий скрипт.

Спойлер

[ENABLE]
aobscan(_playr_coordinat_,8B * * 89 * * 89 * * 0F B6 * * 8B * 89 * * 8B * * 8B * FF * 8B * 83 * * 0F 84 * * * * 8B * * 8B * * 8B * * 8B * * 8B * * * * * 8B * * * 8B * * 83 * * * 8D * * * FF * 80 * * 74 * 8B * 8B * * 8D * * * * * * * 8B * FF * 8B * * 8B * 89 * * 89 * * 0F B6 * * 8B * * 6B * * 03 * 0F B6 * * * * * * 8D * * * * * * 8B)
alloc(newmem_playr_coordinat_,$1000)

label(code_playr_coordinat_)
label(return_playr_coordinat_)
label(_player_coordinates_)

registersymbol(_playr_coordinat_)


newmem_playr_coordinat_:
// здесь дописать
mov [_player_coordinates_],edx
code_playr_coordinat_:
mov eax,[edi+08]


mov [ebp-10],eax
jmp return_playr_coordinat_
_player_coordinates_:
 dd 0
_playr_coordinat_:
jmp newmem_playr_coordinat_
nop
return_playr_coordinat_:

registersymbol(_player_coordinates_)
[DISABLE]

_playr_coordinat_:
mov eax,[edi+08]
mov [ebp-10],eax

unregistersymbol(_playr_coordinat_)
unregistersymbol(_player_coordinates_)

dealloc(newmem_playr_coordinat_)

 

А вот сигнатура на поиск указателя  [ * * * * * 00 * 00 * 08 * 00 * 00 * 00 * * FF * 38 * * 00] регистр edx свободны. Необходим такой скрипт, найти адрес по сигнатуре и скопировать значение в регистр edx, скрипт вроде простой но я не знаю как и во всём интернете, ответа не нашёл. Дело в том что сигнатура не должна быть отдельным кодом а только использоваться для нахождения адреса, иначе скрипт будет включаться только когда будет произведён вход в саму игру, и не будет включаться если игру запустить, но не зайти на сохранённую игру или начать с начала. Буду благодарен всем кто откликнется, потому что искать указатели до бесконечности  уровней сложно. А еще второй вопрос, Как статистические адреса могут быть на самом деле динамичесими.

Изменено пользователем Pitronic
Исправление грамматических ошибок
Ссылка на комментарий
Поделиться на другие сайты

Забыл добавить необходимость этого варианта обосновано тем, что на всех уровнях указателя я не нашёл адреса который бы работал с одним адресом везде к инструкциям обращаются более 20 адресов. а адрес по сигнатуре всегда указывает на указатель адресов координатов игрока.

Изменено пользователем Pitronic
Исправление грамматических ошибок
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Pitronic сказал:

А вот сигнатура на поиск указателя

Не фига не понял вопрос, но он был очень интересный.

Ты же мне по моему задавал такой вопрос уже и ответ давал. Или он не работает ? Хотя тут вопрос такой, что не понятно :lol: что конкретно надо. 

newmem_playr_coordinat_:
mov edx,[edi+08]
mov ecx,[edx+xxxxxxxx]  // + сколько там ?
mov [],ecx  // координата...
mov ecx,[edx+xxxxxxxx]
mov [],ecx
mov ecx,[edx+xxxxxxxx]
mov [],ecx
code_playr_coordinat_:
mov eax,[edi+08]
mov [ebp-10],eax

Хотя от куда что и куда передается - это над телепата нанимать или экстрасенса, а это уже дополнительные расходы.

Ps: И сигнатура такой быть не может... или она у тебя разбита на 2 части, а начало в самом скрипте ?

* * * * * 00 * 00 * 08 * 00 * 00 * 00 * * FF * 38 * * 00

 

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

1 час назад, LIRW сказал:

Ты же мне по моему задавал такой вопрос уже и ответ давал

только тогда я не знал что к инструкции много адресов обращается, и в результате в таблице не верные координаты. а сигнатура выводит на сам указатель. В указателей всех уровней не один адрес а множества, проще обратиться к адресу с сигнатурой, чем искать указатель выше 12 уровня, фильтр сделать не получается во всех адресах в структуре значения меняються, ото можно проверить если открыть инструмент поиск совпадений, в конце не остаётся не одного адреса.

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

6 минут назад, Pitronic сказал:

а сигнатура выводит на сам указатель.

* * * * * 00 * 00 * 08 * 00 * 00 * 00 * * FF * 38 * * 00

странная она какая то... Это +5 что ли... или просто первого байта нет. От +5 смысла нет эти пропуски делать. с 00 и начинал бы. Может кто не будь разберется, поможет.

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

1 час назад, LIRW сказал:

сигнатура такой быть не може

сигнатура плагином найдена первые 4 байта заменил на звёзды, так как там значение которое всегда меняется.

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

1 минуту назад, LIRW сказал:

или просто первого байта нет

пятый байт был звёздочкой а первые 4 байта сам заменил так как там значение которое меняется, потому что это не на инструкцию сигнатура а на сам адрес. именоо там значение

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

чтоб было понятно с первыми байтами я специално зашёл в игру и снял первые 4 байта с адреса

первый раз 20 CC 8A 01 в этой сигнатуре  [вероятное значение] - [18ACC20]
второй раз A0 2C AA 07 в этой сигнатуре  [вероятное значение] - [7AA2CA0]
третий раз A0 D0 A6 01   в этой сигнатуре  [вероятное значение] - [1A6D0A0[]

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

5 часов назад, LIRW сказал:

От +5 смысла

первые 4 байта без плюсов, именно там значение, потому что адрес не с инструкции указателя а с самого указателя,

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

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

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

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