Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Плагин-строй
  4. CE Tiny Dumper

CE Tiny Dumper

Запланировано Прикреплена Закрыта Перенесена Плагин-строй
2 Сообщения 1 Posters 50 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано MasterGH
    #1

    7a0117d9-fc33-467d-9ef8-3ad6b1049fe0-image.png

    Функции:

    1. Копирование участка виртуальной памяти фиксированной длины

    2. Связывание адреса копированных данных с новой меткой

    3. Возможность сравнивать дампы во время игры с любого доступного адреса (в том числе стека)

    4. Возможность сравнивать сохраненные дампы структур после перезагрузки игры

    Основное назначение - снимать дампы со стека в пошаговой отладке по адресу ESP и сравнивать эти дампы в окне расструктуризации данных (Dessect Data/Structure). Таким образом можно найти сходства или различия в передаваемых аргументах функций, а также в адресах обратного вызова по инструкции ret. Сравнение аргументов может помочь определить указатели, смещения на данные. Сравнение адресов возврата может помочь определить развилки между ветками кода ботов и ветками персонажа за которого играете. Можно начать исследовать эту развилку для определения условий свой/чужой.

    Второе назначение - сравнивать дампы после перезагрузки игры. Сравнения дампов после перезагрузки, загрузки уровней игры, загрузки слотов сохранения, смены оружия, изменения в инвентаре, смены уровня героя и многие другие изменения после перезагрузки игры могут позволить найти отличия или совпадения данных структур от начала базового адреса структуры и обратить на них гораздо большее внимание среди данных в структуре

    Данные для ввода:

    Source Address - адрес с которого будет сниматься дамп

    Size dump - размер участка данных в байтах

    Register label - метка для обращения к адресу

    *Подсказки:

    1. Плагин можно найти в первом окне дизассемблера в меню Tools (Утилиты). Окна-клоны дизассемблера не имеют подключенного подменю.

    2. Зарегистрированные метки, которые вы забыли можно посмотреть и удалить через окно зарегистрированных меток "Symbol Config" (нажать на CTRL+U в окне дизассемблера)

    3. Память дампов сама не очищается. Поэтому не рекомендуется снимать очень часто огромные дампы и тем самым засорять память. Если все же память переполнена, что мало вероятно, то просто перезапустить игру.

    Что нового в версии 1.1
    Размещено 6 марта, 2015

    1. Добавлен список зарегистрированных меток
    2. Добавлено контекстное меню с опциями копирования меток в буфер обмена и удаление меток с освобождением памяти
    3. Кнопка снятия дампа больше не закрывает окно

    Что нового в версии 1.2
    Размещено 6 марта, 2015

    Добавления:

    1. При выделении записи в полях выводятся данные адреса, размер дампа и название зарегистрированной метки
    2. Добавлена опция сохранения дампов
    3. Добавлена опция загрузки дампов
    4. Добавлена опция очистить таблицу
    5. Добавлена опция перезаписи дампов
    6. После закрытия игры дампы можно сохранять
      Исправления:
    7. Исправлено подключение к русской версии
    8. Исправлены название опций
      Описание контекстного меню:
    9. Copy Name - копирует имя выделенной записи
    10. Remove selected - удаляет выделенную запись
    11. Save to file - сохранить все дампы в файл, в указанную директорию
    12. Load from file - загрузить дампы из файла
    13. Ramove all records - удаляет все дампы и зарегистрированные метки
    14. Rewrite dumps - перезаписывает дампы в новую память, регистрирует метки адресов дампов повторно
    1 ответ Последний ответ
    0
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано
    #2

    Пошаговое руководство по Tiny Dumper

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

    1. Перед запуском CE устанавливаем файлы плагина в папку autorun (frmTinyDumper.xml и TinyDumper.lua)

    2. Запускаем игру например "Painkiller - Battle out of Hell 1.64" поставленная в оконный режим через 3DAnalyze.

    Оконный режим ставить обязательно, т.к. будет пошаговая отладка. В противном случае игра зависнет, а с CE рабтать нельзя будет

    1. Запустить CE с установленным плагином и подключиться к игре

    2. Ищем адрес здоровья (или брони, или патронов), тип Double (8 байт)
      0x24571EA8 = 99.2900238037109

    3. Ставим бряк на доступ или на запись на адрес 0x24571EA8

    2bf8d038-de92-4de0-88f6-944b9093adf5-image.png

    1. Идем в игру и встаем под удар персонажем

    Появляются инструкции
    3b2e99be-4a03-455c-a575-28511d347064-image.png
    и там же нажимаем на кнопку Stop, чтобы бряки не мешались в окне бряков

    1. Берем например инструкцию

    1015C194 - 89 53 08 - mov [ebx+08],edx
    6ad80302-80f1-4905-8bac-bdbfbb930bfd-image.png
    По ней идем в дизассемблер и на инструкции жмем F5 - установка бряка на доступ

    2755fb71-f09c-4815-88c7-191fbfdf2dc7-image.png

    1. Открываем окно бряков, выделяем инструкцию и пишем условие на прерывание с остановкой процесса

    EBX==0x24571EA0 (это условие взяли, потому что ebx находится в инструкции, а значение взяли EBX из отладчика)

    2c1e1ed4-0df0-4314-981f-f8e31550959d-image.png
    43e9dfd5-1c49-4bf2-bf1a-b588c308181c-image.png

    Нажимаем Ок, идем в игру
    9. Видим, что произошла остановка игры
    148b600b-4ffe-4e2c-893a-df3330aff53f-image.png
    10. Открываем окно ТиниДампера
    6db64901-ca0e-4d32-8be9-2fcb27894556-image.png

    1. Пишем значение регистра esp и название будущей зарегенной метки
      26586a39-c6f1-40ee-a44b-bd966578e736-image.png

    2. Нажимаем "Dump and Close" и CTRL+U чтобы видеть под рукой зареганные ваши метки

    7f7a0d40-9107-4c19-b13f-2105a57422a5-image.png

    1. Открываем окно расструктуризации CTRL+D и пишем метку в свободное поле
      1104aed5-e0c1-45bd-b880-877433c6c1a1-image.png

    2. Далее следуем действия как на рисунках
      9cac0888-208c-4f0e-9ae2-b53f6c49aeb4-image.png
      7db1307b-9305-4fd6-9b34-e75c2c8cc466-image.png

    3. Наконец результат
      6d506668-7bed-4cae-9c22-47af124c0c16-image.png

    Не только сохраняются данные, которые пропадут на следующий такт процессора, но и расструктуризовали и можем сравнивать эти данные с другими дампами стека. Зачем, как и для чего это выходит за рамки этого руководства.

    1. Сейчас процесс игры остановлен на бряке кода. Чтобы продолжить игру. Удаляем бряк из окна бряков и отпускаем игру по F9.

    2. Теперь снимаем другие дампы на том же адресе для адресов здоровья врагов на предмет отличиях их или для поиска указателей... Во всяком случае сохраненный дамп может дать какие-то подсказки и зацепки. Главное не начать новый уровень игры или не загружать сохранения, т.к. обычно при переходе на новый уровень данные могут измениться... На этом пока все

    -----
    Tiny dumper 1.2 Сравнение структур после перезагрузки. Поиск фильтра свой-чужой-дружественый

    1. Запускаем игру, запускаем CE и присоединяем процесс игры к CE

    2. Сохраняем игровой слот перед тем как искать структуры

    3. Находим три структуры игроков: свой игрок, дружественный, враг

    4. Дампим три структуры из пункта 3 указывая: базовый адрес структуры, уникальную метку

    5. Игру закрываем, снова открываем, загружаем слот, присоединяем процесс игры к CE

    6. В Tiny dumper 1.2 вызываем контекстное меню правой кнопки мышки и вызываем опцию "Rewrite dumps" - дампы из кеша перезаписываются в память в процесса игры

    7. Снова находим три структуры игроков: свой игрой, дружественный, враг

    8. В окне расструктуризации создаем три группы

    Группа1 "Свой игрок":

    -адрес после перезагрузки

    -метка из тини дампера своего игрока до перезагрузки

    Группа2 "Чужой игрок":

    -адрес после перезагрузки

    -метка из тини дампера чужого игрока до перезагрузки

    Группа3 "Дружественный игрок":

    -адрес после перезагрузки

    -метка из тини дампера дружественного игрока до перезагрузки

    1. Если повезет, то находим фильтр - фиолетового цвета строка. Если филетовых строк несколько, то запоминаем их смещения и значения на всякий случай

    2. Пишем АА-скрипт со смещением фильтра. Правильно написанный АА-скрипт не будет крешить игру.

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

    Если фильтр найти не удалось, то ищем 3 многоуровневых указателя до верхего статического адреса для своего, для 2-х врагов. Открываем Structure Spider.

    Указываем в поиске уровень вложенности указателей.

    Попеременно вводим два статических адреса - начала структур своего и чужих игроков. Правило поиска выбираем исходя из типов игроков. Если это свой и чужой, то искать отличные. Если это чужой и чужой, то искать одинаковые. Перезапускам игру и опять проделываем эти действия.

    Если не нашлось ничего, то что-то делали не так или отличия между группами игроков нет. Однако графический интерфейс обычно связан только с нашим героем и не связан с другими. Поэтому по связи GUI как минимум фильтр свой-чужой можно сделать всегда. Что касается дружественных игроков, то нужно будет исследовать более углубленно.

    1 ответ Последний ответ
    0
  • MasterGHM MasterGH переместил эту тему из MasterGH в

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы