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

[Guild Wars(Первая часть)]Поиск Hex кода с помощью CE


Rybik

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

Всем привет. Я скачал утилиту, которая отслеживает какие пакеты отправляет MMORPG. Название игры Guild Wars(Первая часть).

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

Собственно вот что она мне выдает. Соответственно вопрос, как этот HeX код найти в CE?

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

  В 03.03.2018 в 20:23, Rybik сказал:

Соответственно вопрос, как этот HeX код найти в CE?

Показать  

Никак, это значения из перезаписываемого буфера для конкретного дескриптора идентифицирующего сокета который работает с send/sendto.

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

  В 03.03.2018 в 20:55, kiwipapayamongoose сказал:

Никак, это значения из перезаписываемого буфера который работает с send/sendto.

Показать  

Я хочу отследить таймер, который появляется во время запуска пвп сражения. Для этого у меня есть 60 секунд, чтобы отследить всю цепочку оффсетов. После того как таймер исчезает, все адреса меняются приходится начинать сначала. Для чего тогда писалась эта утилита? Во всем хекс коде значения не меняются, кроме последний 4х: "B8 0B 00 00" - это значение меняется в зависимости от того, какое время приходит от сервера.

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

  В 03.03.2018 в 21:02, Rybik сказал:

Я хочу отследить таймер

Показать  

 

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

 

  В 03.03.2018 в 21:02, Rybik сказал:

Для чего тогда писалась эта утилита?

Показать  

 

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

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

  В 03.03.2018 в 21:11, kiwipapayamongoose сказал:

 

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

 

 

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

Показать  

0x100 Integer => 3000. Означает что от сервера пришла команда, бой начнется через 3 секунды. Соответственно я ищу значение 3000  в CE. Нахожу адрес, и смотрю что к нему обращается. Куда дальше посоветуете следовать?

Cos4dab.png

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

Как вариант - попытаться обмануть игру встроенным в СЕ спидхаком, чтобы времени побольше было. Еще вариант - найти что-то "рядом" с этим таймером - например, какую-то надпись. Типа, когда появляется на экране такая-то надпись, то этот таймер стартует. Дальше - в дизассемблер и изучать код. СЕ тут не спасет вот так запросто, я думаю.

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

В общем то у меня уже есть готовый offset, который был найден не мной, тот человек не хочет объяснять как он был найден, поэтому я пишу вам.  Offset =  [0, 0x18, 0x44, 0x9C, 0].

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

Оффсет возвращает значение от 0 до 30000 после нажатия на кнопку "Вступить в бой", затем приходит пакет от сервера, пакет присылает оставшееся время до начала миссии. Все работает. Теперь остается выяснить каким образом был найден данный оффсет.
1. Нажимаю кнопку вступить в бой.
2. Вижу на таймере 28 секунд, значит в строке поиска Cheat Engine ввожу значение 28000. Появилось несколько адресов.

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

3. Снова нажимаю на кнопку "Вступить в бой" на этот раз пришло время до начала мисси было 15 секунд, соответственно равно 15000. Видим что по адресу 11E6F010 значение изменилось на 15000. Это то что нужно, перепроверил несколько раз, значение меняется относительно таймера.

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

4. Двойным нажатием ЛКМ добавляю адрес 11E6F010 в нижнее окно.

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

5. ПКМ по 11E6F010 ---> Find out what writes to this address. Затем опять нажимаю на кнопку "вступить в бой" и в окне The Following opcodes write to 11E6F010 появляется инструкция. ПКМ по инструкции ---> More info. Открывается новое окно Extra Info. Cheat Engine говорит что возможно значение можно найти по адресу 11E6F010.

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

6. Далее пытаюсь найти значение по адресу, но без результатно. Как можно найти куда передвигается mov [esi], dl?

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

7. Если разобраться, то значение таймера приходит на 11E6F010, а готовый offset получает значение от 1A16E7E8 (последнее смещение). То есть последнее смещение выглядит следующим образом 1A16E7E8+0 = 1A16E7E8. Предпоследнее смещение выглядит так: [1A16E74C+9С] = 1A16E7E8(См. 1 картинка).

Как происходит перемещение от 1A16E7E8 до 11E6F010?

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

  В 04.03.2018 в 10:05, kiwipapayamongoose сказал:

[1A16E7E8+0] указатель на 11E6F010

Показать  

Offset =  [0, 0x18, 0x44, 0x9C, 0] - этот уже найдено. Давайте представим, что оффес не найден и найдем его заново. То есть вы написали, что указатель на [1A16E7E8+0] , но  это взято из уже найденного оффсета (См. первую картинку).

Исходя из второй картинки и далее, как найти смещение? Меня интересует 6 пункт.

  В 04.03.2018 в 08:50, Rybik сказал:

6. Далее пытаюсь найти значение по адресу, но без результатно. Как можно найти куда передвигается mov [esi], dl?

Показать  

 

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

  В 04.03.2018 в 10:17, Rybik сказал:

Как можно найти куда передвигается mov [esi], dl?

Показать  

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

Если у тебя есть инструкция работающая с таймером и ты хочешь найти смещения, то воспользуйся ручным поиском указателя, это быстрее, чем автоматический. И желательно воспользоваться инструкцией которая работает только с таймером, иначе можно найти не то что нужно.

 

 

Либо же останавливать процесс во время автоматического поиска указателей.

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

В общем вариантов куча.

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

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

 

  В 04.03.2018 в 10:49, kiwipapayamongoose сказал:

Либо же останавливать процесс во время автоматического поиска указателей.

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

В общем вариантов куча.

Показать  

Следую инструкции как показано на видео, я нахожу 3-4 смещения. Потом получается так что брекпоинты в ollydbg перестают срабатывать.

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

  В 05.03.2018 в 15:58, Rybik сказал:

Потом получается так что брекпоинты в ollydbg перестают срабатывать.

Показать  

Значит все нашел) а вообще лучше использовать x64dbg, вместо ольки

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

  В 05.03.2018 в 15:59, kiwipapayamongoose сказал:

Значит все нашел) а вообще лучше использовать x64dbg, вместо ольки

Показать  

Как нашел если самый первый адрес не статический? :D

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

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

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

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