GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Поиск базового адреса структуры машины в игре GTA LCS на эмуляторе PPSSPP

    Запланировано Прикреплена Закрыта Перенесена Взлом игр (вопросы и ответы)
    4 Сообщения 3 Posters 97 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • S
      Sergey99
      отредактировано Sergey99

      Добрый день, ломаю игру на эмуляторе PPSSPP (32-битный процесс). До этого с эмуляторными играми не работал. Со структурами я знаком, поэтому нашёл адрес здоровья машины и попытался через отладчик в CE (использую последнюю версию 7.5) найти что пишет или читает этот адрес.

      Ожидал увидеть что-то такое опкод [регистр+смещение], значение (если есть), где в регистре содержится базовый адрес структуры конкретной машины в игровом мире, а смещение - это смещение в байтах от начала структуры до адреса/поля со здоровьем в структуре. Для примера в играх GTA 3, VC, SA на PC это работает так да и в принципе во всех играх, так как такая штука как структура устроена везде одинаково.

      Однако увидел нечто такое movss [edi+0C400268], xmm2 по логике в edi должен быть базовый адрес структуры, но там адрес, который в памяти находиться сильно сильно выше относительно адреса здоровья машины и смещение как можно видеть 0x0C400268 тоже весьма огромное. Попытался через автоматический поиск указателей в CE найти хоть что-то, но там 0, однако если указать максимальное значение смещение перед началом поиска в 999999 то что-то начнёт находить, только начало указателя будет чем-то таким "PPSSPPWindows.exe"+0004D110.

      Вопрос, в чём тут хитрость и можно ли найти всё таки базовый адрес структуры?

      StoneWeaverS 1 ответ Последний ответ Ответить Цитировать 0
      • StoneWeaverS
        StoneWeaver administrators @Sergey99
        отредактировано

        @Sergey99 привет! С эмуляторами картина отличается от картины с обычными играми. Скорее всего, то, что ты видишь - это инструкция выполнения кода "транслятора" (из кода консоли в код х86). Почему такое большое смещение - скорее всего, потому, что тут работа идёт со всем регионом эмулируемой памяти, который в самом эмуляторе лежит единым блоком.

        1 ответ Последний ответ Ответить Цитировать 0
        • Partizan1078P
          Partizan1078
          отредактировано Partizan1078

          А что в EDI. Может что-то наподобие смещения.
          А пробывал ли ты артмани?
          Вроде артмани заточен под эмуляторы?
          Да и отладчик появился с 8 версии.
          Какой отладчик СЕ использывал?

          И кстати в навороченых эмулях обычно бывает встроеная чит утилита.
          Вроде как в gens для сеги
          6c42d4cb-585e-48ff-be22-be0bdba348cd-dfgdfg45646dfgds56.png

          S 1 ответ Последний ответ Ответить Цитировать 0
          • S
            Sergey99 @Partizan1078
            отредактировано Sergey99

            @Partizan1078
            В EDI был адрес памяти который каждый кадр или каждую секунду хранил разные значения, примерно от 0 до 7-ми значного. Тут я пока не понял что это такое. Ну и да если прибавить смещение, получаю адрес изначальный.
            Artmoney пробовал, но давно и только чтоб пару значений найти.
            В CE использовал его же отладчик, правой кнопкой по адресу и "what access", "what writes to this address".

            P.S. Попробовал Artmoney, адреса находит, даже показывает как бы реальные адреса (те которые в игре, например, 0997FE78 - это адрес в игре или эмулируемый, а есть 17D7FE78 - это уже адрес на ПК то есть, который эмулирует), но при попытке присоединить отладчик снова вижу movss [edi+0C400268], xmm2. Выходит надо отлаживать именно тот самый реальный игровой адрес -> попробовал, не хочет, даже в CE пытался найти именно реальный адрес, но безуспешно, значит в памяти ПК его нет, CE его не видит, а он есть.

            1 ответ Последний ответ Ответить Цитировать 0
            • Первое сообщение
              Последнее сообщение