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

Статичный адрес ф-ции? о_0


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

Значит так, речь идёт о battlefield 2.

Попытался найти статичный адрес патронов, не вышло, не знаю почему, но всё время после кучи оффсетов выходил на адрес без указателей.

После часа припадков злости что с этой игрой не так (а скорее с моей головой), решил глянуть как оно реализовано в интернете.

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


"BF2.exe"+19E736:
db 90 90
"BF2.exe"1B9466:
db 90 90

И тут я немного выпал в осадок, ведь как я понял тут просто занопили инструкцию оригинальную по двум адресам, кстати оригинальная инструкция:


sub [eax],edx

Так вот вопрос, неужели возможно такое, что в игре нету статичного адреса с патронами (всмысле указателя), и получается бывает так, что у ф-ции статичный адрес? И как определить статичный он или нет? Или он всегда статичный?

И ещё один : чем отличается


db 90 90

от простого


nop
nop

?

Оу, похоже я с названием лажанул, исправте кто может :ph34r:

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

Я немного не понял твоего вопроса.

Код генерируется статичным (в большинстве случаев), а значит и функции относительно модуля располагаются статично.

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

Если адрес патронов динамический, то по-любому должна существовать цепочка указателей от хотя бы одного статичного. Игра ведь должна как-то "добираться" к ячейке с патронами. А что на месте второй инструкции?

90h это код инструкции nop

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

Я немного не понял твоего вопроса.

Код генерируется статичным (в большинстве случаев), а значит и функции относительно модуля располагаются статично.

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

Если адрес патронов динамический, то по-любому должна существовать цепочка указателей от хотя бы одного статичного. Игра ведь должна как-то "добираться" к ячейке с патронами. А что на месте второй инструкции?

90h это код инструкции nop

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

Наверное плохо искал.

Кстати я так и не вкурил чем же отличается


db 90 90

от


nop
nop

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

Кстати я так и не вкурил чем же отличается


db 90 90

от


nop
nop

Ничем. nop - это инструкция, а db 90 90 значит записать код инструкции 2 раза по какому-либо адресу.

Вторая инструкция, возможно, это уменьшение кол-ва гранат или кол-ва патронов не-в-обойме.

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

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

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

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

Тогда зачем писать трейнеры, которые по куче раз меняют значение в адресе с патронами

Инструкции могут работать со всеми персонажами и бесконечные патроны будут и у компьютера. С патронами это не столь критично, а с бессмертием уже не пойдёт :)

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

Если не получается найти указатель на адрес, попробуй через анализ данных/структур, ну или с регистрами поработай. ^_^

Кстати я так и не вкурил чем же отличается

db 90 90

от

nop

nop

Не чем не отличается как сказал A1t0r.

db 90 90 - байты в нех.

nop nop - байты в Assembler.

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

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

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

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