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

вопросы про structure spider


Alex2411

Рекомендуемые сообщения

привет

 

объясните  как искать изменнения  когда изменлись данные в структуре . я нашел базовый адрес записал в  base region нажал scan появились адреса и указатели . потом данные в структуре поменялись, золото, ресурсы . как в  structure spider узнать что изменилось ? там есть окно  compare agaist  , но не понятно  что там записать . в мануале про structure spider  ни чего не написано

 

еще не понятно что такое has shadow . ставлю галку пишет ошибка .

Ссылка на комментарий
Поделиться на другие сайты

Ну и накатал же я пост. Давно счеты со Spider-ом.  Толком им не пользовался. Я не уверен, что знаю все о Spider-е. Поскольку возник такой вопрос, то решил снова им заняться, но уже более детально. Пришлось кучу скринов наделать.

 

Со "structure spider" более менее разобраться можно на практике и 9-тым туториалом.

 

has shadow — адрес структуры—копии. Можно сделать поставив галку Lock в окне Dessect Data на адресе. Делает копию структуры (например стека или данных игрока до перезагрузки уровня)

Спойлер

image.png

 

Сравнивать можно как в Desssect Data так и в Spider-е. Смотря что и как ищешь. Определяется экспериментально.

Спойлер

image.png

*Если поставить Lock и вызывать Spider, то данные о Shadow адресе сами заполнятся. Можешь попробовать, самому их можно не заполнять.

 

Но Dissect Data — для ручного визуального сравнения.

 

Запускаем 9-тый туториал и пытаемся понять. Слева окно с Lock адресами. А в окне справа поставлены их shadow copy (их можно посмотреть как на примере, на скрине выше строка "Lock (Shadowcopy at 00350000)")

Спойлер

image.png

Там, где мелкие стрелки и если там удалять адреса, то обновляется значения shadow и не shadow (синий цвет текста и данные будут появятся в таблице результатов). Т.е. можно сравнивать как копии, так и не копии очищая и возвращая значения в полях ввода. Shadow рекомендуется для сравнения дампов стеков

Спойлер

image.png

 

Но есть более лучшее средство чем Spider. Я писал о нем у себя в блоге Scan for commonalites на окне определения проскакивающих адресов

Спойлер

image.png

Спойлер

image.png

Разница в значениях по EBX с типом float

Спойлер

image.png

Разница в группах (для потенциального фильтра) с типом 4 byte (опция Only find matching groups)

Спойлер

image.png

 

Все три инструмента: DissectData, Spider и Structure Compare могут помочь что-то сравнить и найти. Structure Compare появился в версии CE 6.8

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

спасибо мастер . многое понятно стало . слушай , а где то есть полный мануал по чит енжин , что бы  все функции были написаны ?   про  режим shadow  если бы ты не объяснил , то и узнать не где . возможности у чит енжин большие , много полезного , а как пользоваться  ими  не известно .

 

еще объясни пожалуйста . когда lock создал теневую копию , то копия сохраняеться без уровня указателей .  если нужно искать что изменилось в структуре в указателе 2 или 3 или больше уровня   как это сделать ?  еще мне очень нравиться  твой  плагин tinydumper  часто им  поьзуюсь , но  он  то же  не запоминает в  глубину указателей .

 

structure compare  удобная фича , но  мне пришлось из за багов сносить 6.8  и обратно  поставить  6.7

Ссылка на комментарий
Поделиться на другие сайты

11 часов назад, Alex2411 сказал:

спасибо мастер . многое понятно стало . слушай , а где то есть полный мануал по чит енжин , что бы  все функции были написаны ? 

Говоришь полный мануал и чтобы все функции были написаны. Тогда качай исходники Cheat Engine

 

11 часов назад, Alex2411 сказал:

еще объясни пожалуйста . когда lock создал теневую копию , то копия сохраняеться без уровня указателей .  если нужно искать что изменилось в структуре в указателе 2 или 3 или больше уровня   как это сделать ?  еще мне очень нравиться  твой  плагин tinydumper  часто им  поьзуюсь , но  он  то же  не запоминает в  глубину указателей .

Lock не сохраняет копии вложенных структур. Тут ничего не подскажу, кроме как свой плагин CE Lua писать.

11 часов назад, Alex2411 сказал:

еще мне очень нравиться  твой  плагин tinydumper  часто им  поьзуюсь , но  он  то же  не запоминает в  глубину указателей .

К сожалению, не запоминает. Не обещаю, что сделаю эту функцию В каких случаях это могло бы пригодится? Можно же сравнить не Lock структуру с не Lock структурой и никаких проблем. А вот со стеком, возможно бы пригодилось как эксперимент. Вообще лучше Dark Byte напиши предложение об этом, чтобы над lock recursive подумал стоит делать или нет для стека как минимум.

 

12 часов назад, Alex2411 сказал:

structure compare  удобная фича , но  мне пришлось из за багов сносить 6.8  и обратно  поставить  6.7

Уже есть 6.8.1 и там были фиксы

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, MasterGH сказал:

К сожалению, не запоминает. Не обещаю, что сделаю эту функцию В каких случаях это могло бы пригодится?

 

это полезно  когда в структуре много  указателей , а какой  из них нужен  не известно .
 часто получаеться  отсеванием  значение не найти  если оно  очень редко меняеться и  не известного типа .  тогда я применяю tinydumper . делаю дамп структуры потом стараюсь изменить в игре на сколько можно больше  значений кроме нужного потом снова дамп снова  меняю . так повторяю несколько  раз . потом мееняю в игре нужное значение  делаю снова дамп  потом снова меняю  что угодно  в игре потом снова дамп. потом  все дампы открываю в dessect structure , но дампы после  изменения нужного  значения ставлю в другую группу . потом сравниваю группы  что изменилось только  между ними .
этот способ  мне часто помогает находить  значения в игре  которые  изменились  толькко один раз . по другому их не найти .  но способ  не работает  если значение идет на следующим уровне после указателя . когда указателей  мало я делаю  отдельные дампы структуры начаная  от адреса указателя , но часто бывает  когда похожих указателей  очень много и каждому  дамп несколько раз создавать  очень не удобно .  многие спортивные игры , там структура  команды , а в ней много  указателей  на игроков . военные игры , главная структура армии , а в ней куча указателей на юнитов . недавно играл в транспртную стратегию , там  все мои  поезда были в указателе  второго уровня , а  морские и воздушные  транспорты то же  второго уровня , но в ветках из указателей рядом . если бы можно  было запоминать хотя бы первый уровень  указателей это очень удобно .
я пробовал  захватить данные с указателями  из окна  spider  сохранить в файле и потом сравнить файлы . получаеться , но очень долго .

 

в 6.8.1  баг про который я не давно писал  не исправили .

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Alex2411 сказал:

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

Для +1 уровня в Spider-е не должно быть очень долго для структуры размером с 0x1000. Долго начинается +3 и выше.

 

Я все-таки предлагаю помучиться со сканированием в Spider-е.

 

1. Ищем первый раз + 1lvl Pointer, пишем в файл дамп

2. Меняем значение в игре. Если оно редко меняется, то делаем так чтобы менялось чаще. Например, загрузка игры с разными сохранениями.

3. Делаем отсев "изменилось" по адресу структуры (он поменяется, его заново найти) в новый файл. На этом шаге уже будет результат отсева, а не весь дамп в отдельном файле как дамп из пункта1. Отсев дальше быстрее пойдет

Ну и так далее... :)

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, MasterGH сказал:

1. Ищем первый раз + 1lvl Pointer, пишем в файл дамп

2. Меняем значение в игре. Если оно редко меняется, то делаем так чтобы менялось чаще. Например, загрузка игры с разными сохранениями.

3. Делаем отсев "изменилось" по адресу структуры (он поменяется, его заново найти) в новый файл. На этом шаге уже будет результат отсева, а не весь дамп в отдельном файле как дамп из пункта1. Отсев дальше быстрее пойдет

 

не много не понял объясни пожалуйста .
открыл спайдер , max level ставлю 1 , потом  скан  , спайдер спраишвает сохранить файл *sptr , ок сохранил . потом  поменял какое то значение в структуре . потом  мне  не понятно . как сделать отсев  что изменилось в спайдере ? кнопка rescan не отсеивает , а снова сканирует то же самое . ок сделал рескан , потом сохранил в другой файл *sptr . если сравнить файлы *sptr первый и второй ,  то они одинаковые . в *sptr  значения не записываються , спайдер  сохраняет  только адреса  и офсеты указателей .

 

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

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, Alex2411 сказал:

спайдер  сохраняет  только адреса  и офсеты указателей

Да, нельзя, я посмотрел. Прошу прощения, что ввел в заблуждение. Сам не проверил.

Тогда остается писать Lua плагин в том же TinyDumper-е по сохранению и восстановлению многоуровневых структур. К сожалению, пока некогда им заняться и не понятно когда будет время.

Там  по циклу получается определять структуры через autoguess и делать рекурсию по X вложенности при этом сохраняя значения. Потом придумать формат сохранения бинарный, т.к. строками — будет много. Потом придумать как это обратно восстановить через alloc() -и в памяти. Поменяются поинтеры и Spider может их показывать как результат сканирования, это может мешать... Довольно это трудоемко, пока не планирую этим заниматься, но могу подсказать как это написать на Lua в TinyDmper-е, на какие функции внимание обратить и как реализовать.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, MasterGH сказал:

могу подсказать как это написать на Lua

 

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

 

слушай , еще хотел спросить . нашел твой Dissect Data Scaner 1.0.2 beta . по описанию  очень полезный плагин , но он почему то  у меня пишет  ошибку , чит енжин 6.7 вин хр . наверно потому что плагин бета .
ты  не хотел  бы  его развивать  дальше ? очень пригодился бы

Ссылка на комментарий
Поделиться на другие сайты

Dissect Data Scaner должен идти на 6.8.1. Развивать были планы. Как я понял в DBVM, в  CE 6.8.X появилась возможность ставить брейкпоинт на всю структуру сразу, а не довольствоваться аппаратными брейкпоинтами из которых плагин использует только 1-аппартный брейкпоинт на настраиваемую пользователем X—задержку, на +1 байт по всей структуре. 

 

Ссылка на комментарий
Поделиться на другие сайты

В 01.08.2018 в 12:07, MasterGH сказал:

issect Data Scaner должен идти на 6.8.1.

 

идет на  68.1 и 6.7 , но  после сканироания  не создаеться структура как  у тебя на скрине, а в окне lua engine в окошке output  появляеться большой столбик адресов . что делать с ними  дальше ? окно structure disect  остаеться пустое

Ссылка на комментарий
Поделиться на другие сайты

В 02.08.2018 в 23:05, Alex2411 сказал:

окно structure disect  остаеться пустое

 

Сканер запускаем в таком виде.

Спойлер

image.png

 

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

Потом ищем структуру

Спойлер

image.png

 

Общая картина для Tutorial-i86. Так что работает

Спойлер

image.png

 

 

В 02.08.2018 в 23:05, Alex2411 сказал:

в окне lua engine в окошке output  появляеться большой столбик адресов . что делать с ними  дальше ?

 

Это логи, когда сканер ставил брейкпоинт на адрес структуры на доступ. В конце показывается на каких смещениях сработал брейкпоинт

Спойлер

image.png

Структуру смотреть. Там параметры, которые читались. Если стоит WRITE, то записывались

Спойлер

image.png

 

 

 

  • Понравилось 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

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

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