Wpe pro для android

Разбираемся с поддержкой x64 в WPE Pro

Думаю, что большинство из местных обитателей знакомы с понятием сниффера. Несмотря на то, что конечная цель у них одна и та же (перехват пакетов, соответствующих определённым критериям), достигают они её совершенно разным образом. Какой-то софт слушает указанный сетевой интерфейс (например, Wireshark, где это реализовано при помощи библиотеки Pcap), а какой-то — перехватывает вызовы ответственных за взаимодействие с сетью WinAPI-функций. И у того, и у другого метода есть свои плюсы и минусы, однако если по задаче необходим перехват пакетов от конкретного заранее известного приложения, то второй вариант, как правило, банально удобнее. В этом случае нет нужды узнавать IP-адреса и порты, которые использует данная программа (особенно учитывая тот факт, что их может быть довольно много), и можно просто сказать «я хочу перехватывать все пакеты вот этого приложения». Удобно, не правда ли?

Пожалуй, самым популярным на сегодняшний день сниффером, работающим по принципу перехвата вызовов определённых WinAPI-функций, является WPE Pro. Возможно, многие из вас слышали о нём на различных форумах, посвящённых онлайн-играм, ведь именно для получения преимуществ в различных играх этот сниффер в большинстве случаев и используется. Свою задачу он выполняет прекрасно, однако у него есть один неприятный недостаток — он не умеет работать с 64-битными приложениями. Так уж вышло, что по одной из возникших задач мне как раз понадобилось перехватывать пакеты от 64-битного приложения, и я посмотрел в сторону Wireshark. К сожалению, использовать его в данной ситуации было не очень удобно — исследуемое приложение отправляло данные на разные IP-адреса, каждый раз открывая новый порт. Погуглив немного, я обнаружил, что готовых аналогов WPE Pro с поддержкой x64 нет (если они всё же есть, буду признателен за ссылки в комментариях — обратите внимание, что речь идёт о Windows). Автор WPE Pro не оставил никаких контактных данных на официальном сайте и в самом сниффере, так что я принял решение разобраться в этом вопросе самостоятельно.

Как протекал процесс и что из этого вышло, читайте под катом.

Итак, что необходимо сделать в первую очередь? Верно, скачать сам WPE Pro. Сделать это можно на официальном сайте сниффера, где предлагаются для загрузки сразу две версии — 0.9a и 1.3. Мы будем рассматривать версию 0.9a, потому что именно она работает на последних версиях Windows.

Скачали? Теперь давайте проверим, не накрыт ли он каким-нибудь паковщиком или протектором:

Похоже, на этот раз снимать нам ничего не придётся. Тогда берём в руки OllyDbg и загружаем «WpePro.net.exe». Давайте для примера запустим 64-битную версию Dependency Walker’а и узнаем, почему WPE Pro не может отобразить его в списке доступных для перехвата процессов.

Получить список текущих процессов в WinAPI можно двумя основными путями:

  • При помощи связки функций CreateToolhelp32Snapshot, Process32First и Process32Next (пример можно найти, например, тут)
  • При помощи функции EnumProcesses (пример можно найти, например, тут)

При желании можете почитать о разнице между данными способами, например, тут.

Смотрим на intermodular calls модуля «WpePro.net.exe» и видим, что ни CreateToolhelp32Snapshot, ни EnumProcesses тут нет. Возможно, приложение получает их адрес в run-time при помощи WinAPI-функции GetProcAddress, так что давайте посмотрим на referenced text strings. На этот раз всё с точностью наоборот — нашлась как строка «CreateToolhelp32Snapshot», так и «EnumProcesses». Ставим бряки на места, где происходит обращение к данным строкам, нажимаем на кнопку «Target program» в WPE Pro и смотрим на место, на котором мы остановились:

Читайте также:  Файловый менеджер для андроид что это такое

Если понажимать F9, то мы увидим, что этот же бряк срабатывает ещё несколько раз, прежде чем наконец появится окно со списком текущих процессов. Давайте посмотрим, почему в нём не оказалось Dependency Walker’а. Закрываем окно, снова нажимаем на кнопку «Target program» и выполняем пошаговую отладку, начиная с того же самого бряка. Вскоре после вызовов GetProcAddress мы попадаем в цикл, в котором последовательно вызываются следующие функции — OpenProcess, EnumProcessModules, скрывающаяся за инструкцией CALL DWORD PTR DS:[EDI+10], GetModuleFileNameEx (инструкция CALL DWORD PTR DS:[ECX+14]) и CloseHandle:

Давайте поставим бряк по адресу 0x0042A910, где происходит занесение на стек последнего аргумента функции OpenProcess — PID, и попробуем дождаться момента, когда регистр EAX примет значение, равное идентификатору процесса Dependency Walker’а. На моей машине в этот момент он был равен 6600, т.е. 0x19C8.

Если пробежаться по коду, то мы увидим, что в случае Dependency Walker’а инструкция TEST EAX,EAX, находящаяся по адресу 0x0042A942 и следующая за вызовом WinAPI-функции EnumProcessModules, заставляет следующий за ней оператор условного перехода прыгнуть по адресу 0x0042A9E7, где находится вызов CloseHandle, что, разумеется, не является нормальным ходом работы приложения, ведь мы ещё даже не дошли до вызова функции GetModuleFileNameEx:

Обратите внимание на код ошибки — 0x12B (ERROR_PARTIAL_COPY). Давайте посмотрим, почему такое может происходить. Открываем документацию к функции EnumProcessModules и видим следующее:

If this function is called from a 32-bit application running on WOW64, it can only enumerate the modules of a 32-bit process. If the process is a 64-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299)

Да, это как раз наш случай.

Несмотря на то, что в документации к функции GetModuleFileNameEx не сказано ничего похожего, ведёт она себя аналогичным образом, что описано, например, тут. Одним из вариантов решения этой проблемы является использование функции QueryFullProcessImageName, которая будет отрабатывать нормально даже в случае вызова из 32-битного приложения, запущенного в WOW64, в случае применения её к 64-битному процессу.

Теперь мы можем занопить вызов функции EnumProcessModules

и написать code cave для замены GetModuleFileNameEx функцией QueryFullProcessImageName:

Теперь WPE Pro отображает множество новых процессов, в том числе и наш Dependency Walker:

Однако при попытке приаттачиться к данному процессу WPE Pro выдаёт неприятное для нас сообщение:

Тут мы уже, к сожалению, ничего не можем поделать. DLL-инъекция осуществляется путём внедрения своей DLL в адресное пространство target-процесса, а на MSDN сказано следующее:

On 64-bit Windows, a 64-bit process cannot load a 32-bit dynamic-link library (DLL). Additionally, a 32-bit process cannot load a 64-bit DLL

Несложно догадаться, что WPE Pro поставляется только с 32-битной библиотекой.

Что же делать? Писать свой перехватчик WinSock? А почему бы и нет?

Но как мы это будем осуществлять? Первое, что приходит на ум — это воспользоваться Detours, однако на официальном сайте сразу же сообщается, что поддержка 64-битных приложений есть только в Professional Edition:

Detours Express is limited to 32-bit processes on x86 processors

Тогда давайте попробуем EasyHook. Среди всего прочего, эта библиотека как раз позволяет работать с 64-битными приложениями:

You will be able to write injection libraries and host processes compiled for AnyCPU, which will allow you to inject your code into 32- and 64-Bit processes from 64- and 32-Bit processes by using the very same assembly in all cases

С небольшими изменениями примера, продемонстрированного в официальном туториале, получаем код, перехватывающий вызовы функций recv и send из WinSock и выводящий перехваченные сообщения побайтово в шестнадцатеричном виде:

Читайте также:  Фермата авто андроид авто

Код программы, совершающей DLL-инъекцию

Код самой DLL, которая будет инжектиться в целевой процесс

Конечно, тут ещё есть, над чем поработать:

  • Во-первых, отсутствует перехват WSARecv, WSASend и некоторых других функций, которые могут использоваться в целевых приложениях
  • Во-вторых, отсутствие GUI и «строкового» представления перехваченных сообщений
  • etc

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

Послесловие

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

Спасибо за внимание, и снова надеюсь, что статья оказалась кому-нибудь полезной.

Источник

Wpe pro для android

1) Запускаем сам Wpe Pro.
Скачиваем PermEdit
2) Запускаем PermEdit выбираем в нём процесс WpePro и жмём на кнопку Grand
Permission. Что это даёт: Wpe Pro получает нужные для контроля над скрытыми процессами (необязательно использовать Perm Edit, можно запустить, например, через Tsearsh Loader, либо любую другую софтину, которая делает то же самое)
3) Выбрать в Wpe Pro процесс WoW.exe
3. термины
Теперь кратко о понятиях, с которыми вы встретитесь ниже:
Пакет – собственно передаваемый за один раз между сервером и клиентом, скажем так, кусочек информации. Всё, о чём пойдёт речь, делается благодаря подмене отправляемых пакетов (только отправляемых пакетов, которые обозначены как [Send], пакеты с обозначением [Recv] – принимаемые клиентом, нас не интересуют в принципе, ибо их замена либо приведёт к ошибке в клиенте, либо, в лучшем случае, вы увидете изменения в клиенте, причём чисто визуальные, на сервере же всё останется по-прежнему, и после логаута всё вернётся на свои места)
Байт/Столбец – этими словами называют порядковое расположение значений в пакете, (понадобится вам при создании фильтров)
Фильтр – при перехвате пакетов, так сказать, встаёт между клиентом и сервером и, когда клиент отправляет пакет, заменяет посылаемые значения на те, которые указали вы.
ID – номер определённого предмета/скилла/нпс/и т.д.
HexID- тот же ID, только в шестнадцатиричной системе исчисления.

1. Отключаем антивирус (или делаем так, чтобы он не трогал ваш WPE)

2. Запускаем WPE
3. Запускаем Permedit
4. В PermEdit ищем процесс WPE PRO.exe, выделяем его и нажимаем кнопку «Grant Permissions».
5. Не закрывая PermEdit переключаемся на WPE PRO.
6. В меню View везде ставим галочки (это для того, чтобы у нас с вами был один и тот же внешний вид WPE)
7. Ищем кнопку «Target program» — жмем
8. Выбираем в списке WoW.exe и нажимаем Open
9. Ищем в окне с WPE список фильтров:
Filter 1
Filter 2
.
Filter 40
10. Двойной клик на Filter 1
11. Открылось окно Filter Edit. Вверху таблица, которая нам собственно и нужна.
Подробнее о таблице:
Она представляет собой систематизированное отображение перехватываемого пакета. Для WoW 7-й и 8-й столбцы отвечают за магию, а 15-й и 16-й — за вещи.
Ниже опишу как заполнять таблицу.
12. После редактирования таблицы нажимаем «Apply»
13. Ставим галочку напротив только что отредактированого фильтра
14. Нажимаем кнопку «ON» на панели инструментов.
15. Заходим в игру и при покупке у торговца указаной в таблице вещи, будем получать любую другую, также нами указанную.
Как редактировать фильтры:
—Пример для вещей:
1. Берем номер вещи из файла items.scp (найти можно с папке scripts в папке с сервером wowemu)
2. Открываем обычный калькулятор и переводим число в 16-тиричную систему
Пример:
число 1234 из файла items.scp
калькулятор В 16-тиричной выдаст: 4 D2
Нужно обязательно 4 цифры, поэтому перед 4 в числе дописываем 0. Имеем:
04D2.
3. Переворачиваем число — например 04 D2 перейдет в D2 04.
4. Вводим полученые пары чисел в столбцы 15 и 16 в строке MODIFY.
5.Ищем в файле items.scp любую вещь, которую продают торговцы.
Например Refreshing Spring Water — ее номер 159.
Переводим в 16-тиричную — 9F. Добавляем спереди 2 нуля и переворачиваем: 9F 00.
6. Вводим в 15-ый и 16-ый столбцы в строке SEARCH это число.

Читайте также:  Downloadfile bin что это андроид

Перед вами сам WPE PRO.

Теперь включите RfOnline.

Послле того как включили, жмем в треугольник Target programm и выбираем процесс рфонлайн.

Начинаем отлавливать пакеты.

Я нажал на черный треугольник ( на скрине обведен) затем переключился в окно РФ и бафнул на себя ярость, затем остановил отлавливание пакетов, нажатием красного квадрата.

Итак, что мы видим? куча пакетов, содержащих парные числа\буквы. Это 16-ричная система.

Обычно, если все делать быстро, то много пакетов не словишь. Для ловли пакетов постарйтесь выбрать место, чтоб рядом было как можно меньше народу. Нам нужны пакеты,, которые идут от клиента к серверу они помечены словом Send, остальные же пакеты, помеченные Recv — пакеты от серва клиенту.

Итак, я бафнулся, поймал пакет. Его надо сохранить. Можете конечно записать на бумаге, но все же лучше тыкнуть по пакету \пкм (правой кнопой мыши) и выбрать Add to send list.

На скрине видно, что пакет поместился в закладку Send. Двойной клик мыши по нему приведет нас к окошку с самим пакетом. Для удобства перименуйте его. затем выделите слева направо и пкм=> Copy

Теперь я заново ловлю пакет баффа точность, делайте все так же.

Потом я перехожу в закладку Send 2-й клик по пакету баффа ярость, копирую, перехожу в закладку filter, кликаю 2 раза по filter1 и в строчку Search в первый слот (001 по оффсету) вставляю скопированный пакет, затем кликаем по apply. Делаю то же самое с пакетом на точность, только его вставляю в строку Modify тоже в 1 слот, затем тык apply.

Теперь ставим галку на filter 1 и жмем в кнопку On

Теперь смотрим результат: в окне рф жмем на бафф ярость — бафается точность.

затем еще раз тыкайте в кнопу On на впе — все на своем месте.

А вот как просто отсылать пакеты без фильтра. Проблема заключается в том, что при попытке кинуть часть пакетов
без фильтра — дисконнектит с серва, так что будьте аккуратнее

Удачных исследований в пакетном деле!

гайд на примере игры РФ онлайн

и помните, что это чит баг-хак,а следовательно может повлечь за собой бан

Источник

Оцените статью