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

inturist

Стажёры
  • Постов

    18
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные inturist

  1. 27 минут назад, Sanic сказал:

    P.S: игра обращается к жизням тоже по смещению 4, значит для игры очки действия и жизни в разных структурах 0_0

    Это то о чем я говорил, очень сложно понять есть ли вообще структура юнита или она конструируется динамически и как она устроена. Та же фигня и с моралью (та фиолетовая хрень). Все те же 4-0с-0

     

    Спасибо за алгоритм поиска, буду пытаться разбираться дальше (смещения у меня другие но суть та же)

  2. 44 минуты назад, Sanic сказал:

    Вот краткое объяснение, как надо отслеживать, когда с регистра читают и переписывают одновременно

    Ох... как же я получается тупил. Как я понял дальнейшие смещения с инструкицией где [регистр+другой_регистр*8+4] по сути и есть выбор структуры из ее списка (конкретный юнит итд итп)? 

  3. 1 час назад, roma91212 сказал:

    Игра на юнити? Если да, то лучше взламывать такие иначе 

    Нет,  как я понял самописный движок. Игру на юнити взломать было бы легче так как шарп и частенько необфусцированный код декомпилящийся обратно 1:1.

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

    Зачем тебе указатель если ты хочешь сделать скрипты, делай изменения в самом методе

    Как я понял эти инструкции обрабатывают не только стамину но и туеву хучу всего другого. Судя по количеству адресов к которым они обращаются. Эдакий универсальный метод getValue/setValue

    Плюс указатель нужен чтобы найти структуру пешки и добавить скрипты для хп, статов и прочего (хотя начинаюсь уже сомневаться что игра использует хоть какие либо структуры)

  4. Только что, Sanic сказал:

    . Вуаля, следущее, что тебе надо было вбивать в сканер, это 1609EA60, изи.

    1609EA60 это адрес который я искал перед этим

    ибо брекпойнт показывает значение в регистре на момент завершения операции

    2 минуты назад, Sanic сказал:

    The following opcodes accessed 1609EA60" адрес, на который ты поставил бряк, это 1609EA60.

     

  5. 21 минуту назад, Sanic сказал:

    копируешь не то, что в ebx после выполнения инструкции, а копируешь сам адрес, с которого читает эта инструкция

    КАК? в ebx на момент срабатывания find what acessed уже адрес лежащий по [ebx]

  6. В 12.02.2019 в 22:49, Sanic сказал:

    Зачем все усложнять, если у тебя есть АДРЕС(например 1609EA60), с которым работает что-то типа "mov ebx,[ebx]"

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

  7. 19 часов назад, Garik66 сказал:

    Видео скоро будет здесь.

    Спасибо за видео, в принципе примерно так и пробовал искать. Проблема возникает в том что трассировка отображает дерево сразу и в списке брекпойнтов не появляется. А если ставить процесс на паузу, ставить трассировку и условие на брекпойнт то наоборот дерево пустое что не делай после снятия с паузы. И через какое то время игра вылетает. Условие EDI==0x160ac290 (если брать как на первом скрине.)

  8. 17 минут назад, Garik66 сказал:

    Попробуй посмотреть вот этот урок от @Xipho

    Видел уже этот урок поэтому представляю где найти трассировку. НО как трассировать с условием тут ни слова

    Если трассировать инструкцию mov ebx,[ebx] то там просто рандомные адреса.

    Если трассировать инструкцию fld dword ptr [edi+04] то указатель на адрес третьего скрина не найти -- она вообще походу в другой функции. Это если без условий. А с условиями -- то ли не работают то ли работают контринтуитивно

  9. 10 минут назад, Garik66 сказал:

    Ну тогда по работай с ней не в своей игре , а например в Туториале СЕ и посмотри, что и как. 

    По break and trace методики использования в инете на русском понятном языке не обнаружил. Как мне поможет туториал если неясно как даже на примере туториала искать?)

    По поиску снизу вверх напротив примеров хватает.

  10. Только что, Garik66 сказал:

    Ты ни разу не делал трассировку?

    если бы делал не задавал бы вопросы о том как оно работает. Максимум искал указатели снизу вверх через Find what access to adresss

  11. 1 минуту назад, Garik66 сказал:

    1 скриншота (3 инструкция

    ebx ebx на третьем скрине, как мне поможет трассировка первого значения? Регистр к этому моменту будет три тыщи раз уже перезаписан.

    И да. Как вообще трассировка с остановкой по условию работает? Указал [ebx]==0x1CDF1940 останавливает когда адрес лежащий в ebx равен чему угодно кроме....

     

  12. 39 минут назад, Garik66 сказал:

    Попробуй сделать трассировку (лучше именно условную - т.е. именно по адресу стамины) на третьей инструкции первого скриншота.

    Может быть третьего скриншота таки?)

    Попробую но игра крешится теперь и при попытке брекпойнта на доступ к этой записи....

  13. 5 минут назад, inaginary сказал:

    Ты слишком банально себе это всё представляешь

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

     

    Смог поставить брекпойнт. Адреса в ebx меняются при каждом следующем выполнении. Возможно какая нибудь функция отрисовки/получения любого значения.

    Но тогда значит что получить указатель на структуру игрока и соответственно стамины/хп и прочих атрибутов не получится (возможно ввиду полного отсутствия таких структур :) ).

  14. 1 час назад, inaginary сказал:

    который будет в метку записывать адрес игрока,

    Я уже писал. Эта инструкция вызывается игрой кучу раз в секунду. При этом новых инструкций при выстреле/ходьбе не появляется. Не факт что она вообще берет только адрес игрока.

     

    Собственно вот в скринах: 

     

    Смотрим доступ к очкам действия. Первая инструкция наращивает счетчик вне зависимости от того трачу в игре стамину или нет. Ее игнорим, тратим стамину и выбираем одну из появившихся.

    Спойлер

    Ps67dYg.png

     

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

    Спойлер

    4w3Y4r0.png

     

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

    Спойлер

    K2Ljven.png

     

    Большие изображения и код прячем под спойлер

  15. 14 минут назад, inaginary сказал:

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

     

    Пробовал. Все равно какой тип отладчика. Хоть VEH хоть Window хоть Kernel. Если ставишь на этих инструкциях брекпойнт -- все падает.

     

    Попробовал искать через другие значения (хп, патроны для оружия) -- таже петрушка. Сначала смещение 4, потом 0с а потом все сводится к тому самому ebx, [ebx], к которому игра обращается три тыщи раз за секунду. Что слегка подозрительно.

  16. 36 минут назад, inaginary сказал:

    Потому перейди в отладчик - поставь бряк на этот адрес, и как только бряк поймает поток посмотри вправо - там появятся все регистры. Скопируй оттуда ebx, в нём должен быть правильный адрес. Это смещение +0. После можешь убрать бряк и запустить выполнение. 

    В этом то и проблема : игра крайне не любит брекпойнты на исполнение. Зависает и CE и сама игра намертво.

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

  17. Собственно такая проблема. Хочу сделать табличку Cheat Engine для этой игры.

     

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

    Ищу очки действия, брекпойнт на доступ, нахожу адрес и смещение (esi+04/edi+04 в зависимости от функции).

    Ищу указатель на edi. Нахожу указатель. Ставлю брекпойнт на доступ и нахожу адрес и смещение (ebx+0c).

    Ищу указатель на ebx. Нахожу пару адресов.

    И тут вот возникает проблема. По брекпойнту на доступ только одна функция с постоянно нарастающим счетчиком вызовов. вида mov ebx,[ebx]. От моих действий не меняется абсолютно ничего, никаких новых инструкций.

     

    Как искать дальше?

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

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

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