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

    Изменение инструкций ассемблера

    Запланировано Прикреплена Закрыта Перенесена Базовая информация
    assemblerотладкаинструкции
    1 Сообщения 1 Posters 291 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • PromisingP
      Promising
      отредактировано Promising

      В этой статье описывается процесс изменения инструкций автоассемблера на другие


      В статье использованы инструкции найденные в предыдущей статье:

      407abc0f-7b3a-492b-b6aa-0c8440fad377-изображение.png

      Загрузите сохранённую таблицу Cheat Engine и подключите его к игре. Если инструкции в вашей игре статичные и не изменились, то вам не нужно искать их снова. Откройте code list и проверьте инструкции, заменив их нопами и восстановив.
      Для того что бы изменять инструкции, нужно открыть их в окне отладчика, сделать это можно через контекстное меню, или дважды кликнув по ним:

      4b0282f6-574f-43a6-b00c-6fe4860c9da1-изображение.png

      После этого появится окно отладчика с подробностями:

      eda1c388-c11c-444a-9c47-9145d74e3000-изображение.png

      Вы можете заметить что сверху и слева в этой игре Cheat Engine распознал адрес функции и смещение до текущей инструкции от начала функции. Если вы хотите сохранить этот адрес для дальнейшего использования, нажмите на нужную инструкцию второй кнопкой мыши для вызова контекстного меню и выберите там:

      9ef25661-9a63-48fc-88be-44984144c53c-изображение.png

      После этого в буфере обмена окажется Terraria.Player::Hurt+1201, вы можете записать это в удобное место и в дальнейшем перейти на этот адрес в окне отладчика нажав Ctrl+G, или через контекстное меню.

      Для изменения инструкции дважды кликните на неё, откроется окно редактирования:

      fdb72a7d-4f40-4a0e-9003-b9a107a73814-изображение.png

      Если вы читали статью о командах ассемблера, то скорее всего понимаете что делает эта инструкция, она вычитает из значения здоровья персонажа число находящееся в регистре eax, то есть в eax находится урон нанесённый персонажу.
      Если вы измените sub на add, тогда персонаж будет лечиться вместо получения урона, для наглядности попробуйте изменить её на mov, тогда персонаж будет получать здоровье равное значению полученного урона:

      949fb5f8-fb01-44f4-8b37-d5e9ee2b8f30-изображение.png

      Перейдите в игру и посмотрите на результат:

      c54c0bcf-500b-48ad-a2f1-0ff1cc5e73c1-изображение.png

      Получив 1 урона, персонаж получил 1 здоровье:

      b4781112-c588-4434-b263-4def47e68a4c-изображение.png

      Восстановите оригинальную инструкцию заменив mov на sub.
      Таким образом вы можете изменять одну линию в коде, если создаваемый вами код больше чем оригинальная инструкция, он займёт место следующей и Cheat Engine спросит, заменить ли оставшуюся часть от инструкции nop, если вы не замените, то скорее всего получите ошибку игры, из за неправильных инструкций. Если ваш код меньше - тогда выбирайте замену нопами, если вы восстанавливаете оригинальную инструкцию из меньшей и дальше уже есть нопы, отказывайтесь от замены нопами, что бы код восстановился полностью.

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