Сейчас на форуме: asfa, bartolomeo (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Перехват функции |
Посл.ответ | Сообщение |
|
Создано: 22 февраля 2012 04:29 · Личное сообщение · #1 Сразу оговорюсь, что я мало что-понимаю в Реверсинге, поэтому прошу помощи и совета у Вас. Есть одна ММОРПГ. Есть система общения игрок<->сервер. Т.е могу подойти к NPC-объекту и начать с ним диалог. При определенных действиях, этот диалог закрывается автоматически. Можно ли это каким-либо образом перехватить и не давать закрывать диалог? Может вопрос из области фантастики, но просто хотелось бы узнать, реально ли это. Все действия происходят на стороне клиента. ![]() |
|
Создано: 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 ![]() |
|
Создано: 22 февраля 2012 15:40 · Личное сообщение · #3 |
|
Создано: 23 февраля 2012 00:56 · Личное сообщение · #4 Спасибо большое за развернутый ответ. Снифать траффик не получится, все шифруется. Игра я думаю всем известная, Lineage 2. Понимаю, что программа защиты будет препятствовать дизасму клиента, но мне хотел узнать, возможно ли это. ООП Владею в принципе, логику понимаю. Отладчик брал в руки давным давно, был молодым. Сейчас есть реальная цель освоить все это. Траффик в игре, все шифруется, но опять же знаю людей, которые давно это обошли. Спасибо вам. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Перехват функции |