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

[UFO: Extraterrestrials] Поиск статического адреса


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

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

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

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

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

10 минут назад, inturist сказал:

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

Тут работает такая формула:

[указатель+смещение]=адрес, с которым работает инструкция

 

Как правило, ты сканером находишь последнее, а указатель и смещение тебе говорит уже отладчик.

Но в таких случаях "mov ebx,[ebx]" (когда с регистра читают и сразу переписывают). Отладчик тебе не покажет правильный указатель.

 

Но зная смещение + конечный адрес можно вручную вычислить указатель по принципу "x+какое-то число=y".

Чтобы самому вычислить указатель, отними смещение из инструкции от конечного адреса  и ты получишь число(указатель), которое тебе дальше надо вбивать в сканер.

 

Продемонстрирую это на примере твоего третьего скрина:

Спойлер

K2Ljven.png

 

 

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

2.Судя по "[ebx]" у этой инструкции смещение 0, раз ничего не прибавляется к регистру

3.Судя по "mov ebx,[ebx]" регистр ebx переписывается прежде, чем отладчик успевает зафиксировать нужное значение ebx.

4.Но как определить, что надо дальше вбивать в сканер???

5.Используем формулу [указатель+смещение]=адрес, на котором стоит бряк

6.Уже отладчик показал смещение, ну и конечно же нереально не знать адрес, на который ты ставишь бряк =D

7.Подставляем значения в формулу, и получаем такое:

[указатель+0]=1609EA60

8.Дальше идет школьная математика xD

9.Отнимаем смещение от конечного адреса для получения указателя

1609EA60-0=1609EA60

указатель=1609EA60

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

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

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

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

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

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

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

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

 

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

Только что, inturist сказал:

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

 

 

Ты уверен? Я же по второму скрину вижу:

Ты вбивал в сканер "1609С740" и тебе нашло АДРЕС "1609EA60", который имеет ЗНАЧЕНИЕ "1609С740". А теперь тебе надо искать АДРЕС, который имеет ЗНАЧЕНИЕ "1609EA60"

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

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

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

Чтобы узнать, что было в ebx до срабатывания инструкции, т.е. какой адрес [адрес] внутри скобок.
Это же просто и я в некоторых видео об этом говорил.
ПКМ по инструкции с "Найти адреса, с котор..................." ПКМ в новом окне по своему адресу(если несколько найти свой)
image.thumb.png.ce415b2e5ef44e817e5299d91625645c.png

и получаешь mov ecx,[ecx]

ecx =00625A54

[ecx]=[0018ac20]

 

 

 

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

1 минуту назад, inturist сказал:

Действительно, что может быть проще....

Отобрази в HEX/ отсортируй и найди свое предшествующее значение.

Т.е. в примере из твоих ранних скринов это был 1609С740

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

27 минут назад, inturist сказал:

 

Действительно, что может быть проще....

  Скрыть контент

 

SWQcef4.png

 

 

 

Ну вообще то можно проскролить и найти нужный тебе адрес

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

В 09.02.2019 в 16:53, inaginary сказал:

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


your_code:
mov [labelw],ebx
code:
mov ebx,[ebx]

 

В случае ТС нужен фильтр , т.е. так:
 

your_code:
  cmp  [ebx],adres // здесь адрес который он нашел перед этим
  jne code
  mov [labelw],ebx
  
code:
  mov ebx,[ebx]

 

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

27 минут назад, inturist сказал:

 

Действительно, что может быть проще....

  Показать контент

 

SWQcef4.png

 

 

Когда находишь адрес, с которым работает ЭТО - "mov ebx,[ebx]", тупо копируешь адрес как здесь https://prnt.sc/mloms0 и затем вставляешь его в окошко сканера https://prnt.sc/mlon5c и врубаешь сканер.

 

ДЕЙСТВИТЕЛЬНО, что может быть проще 0_0

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

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

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

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

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

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

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

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

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

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

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

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

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

18 часов назад, inturist сказал:

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

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

 

Откопал вручную указатель, твой "любимый" "mov ebx,[ebx]" вообще не был помехой. Может сделаю коротенькое видео, о том, что с подобными инструкциями делать надо(Там вообще изи).

 

Указатель указывает на очки действия выбранного тобой солдата. Не знаю, но он почему то не работает на танчике =(. 

P.S: Указатель сработает только после того, как изначально потратишь хотя бы чучуть очков действий.

Спойлер

https://prnt.sc/mlzozp           (Блин, буду рад если подскажите как сразу вставить саму картинку, а не ссылку к ней)

 

 

 

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

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

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

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

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

9 минут назад, inturist сказал:

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

https://prnt.sc/mlzozp    Тут во всей цепочке два таких [регистр+другой_регистр*8+4] и значение "другого_регистра" есть ID... чего... то... Я особо пока не исследовал, я не знаю.

 

Единственное, что я понял, это то, что этот указатель указывает на именно ВЫБРАННОГО тобой перса, то есть если ты кликнешь сначала на одного солдата, потом на второго, тогда указатель тоже сначала будет указывать то на одного, то на второго при условии, что ты потратишь на них хоть 1 очко движения. Но с танками какая-то муть.

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

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

Ну как, работают мои смещения?

У меня работает (тоже скачал, чтобы поискать указатели).

У танка отличие не +7C, а +FC.

Спойлер

image.thumb.png.98e7a39a90cb9f7bccac3dd859e69f94.png


 

 

 

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

9 часов назад, Sanic сказал:

Тут во всей цепочке два таких [регистр+другой_регистр*8+4] и значение "другого_регистра" есть ID... чего... то... Я особо пока не исследовал, я не знаю.

Это более понятно.

Ты лучше расскажи ТС и мне как ты получил смещение 1С.

Ты пишешь, что там LEA и реальное смещение 1С.

Но как и где ты его взял.

Работают (очень часто) с предшествующим указателем 4 инструкции типа mov eax,[esi+14]. (и от танков и от солдат).
У меня после них был затык, т.к. дальше при ручном поиске указателей - скан ничего не находит.
так что @Sanic просьба - расскажи, что дальше делал.

 

ЗЫ: мое предположение, что уровней указателей должно быть меньше.

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

13 часов назад, inturist сказал:

Ох... как же я получается тупил.

 

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

Ну как, работают мои смещения?

Работают только, если пойти. И как я понял ты искал с помощью автоматического сканера СЕ, а не в ручную.

Сканер нашел более стабильный адрес и ходить не нужно (сразу находит значение) и уровней указателей меньше на один 

Если наводим на солдат, то показывает ходы выделенного солдата, если на танк, то танка (как я и писал выше солдаты +7C/танк +FC)

@Sanic также на скрине видно, что твой указатель не работает пока не сходили, 4 остальных работают. Самый короткий 10 уровней.
image.thumb.png.6bb199078fe58f5cb68c57f43c92892a.png 

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

8 часов назад, Garik66 сказал:

 

Работают только, если пойти. И как я понял ты искал с помощью автоматического сканера СЕ, а не в ручную.

Сканер нашел более стабильный адрес и ходить не нужно (сразу находит значение) и уровней указателей меньше на один 

Если наводим на солдат, то показывает ходы выделенного солдата, если на танк, то танка (как я и писал выше солдаты +7C/танк +FC)

@Sanic также на скрине видно, что твой указатель не работает пока не сходили, 4 остальных работают. Самый короткий 10 уровней.
 

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

 

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

 

Ты лучше расскажи ТС и мне как ты получил смещение 1С.

Ты пишешь, что там LEA и реальное смещение 1С.

Но как и где ты его взял.

Работают (очень часто) с предшествующим указателем 4 инструкции типа mov eax,[esi+14]. (и от танков и от солдат).
У меня после них был затык, т.к. дальше при ручном поиске указателей - скан ничего не находит.

 

Все довольно просто, тот указатель, что находится в esi, является по сути искаженным, не настоящим.

 

Настоящий указатель был искажен таким образом 

Спойлер

lea esi,[eax+08]  /// Непосредственно искажается указатель

mov eax,[esi+14] /// Используется "фальшивый" указатель

 

(Конечно в самой игре эти инструкции не находятся прям так рядом, как здесь)

 

Чтобы узнать реальное смещение, надо к смещению 14 из инструкции "mov" добавить смещение 8 из инструкции "lea"

И 14+8=1C -> реальное смещение

 

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

8 часов назад, Garik66 сказал:

 

Работают только, если пойти. И как я понял ты искал с помощью автоматического сканера СЕ, а не в ручную.

Сканер нашел более стабильный адрес и ходить не нужно (сразу находит значение) и уровней указателей меньше на один 

Если наводим на солдат, то показывает ходы выделенного солдата, если на танк, то танка (как я и писал выше солдаты +7C/танк +FC)

@Sanic также на скрине видно, что твой указатель не работает пока не сходили, 4 остальных работают. Самый короткий 10 уровней.
 

Спойлер

image.thumb.png.6bb199078fe58f5cb68c57f43c92892a.png

 

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

https://prnt.sc/mmbseg

Да, лучше самый верхний указатель не использовать.

 

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

 

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

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

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

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

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

 

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

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

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

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

 

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

У разных параметров есть разные указатели, но я на 100% уверен, что именно эта часть модуля "ProjectX.exe+002416B4" указывает на него, можешь в сканер указателей вбивать точное местоположение этого модуля в "Base address must be in a specific range" и быстренько найдешь указатели на другие атрибуты.

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

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

lea esi,[eax+08]  /// Непосредственно искажается указатель

mov eax,[esi+14] /// Используется "фальшивый" указатель

 

(Конечно в самой игре эти инструкции не находятся прям так рядом, как здесь)

Ты ответа не дал на поставленный вопрос:

 

В 17.02.2019 в 09:14, Garik66 сказал:

Ты пишешь, что там LEA и реальное смещение 1С.

Но как и где ты его взял.

Как посчитать смещение мы уж разберемся :D

И также - ранее я отправлял  "В угол"

Теперь есть пункт в правилах - перечитай. Так что пред.

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

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

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

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