inturist Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 21 минуту назад, Sanic сказал: копируешь не то, что в ebx после выполнения инструкции, а копируешь сам адрес, с которого читает эта инструкция КАК? в ebx на момент срабатывания find what acessed уже адрес лежащий по [ebx] Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 (изменено) 10 минут назад, inturist сказал: КАК? в ebx на момент срабатывания find what acessed уже адрес лежащий по [ebx] Тут работает такая формула: [указатель+смещение]=адрес, с которым работает инструкция Как правило, ты сканером находишь последнее, а указатель и смещение тебе говорит уже отладчик. Но в таких случаях "mov ebx,[ebx]" (когда с регистра читают и сразу переписывают). Отладчик тебе не покажет правильный указатель. Но зная смещение + конечный адрес можно вручную вычислить указатель по принципу "x+какое-то число=y". Чтобы самому вычислить указатель, отними смещение из инструкции от конечного адреса и ты получишь число(указатель), которое тебе дальше надо вбивать в сканер. Продемонстрирую это на примере твоего третьего скрина: Спойлер 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, изи. Изменено 15 февраля, 2019 пользователем Sanic Ссылка на комментарий Поделиться на другие сайты Поделиться
inturist Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 Только что, Sanic сказал: . Вуаля, следущее, что тебе надо было вбивать в сканер, это 1609EA60, изи. 1609EA60 это адрес который я искал перед этим ибо брекпойнт показывает значение в регистре на момент завершения операции 2 минуты назад, Sanic сказал: The following opcodes accessed 1609EA60" адрес, на который ты поставил бряк, это 1609EA60. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 Только что, inturist сказал: 1609EA60 это адрес который я искал перед этим Ты уверен? Я же по второму скрину вижу: Ты вбивал в сканер "1609С740" и тебе нашло АДРЕС "1609EA60", который имеет ЗНАЧЕНИЕ "1609С740". А теперь тебе надо искать АДРЕС, который имеет ЗНАЧЕНИЕ "1609EA60" Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 1 час назад, inturist сказал: КАК? в ebx на момент срабатывания find what acessed уже адрес лежащий по [ebx] Чтобы узнать, что было в ebx до срабатывания инструкции, т.е. какой адрес [адрес] внутри скобок. Это же просто и я в некоторых видео об этом говорил. ПКМ по инструкции с "Найти адреса, с котор..................." ПКМ в новом окне по своему адресу(если несколько найти свой) и получаешь mov ecx,[ecx] ecx =00625A54 [ecx]=[0018ac20] Ссылка на комментарий Поделиться на другие сайты Поделиться
inturist Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 9 минут назад, Garik66 сказал: "Найти адреса, с котор..................." Действительно, что может быть проще.... Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 1 минуту назад, inturist сказал: Действительно, что может быть проще.... Отобрази в HEX/ отсортируй и найди свое предшествующее значение. Т.е. в примере из твоих ранних скринов это был 1609С740 Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 (изменено) 27 минут назад, inturist сказал: Действительно, что может быть проще.... Скрыть контент Ну вообще то можно проскролить и найти нужный тебе адрес Изменено 15 февраля, 2019 пользователем Sanic Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 В 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 27 минут назад, inturist сказал: Действительно, что может быть проще.... Показать контент Когда находишь адрес, с которым работает ЭТО - "mov ebx,[ebx]", тупо копируешь адрес как здесь https://prnt.sc/mloms0 и затем вставляешь его в окошко сканера https://prnt.sc/mlon5c и врубаешь сканер. ДЕЙСТВИТЕЛЬНО, что может быть проще 0_0 Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 Предположение 1: Игра на юнити? Если да, то лучше взламывать такие иначе Предположение 2: Зачем тебе указатель если ты хочешь сделать скрипты, делай изменения в самом методе Предположение 3: Опять же, если все что выше не помогает (что очень врятли), делай скрипт который будет выносить динамичнский адрес структуры в метку се Ссылка на комментарий Поделиться на другие сайты Поделиться
inturist Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 (изменено) 1 час назад, roma91212 сказал: Игра на юнити? Если да, то лучше взламывать такие иначе Нет, как я понял самописный движок. Игру на юнити взломать было бы легче так как шарп и частенько необфусцированный код декомпилящийся обратно 1:1. 1 час назад, roma91212 сказал: Зачем тебе указатель если ты хочешь сделать скрипты, делай изменения в самом методе Как я понял эти инструкции обрабатывают не только стамину но и туеву хучу всего другого. Судя по количеству адресов к которым они обращаются. Эдакий универсальный метод getValue/setValue Плюс указатель нужен чтобы найти структуру пешки и добавить скрипты для хп, статов и прочего (хотя начинаюсь уже сомневаться что игра использует хоть какие либо структуры) Изменено 15 февраля, 2019 пользователем inturist Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 16 февраля, 2019 Поделиться Опубликовано 16 февраля, 2019 18 часов назад, inturist сказал: Плюс указатель нужен чтобы найти структуру пешки и добавить скрипты для хп, статов и прочего (хотя начинаюсь уже сомневаться что игра использует хоть какие либо структуры) Да использует она структуры, я сам скачал эту игру, может у нас все же разные версии, не знаю. Откопал вручную указатель, твой "любимый" "mov ebx,[ebx]" вообще не был помехой. Может сделаю коротенькое видео, о том, что с подобными инструкциями делать надо(Там вообще изи). Указатель указывает на очки действия выбранного тобой солдата. Не знаю, но он почему то не работает на танчике =(. P.S: Указатель сработает только после того, как изначально потратишь хотя бы чучуть очков действий. Спойлер https://prnt.sc/mlzozp (Блин, буду рад если подскажите как сразу вставить саму картинку, а не ссылку к ней) Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 16 февраля, 2019 Поделиться Опубликовано 16 февраля, 2019 Вот краткое объяснение, как надо отслеживать, когда с регистра читают и переписывают одновременно, Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
inturist Опубликовано 16 февраля, 2019 Автор Поделиться Опубликовано 16 февраля, 2019 44 минуты назад, Sanic сказал: Вот краткое объяснение, как надо отслеживать, когда с регистра читают и переписывают одновременно Ох... как же я получается тупил. Как я понял дальнейшие смещения с инструкицией где [регистр+другой_регистр*8+4] по сути и есть выбор структуры из ее списка (конкретный юнит итд итп)? Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 16 февраля, 2019 Поделиться Опубликовано 16 февраля, 2019 9 минут назад, inturist сказал: Ох... как же я получается тупил. Как я понял дальнейшие смещения с инструкицией где [регистр+другой_регистр*8+4] по сути и есть выбор структуры из ее списка (конкретный юнит итд итп)? https://prnt.sc/mlzozp Тут во всей цепочке два таких [регистр+другой_регистр*8+4] и значение "другого_регистра" есть ID... чего... то... Я особо пока не исследовал, я не знаю. Единственное, что я понял, это то, что этот указатель указывает на именно ВЫБРАННОГО тобой перса, то есть если ты кликнешь сначала на одного солдата, потом на второго, тогда указатель тоже сначала будет указывать то на одного, то на второго при условии, что ты потратишь на них хоть 1 очко движения. Но с танками какая-то муть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 16 февраля, 2019 Поделиться Опубликовано 16 февраля, 2019 Ну как, работают мои смещения? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 16 февраля, 2019 Поделиться Опубликовано 16 февраля, 2019 1 час назад, Sanic сказал: Ну как, работают мои смещения? У меня работает (тоже скачал, чтобы поискать указатели). У танка отличие не +7C, а +FC. Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 февраля, 2019 Поделиться Опубликовано 17 февраля, 2019 9 часов назад, Sanic сказал: Тут во всей цепочке два таких [регистр+другой_регистр*8+4] и значение "другого_регистра" есть ID... чего... то... Я особо пока не исследовал, я не знаю. Это более понятно. Ты лучше расскажи ТС и мне как ты получил смещение 1С. Ты пишешь, что там LEA и реальное смещение 1С. Но как и где ты его взял. Работают (очень часто) с предшествующим указателем 4 инструкции типа mov eax,[esi+14]. (и от танков и от солдат). У меня после них был затык, т.к. дальше при ручном поиске указателей - скан ничего не находит. так что @Sanic просьба - расскажи, что дальше делал. ЗЫ: мое предположение, что уровней указателей должно быть меньше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 февраля, 2019 Поделиться Опубликовано 17 февраля, 2019 13 часов назад, inturist сказал: Ох... как же я получается тупил. 12 часов назад, Sanic сказал: Ну как, работают мои смещения? Работают только, если пойти. И как я понял ты искал с помощью автоматического сканера СЕ, а не в ручную. Сканер нашел более стабильный адрес и ходить не нужно (сразу находит значение) и уровней указателей меньше на один Если наводим на солдат, то показывает ходы выделенного солдата, если на танк, то танка (как я и писал выше солдаты +7C/танк +FC) @Sanic также на скрине видно, что твой указатель не работает пока не сходили, 4 остальных работают. Самый короткий 10 уровней. Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 17 февраля, 2019 Поделиться Опубликовано 17 февраля, 2019 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 -> реальное смещение Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 17 февраля, 2019 Поделиться Опубликовано 17 февраля, 2019 (изменено) 8 часов назад, Garik66 сказал: Работают только, если пойти. И как я понял ты искал с помощью автоматического сканера СЕ, а не в ручную. Сканер нашел более стабильный адрес и ходить не нужно (сразу находит значение) и уровней указателей меньше на один Если наводим на солдат, то показывает ходы выделенного солдата, если на танк, то танка (как я и писал выше солдаты +7C/танк +FC) @Sanic также на скрине видно, что твой указатель не работает пока не сходили, 4 остальных работают. Самый короткий 10 уровней. Спойлер Только что прочекал, у меня в ноуте эти указатели тоже работают, значит они надежные. https://prnt.sc/mmbseg Да, лучше самый верхний указатель не использовать. Кстати, жизни находятся по смещению 144, а то что ниже жизней розовенькое, я не нашел. Но думаю ТС дальше сам разберется. P.S: игра обращается к жизням тоже по смещению 4, значит для игры очки действия и жизни в разных структурах 0_0 Изменено 17 февраля, 2019 пользователем Sanic Ссылка на комментарий Поделиться на другие сайты Поделиться
inturist Опубликовано 17 февраля, 2019 Автор Поделиться Опубликовано 17 февраля, 2019 (изменено) 27 минут назад, Sanic сказал: P.S: игра обращается к жизням тоже по смещению 4, значит для игры очки действия и жизни в разных структурах 0_0 Это то о чем я говорил, очень сложно понять есть ли вообще структура юнита или она конструируется динамически и как она устроена. Та же фигня и с моралью (та фиолетовая хрень). Все те же 4-0с-0 Спасибо за алгоритм поиска, буду пытаться разбираться дальше (смещения у меня другие но суть та же) Изменено 17 февраля, 2019 пользователем inturist Ссылка на комментарий Поделиться на другие сайты Поделиться
Sanic Опубликовано 17 февраля, 2019 Поделиться Опубликовано 17 февраля, 2019 1 час назад, inturist сказал: Это то о чем я говорил, очень сложно понять есть ли вообще структура юнита или она конструируется динамически и как она устроена. Та же фигня и с моралью (та фиолетовая хрень). Все те же 4-0с-0 Спасибо за алгоритм поиска, буду пытаться разбираться дальше (смещения у меня другие но суть та же) У разных параметров есть разные указатели, но я на 100% уверен, что именно эта часть модуля "ProjectX.exe+002416B4" указывает на него, можешь в сканер указателей вбивать точное местоположение этого модуля в "Base address must be in a specific range" и быстренько найдешь указатели на другие атрибуты. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 февраля, 2019 Поделиться Опубликовано 18 февраля, 2019 12 часов назад, Sanic сказал: lea esi,[eax+08] /// Непосредственно искажается указатель mov eax,[esi+14] /// Используется "фальшивый" указатель (Конечно в самой игре эти инструкции не находятся прям так рядом, как здесь) Ты ответа не дал на поставленный вопрос: В 17.02.2019 в 09:14, Garik66 сказал: Ты пишешь, что там LEA и реальное смещение 1С. Но как и где ты его взял. Как посчитать смещение мы уж разберемся И также - ранее я отправлял "В угол". Теперь есть пункт в правилах - перечитай. Так что пред. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения