Подскажите, как бороться с DMA, ничего полезного по этой теме не нашёл ? Может, кто знает где найти инфы по исследованию игр ?
CRONUZ DMA - Direct Memory Access!? А что тебе конкретно нужно узнать об игре? Если вытащить читы - это одно, если сделать неубиенным персонаж - это другое, если расковырять ресурсы с целью локализации - это третье. А если просто понять, как игрушка работает от начала и до конца - это совсем особый случай.
crypto Мне узнать постоянный значение(тоесть что бы найденое значение не изменялось после перезапуска программы) !
crypto Допустим я нашел адрес, где изменяется значение количества жизней, я изменил его, просмотрел в игре - в игре значение изменилось, я рад Перезапускаю игру (на примере: NHL06) захожу в Soft Ice, переключаюсь на контекст и т.д. изменю значение, смотрю его в игре оно изменилось я очень рад Перезапускаю игру и изменяю значение смотрю в игре оно не изменилось. делаю так, ищу с помощью ArtMoney значение заново, а оно уже на другом месте оказалось. В статье на сайте www.x-team.ru, что ли есть статью объясняющая данные видоизменения, но только, как то (извините) *реново он объясняет. В общем адреса найденые мной после 3 перезапуска игры, находятся не там, следовательно мой тренер не работает.
CRONUZ Это специальные способы защиты игр. Нужно конкретное место в коде смотреть, чтобы понять, что там за зверь заложен.
навскидку: 1) можно посканить память процесса для нахождения адреса адреса (тупо 4 байта в памяти); 2) можно насобирать данных о том, в каком диапазоне изменяется адрес жизней и бряк на запись в соответствующий диапазон адресов.
t00x 2) можно насобирать данных о том, в каком диапазоне изменяется адрес жизней и бряк на запись Бряк на запись я один раз поставил - в результате софт айс заел, то есть не дал продолжить игру и следовательно последовало нажатие на кнопку "перезагрузка"! Есть догадка, что адрес изменяется по определенному смещению, допустим на 300h байт и следовательно загрузчик вычисляет адрес с прибавлением смещения, но как же его найти? Наверняка существуют методики обнаружения и более комфортного исследования памяти или уже сделанного дампа игровых приложений.
CRONUZ Я в случае Космических Рейнджеров 2 дизасмил игру и детально разбирался с ее кодом. В основном с конструкторами, деструкторами и сериализаторами - в них легче всего определить типы полей класса. Так же я находил все таблицы виртуальных методов. Классы хранят в себе ссылку на нее, поэтому по дампу можно легко определить тип объекта (и в частности получить адрес который надо искать в дампе).
Еще данные могут хранится в Длл, а там уже зависит от ImageBase. при новой загрузке у длл может сменится ImageBase и сообведствено поменятся адресса ресурсов
Clerk А смысл, если void - уже написал, статью, в которой даные смещения жизней CS, правда, с некоторыми ограничениями...
Да я не про жизни, а про деньги; то нечто большее чем просто счётчик. Или взять к примеру квак - там число жизней находится в таблице PlayerState, которая постоянно перемещается в памяти. У CRONUZ поиск перменных - а это только в каких-нибудь аркадах смысл имеет.