Исследование игровых приложений

Тема в разделе "WASM.RESEARCH", создана пользователем CRONUZ, 21 сен 2007.

  1. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    Подскажите, как бороться с DMA, ничего полезного по этой теме не нашёл ?
    Может, кто знает где найти инфы по исследованию игр ?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    CRONUZ
    DMA - Direct Memory Access!?

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

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    crypto

    Мне узнать постоянный значение(тоесть что бы найденое значение не изменялось после перезапуска программы) !
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    CRONUZ
    Не понял, конкретнее и подробнее можно?
     
  5. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    crypto

    Допустим я нашел адрес, где изменяется значение количества жизней,
    я изменил его, просмотрел в игре - в игре значение изменилось, я рад:)
    Перезапускаю игру (на примере: NHL06) захожу в Soft Ice, переключаюсь
    на контекст и т.д. изменю значение, смотрю его в игре оно изменилось я очень рад :)
    Перезапускаю игру и изменяю значение смотрю в игре оно не изменилось.

    делаю так, ищу с помощью ArtMoney значение заново, а оно уже на другом месте
    оказалось. В статье на сайте www.x-team.ru, что ли есть статью объясняющая
    данные видоизменения, но только, как то (извините) *реново он объясняет.

    В общем адреса найденые мной после 3 перезапуска игры, находятся не там,
    следовательно мой тренер не работает.
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    CRONUZ
    Это специальные способы защиты игр. Нужно конкретное место в коде смотреть, чтобы понять, что там за зверь заложен.
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    CRONUZ
    где-то должен храниться адрес адреса,
    если он тоже изменяется, то должен быть ещё адрес...
     
  8. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    t00x

    (где-то должен храниться адрес адреса,) - но где :)
     
  9. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    навскидку:
    1) можно посканить память процесса для нахождения адреса адреса (тупо 4 байта в памяти);
    2) можно насобирать данных о том, в каком диапазоне изменяется адрес жизней и бряк на запись в соответствующий диапазон адресов.
     
  10. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    t00x
    2) можно насобирать данных о том, в каком диапазоне изменяется адрес жизней и бряк на запись


    Бряк на запись я один раз поставил - в результате софт айс заел, то есть не дал
    продолжить игру и следовательно последовало нажатие на кнопку "перезагрузка"!

    Есть догадка, что адрес изменяется по определенному смещению, допустим на
    300h байт и следовательно загрузчик вычисляет адрес с прибавлением смещения, но
    как же его найти?
    Наверняка существуют методики обнаружения и более комфортного исследования
    памяти или уже сделанного дампа игровых приложений.
     
  11. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    CRONUZ
    Я в случае Космических Рейнджеров 2 дизасмил игру и детально разбирался с ее кодом. В основном с конструкторами, деструкторами и сериализаторами - в них легче всего определить типы полей класса. Так же я находил все таблицы виртуальных методов. Классы хранят в себе ссылку на нее, поэтому по дампу можно легко определить тип объекта (и в частности получить адрес который надо искать в дампе).
     
  12. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    halyavin


    Других способов не знаете ?
     
  13. Argot

    Argot New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2007
    Сообщения:
    14
    Еще данные могут хранится в Длл, а там уже зависит от ImageBase. при новой загрузке у длл может сменится ImageBase и сообведствено поменятся адресса ресурсов
     
  14. Av0id

    Av0id New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    87
    да вагон инфы, в гугль только зайти

    ps. dma = dynamic memory allocation
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    CRONUZ
    Радной, да ты страйк попробуй на деньги поломать!?
     
  16. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Clerk

    А смысл, если void - уже написал, статью, в которой даные смещения жизней CS,

    правда, с некоторыми ограничениями...
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Да я не про жизни, а про деньги; то нечто большее чем просто счётчик.
    Или взять к примеру квак - там число жизней находится в таблице PlayerState, которая постоянно перемещается в памяти. У CRONUZ поиск перменных - а это только в каких-нибудь аркадах смысл имеет.