Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    15 608

[Cheat Engine] Dissect Data Scaner 1.0.1 beta


MasterGH

1 638 просмотров

Немного комментариев к этой версии.

 

1. Исправлены смещения

2. Добавлены также инструкции на запись

 

На скриноте ниже пример сравнения текущей структуры с координатами в СТАЛКЕРЕ Зов Припяти с копией структуры.

 

Спойлер

Screenshot_4.png

 

Зашел в игру, пострелял побегал. На структуре тут же увидел красные смещения.

Заметно больше информации теперь. Можно наблюдать как близко параметры на чтение и запись находятся друг от друга и возможно они связаны одной логикой.

 

Отдельное внимание стоит обратить на красные инструкции без префикса WRITE. Сканер не успел увидеть инструкции записи за 10мс на оффсете и посчитал, что не нужно добавлять WRITE префикс. Если повысить чувствительность, то скорее всего успеет добавить префикс.

  • Понравилось 2

4 Комментария


Рекомендуемые комментарии

Тестирую я радостный на gta3 плагин. Нашел кучу интересных адресов настроек. И силу прыжка, и скоростей Velocity, и id земли на которой стоим и id глобального события (если его переключить, то ты либо в полете, либо арестован либо еще что-то). И тут я увидел что капитально на многих адресах поехали смещения в структуре. В пределах 1-4 байт.

 

И как я понял дело в скорости срабатывания адресов и таймера ожидания перехода аппаратного бряка на следующий байт в структуре до её размера.

 

Представим себе 4-х байтовое значение

 

Начало структуры:

  +00: xx xx xx xx

  +04: xx xx xx xx

 

1. На первом байте не успели сработать инструкции.

2. На втором байте не успели сработать инструкции.

3. На третьем байте наконец сработали и увидели опкод.Опкод распарсили. Получили размер в 4 байта

4. На третьем байте  на два байта смещение +00 убежало вперед в смещение +02.

 

Примерно такая картина

 

Начало структуры:

  +02: [xx xx] xx xx

  .... и там много что поехало, а некоторые смещения не поехали

 

Окей. Я могу быстро вычислить адрес в скобках [eax+смещение] и даже всякие repe повторы обработать, но как только вот такая штука попадается mov eax, [eax+смещение] или вот такая mov eax, [eax*4+смещение], то eax уже успеет  перезаписаться,  ведь на данных стоит аппаратный бряк, а он работает после выполнения инструкции.

 

1) На смещении нужно постоять и подождать других инструкций и если N времени таких нет, то надо мне подумать, как быть дальше.

2) В принципе я могу и не ждать снять аппартный бряк с адреса в структуре и поставить не аппаратный бряк уже на инструкцию и получить eax до инструкции., а не после как при аппаратном.

 

И тут еще один нюанс, на [eax+смещение], не тот адрес, а какой-то соседний или вообще дальний. Похоже надо оставлять оба бряка и аппаратный на смещении структуры и не аппаратный на инструкции. Сохранять данные не аппаратного постоянно, как только сработает аппаратный посмотреть последний данные не аппаратного и с ними работать.

 

В общем буду думать как это все упростить и чтобы стабильно работало.

 

Еще есть такая штука  jumps и calls на адрес инструкции, там тоже может быть ситуация...

  • Плюс 1
Ссылка на комментарий
3 минуты назад, MasterGH сказал:

В общем буду думать как это все упростить и чтобы стабильно работало.

Ждемс. :) Желаю чтобы думание - в нужном направлении сразу пошло (Удачи короче!!! - вторая помошница во взломе, после опыта).

 

Ссылка на комментарий

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

  • Плюс 2
Ссылка на комментарий

Скорее всего, обновление будет на этой неделе.

1) Опкоды с перезаписываемыми регистрами типа mov eax.[eax] будут пока просто пропускаться (в следующих версиях плагина не будут) и соответственно будут пропускаться смещения, на которых опкоды только с перезаписываемыми регистрами;

2) Будет такая штука, как выбор лучшего опкода из всех, что проскочили на точке останова. Например, float приоритетный тип вместо dword, т.е. когда есть опкоды двух типов вернет flost, т.е. vtSingle. Также и из-за пункта1 здесь же исключаются опкоды с перезаписываемыми регистрами типа mov eax.[eax] ;

3) ну и наконец, самое и самое важное это получить правильное определение смещения в структуре. Из-за этого бетта версия не может вылезти в релиз.

  • Плюс 2
Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.