Перейти к содержанию

Лидеры

Популярный контент

Показан контент с высокой репутацией 26.03.2018 во всех областях

  1. Немного комментариев к этой версии. 1. Исправлены смещения 2. Добавлены также инструкции на запись На скриноте ниже пример сравнения текущей структуры с координатами в СТАЛКЕРЕ Зов Припяти с копией структуры.
    1 балл
  2. В принципе понятно куда копать. Надо алгоритм сканера переделать на такой, чтобы встав в любое место структуры, т.е. на любой байт, правильно получить смещение в структуре. Для этого надо просчитать то, что в квадратных скобках опкхода. Если это не возможно, потому что регистр перезаписываются, значит ставим не аппаратный бряк на инструкцию и он работает постоянно в холостую записывая нужные регистры перед тем как сработает аппаратный бряк на адресе структуры. Когда случилось, то снимем все бряки, определяем правильно смещение. Ну, а там дальше смотреть...
    1 балл
  3. Тестирую я радостный на 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 балл
  4. Пример, который показывает как снять стек вызовов функций function A0() -- Здесь можно удалить ":gsub('\n','\r\n')", но тогда в консоли текст будет в одну строку print(debug.traceback():gsub('\n','\r\n')) end function A1() A0() end function A2() A1() end function A3() for i=1,3 do A2() end end A3() Можно поставить пошаговую отладку в консоли Lua (как на скриншоте) и пройти по шагам
    1 балл
×
×
  • Создать...

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

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