Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Перехват функции
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 февраля 2012 04:29
· Личное сообщение · #1

Сразу оговорюсь, что я мало что-понимаю в Реверсинге, поэтому прошу помощи и совета у Вас.

Есть одна ММОРПГ. Есть система общения игрок<->сервер.
Т.е могу подойти к NPC-объекту и начать с ним диалог.
При определенных действиях, этот диалог закрывается автоматически.

Можно ли это каким-либо образом перехватить и не давать закрывать диалог?

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




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 22 февраля 2012 09:15
· Личное сообщение · #2

Для начала
1. Сам по себе "диалог" между клиентом и сервером легко выделить снифером. Поэтому поснифать трафик, чтобы иметь представление о формате. Если общение основано на веб-протоколе, то лучше подойдёт Fiddler (http://www.fiddler2.com)
2. Потребуется иметь представление, что такое объектно-ориентированное программирование. Игры используют классы для представления каждого объекта, а также взаимодействий между ними.
3. После прогона в иде, выделении сигнатур каких-то классов будет некоторое смутное представление о некоторой модели, используемой в игре. Базовые знания ассемблера(основные команды 80386) и основные функции Win32 API необходимы! Очень вероятно, что потребуется немного изучить DirectX.
У Вас игрок-сервер, значит и socket API может очень понадобиться, функции отправки по сети в основном send(), sendto(), WSASend(), WSASendTo().

Эта подготовка упростит поиск нужного функционала. Одна из схем(предполагается, что владеете отладчиком)
1) посылка в диалоге игры определённой фразы
2) Заморозка(suspend)/останов игры
3) Поиск в памяти фразы
4) Установка аппаратных бряков на участках памяти, содержащих фразу
5) Бряк срабатывает - по стеку выходите на логику выше уровнем, нет - корректируйте метод - установка софт-бряков на функциях сокета, обработка нажатий клавиш в оконных процедурах (которые тоже ещё предстоит найти, в чём и поможет наличие подготовки)
6) Ещё один способ - выделение алгоритмов освобождения ресурсов (так как надо найти закрытие диалога) и установка бряков там. По срабатыванию выходите выше уровнем на нужную логику. Недостаток - часто при видимом "ничегонеделании" программа может выделять и освобождать ресурсы, что может помешать.

-----
IZ.RU




Ранг: 10.7 (новичок)
Активность: 0.020
Статус: Участник

Создано: 22 февраля 2012 15:40
· Личное сообщение · #3

Sice, озвучьте название игры.



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 февраля 2012 00:56
· Личное сообщение · #4

Спасибо большое за развернутый ответ. Снифать траффик не получится, все шифруется.
Игра я думаю всем известная, Lineage 2. Понимаю, что программа защиты будет препятствовать дизасму клиента, но мне хотел узнать, возможно ли это.
ООП Владею в принципе, логику понимаю. Отладчик брал в руки давным давно, был молодым.
Сейчас есть реальная цель освоить все это.

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

Спасибо вам.


 eXeL@B —› Вопросы новичков —› Перехват функции
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати