Afro Опубликовано 19 июля, 2014 Поделиться Опубликовано 19 июля, 2014 Значит так, речь идёт о battlefield 2.Попытался найти статичный адрес патронов, не вышло, не знаю почему, но всё время после кучи оффсетов выходил на адрес без указателей.После часа припадков злости что с этой игрой не так (а скорее с моей головой), решил глянуть как оно реализовано в интернете.Нашёл таблицу, ну думаю, сейчас увижу всё, прозрею сразу, но ни тут то было, в таблице скрипт вот такого содержания:"BF2.exe"+19E736:db 90 90"BF2.exe"1B9466:db 90 90И тут я немного выпал в осадок, ведь как я понял тут просто занопили инструкцию оригинальную по двум адресам, кстати оригинальная инструкция:sub [eax],edxТак вот вопрос, неужели возможно такое, что в игре нету статичного адреса с патронами (всмысле указателя), и получается бывает так, что у ф-ции статичный адрес? И как определить статичный он или нет? Или он всегда статичный?И ещё один : чем отличается db 90 90от простого nopnop?Оу, похоже я с названием лажанул, исправте кто может Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 20 июля, 2014 Поделиться Опубликовано 20 июля, 2014 Я немного не понял твоего вопроса.Код генерируется статичным (в большинстве случаев), а значит и функции относительно модуля располагаются статично. Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 20 июля, 2014 Поделиться Опубликовано 20 июля, 2014 Если адрес патронов динамический, то по-любому должна существовать цепочка указателей от хотя бы одного статичного. Игра ведь должна как-то "добираться" к ячейке с патронами. А что на месте второй инструкции?90h это код инструкции nop Ссылка на комментарий Поделиться на другие сайты Поделиться
Afro Опубликовано 20 июля, 2014 Автор Поделиться Опубликовано 20 июля, 2014 Я немного не понял твоего вопроса.Код генерируется статичным (в большинстве случаев), а значит и функции относительно модуля располагаются статично.Тогда зачем писать трейнеры, которые по куче раз меняют значение в адресе с патронами и т.д., если можно просто найти адрес инструкции и изменить её всего один раз, мне кажется это проще, хотя наверное не со всеми играми.Если адрес патронов динамический, то по-любому должна существовать цепочка указателей от хотя бы одного статичного. Игра ведь должна как-то "добираться" к ячейке с патронами. А что на месте второй инструкции?90h это код инструкции nopВо второй тоже самое, видимо для какой-то ещё ситуации с патронами. Я тоже всегда думал, что статический указатель всегда должен быть, да это и по логике ясно, но там такая куча смещений, что мама не горюй.Наверное плохо искал.Кстати я так и не вкурил чем же отличаетсяdb 90 90отnopnop Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 20 июля, 2014 Поделиться Опубликовано 20 июля, 2014 Кстати я так и не вкурил чем же отличаетсяdb 90 90отnopnopНичем. nop - это инструкция, а db 90 90 значит записать код инструкции 2 раза по какому-либо адресу.Вторая инструкция, возможно, это уменьшение кол-ва гранат или кол-ва патронов не-в-обойме. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 20 июля, 2014 Поделиться Опубликовано 20 июля, 2014 Тогда зачем писать трейнеры, которые по куче раз меняют значение в адресе с патронами и т.д., если можно просто найти адрес инструкции и изменить её всего один раз, мне кажется это проще, хотя наверное не со всеми играми.Трейнеры пишут с использованием сигнатур в основном, чтобы даже если игра обновилась, то участок кода был всё равно найден. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 21 июля, 2014 Поделиться Опубликовано 21 июля, 2014 Тогда зачем писать трейнеры, которые по куче раз меняют значение в адресе с патронами Инструкции могут работать со всеми персонажами и бесконечные патроны будут и у компьютера. С патронами это не столь критично, а с бессмертием уже не пойдёт Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 22 июля, 2014 Поделиться Опубликовано 22 июля, 2014 Если не получается найти указатель на адрес, попробуй через анализ данных/структур, ну или с регистрами поработай. Кстати я так и не вкурил чем же отличаетсяdb 90 90отnopnopНе чем не отличается как сказал A1t0r.db 90 90 - байты в нех.nop nop - байты в Assembler. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения