Как перехватить tcp upd для игр
Итак, если вы хотите заняться "читерством" в ArcheAge следующий мануал вам в этом поможет.
Для того чтобы обмануть клиент или сервер, нам как известно требуется подмена пакетов в сетевом трафике.
перехват и подмена пакетов реализуется с помощью следующего софта:
1. Proxifier
перенаправляет трафик от клиента игры через наш proxy.
2. WPF
великолепная софтина разработанная Sauron’ом (вечная память великому читеру).
это смесь прокси сервера, редактора пакетов, с поддержкой скриптового языка для автоматической обработки пакетов.
качаем и устанавливаем данный софт отсюда : http://rghost.ru/52469416
Следующим этапом нам нужно настроить Proxifier чтобы он перенаправил сетевой трафик от клиента игры на наш "универсальный" прокси:
Настройка Proxyfiler:
Свернуть ↑ 1. откроем список прокси серверов в Proxifier.
2. добавим в Proxifier сведения о нашем прокси сервере который будет находиться на 127.0.0.1:1777

3. Далее добавим правило по которому трафик от клиента АА будет идти через наш прокси, а все остальные соединения остануться неизменными.
на этом настройка Proxifier закончена.
перейдем к самому интересному:
Использование WPF:
Свернуть ↑
1. запускаем WPF
2. включаем прокси сервер на порте 1777, и открываем панель PPC 
3. запускаем игру через ГеймЦентр маил ру.
4. когда клиент соединиться с логин сервером или гейм сервером в панели PPC мы увидим нечто следующее. 
слева перехваченные пакеты , справа содержимое пакета.
для отправки "наших" пакетов перходим на закладку Link Online — > Send Raw Packet
набираем содержимое для отправки и жмем кнопку
[Серверу]
[Клиенту]
в зависимости от того куда хотим отправить пакет.
а вот что набирать это уже дело вашей фантазии, опыта и интуиции.
Перехват сетевых пакетов используя C#
SharpPcap — библиотека для .NET, которая позволяет перехватывать пакеты. По сути, это обертка над библиотекой Pcap, которая используется во многих популярных продуктах. Например, сниффер Wireshark, IDS Snort.
С SharpPCap также поставляется замечательная библиотека для парсинга пакетов — Packet.Net.
- Ethernet
- LinuxSLL
- Ip (IPv4 and IPv6)
- Tcp
- Udp
- ARP
- ICMPv4 и ICMPv6
- IGMPv2
- PPPoE
- PTP
- Link Layer Discovery Protocol (LLDP)
- Wake-On-LAN (WOL)
Работать с библиотекой достаточно просто:
// метод для получения списка устройств
CaptureDeviceList deviceList = CaptureDeviceList.Instance;
// выбираем первое устройство в спсике (для примера)
ICaptureDevice captureDevice = deviceList[0];
// регистрируем событие, которое срабатывает, когда пришел новый пакет
captureDevice.OnPacketArrival += new PacketArrivalEventHandler(Program_OnPacketArrival);
// открываем в режиме promiscuous, поддерживается также нормальный режим
captureDevice.Open(DeviceMode.Promiscuous, 1000);
// начинаем захват пакетов
captureDevice.Capture();
Теперь в обработчике события device_OnPacketArrival мы можем работать с пакетом:
static void Program_OnPacketArrival(object sender, CaptureEventArgs e)
<
// парсинг всего пакета
Packet packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
// получение только TCP пакета из всего фрейма
var tcpPacket = TcpPacket.GetEncapsulated(packet);
// получение только IP пакета из всего фрейма
var ipPacket = IpPacket.GetEncapsulated(packet);
if (tcpPacket != null && ipPacket != null)
<
DateTime time = e.Packet.Timeval.Date;
int len = e.Packet.Data.Length;
// IP адрес отправителя
var srcIp = ipPacket.SourceAddress.ToString();
// IP адрес получателя
var dstIp = ipPacket.DestinationAddress.ToString();
// порт отправителя
var srcPort = tcpPacket.SourcePort.ToString();
// порт получателя
var dstPort = tcpPacket.DestinationPort.ToString();
// данные пакета
var data = tcpPacket.PayloadPacket;
>
>
Так же библиотека позволяет создавать пакеты и отправлять, работать с дампами и многое другое. Без проблем работает на mono. Для более подробной информацией прошу на CodeProject. У SharpPcap есть конкурент Pcap.net. По описанию возможности совпадают. Хотя, судя по вопросам и ответах на различных форумах, создание пакетов в нем легче.
WinPKFilter
WinPKFilter — NDIS драйвер для перехвата пакетов. Поддерживаются различные операционные системы:x/ME/NT/2000/XP/2003/Vista/2008/Windows 7/2008R2. Плюсом драйвера является то, что он позволяет модифицировать и блокировать пакеты. Для некоммерческих проектов библиотека бесплатна.
Для удобной работы с драйвером предоставляется библиотека. На сайте можно скачать обертки для этой библиотеки для следующих языков — C#, Delphi, VB, MS VC++, C++ Builder.
Работать с WinPkFilter сложнее, чем SharpPcap, нужны хорошие знания в работе с неуправляемым кодов и маршалинге. Да и размер кода получается намного больше. На официальном сайте можно задать вопрос на который Вы без проблем получите от автора (кстати русский). Здесь выложил пример программы, которая блокирует пакеты в которых содержится слово «porn».
Crack Взлом игр используя пакеты (Перехват пакетов) | Начало
с одного забугор форума по хакингу игр. Насколько я понимаю здесь идёт описание, терминология, предложения инструментов для этого и несколько видео.
***Перевод:***
Для начала, если вы нуб: захват пакетов, их модификация и отправка — не для вас. Только адекватные геймхакеры с опытом минимум 1 год могут читать это.
(это было в начале статьи, но я не соглашусь так как в этой статье можно получить какую-то картину по даному топику)
Шаг за шагом в взломе игр с перехватом пакетов
Что для этого нужно:
1) изучить всё о пакетах (это будет в этом топике)
2) Найти пакеты которые выполняют функции в клиенте игры, реверснуть их (reverse them)
3) Перехватить пакетные функции и залогировать их
4) Произвести реверсинг структуры пакета
5) Внедрить DLL в которой внедрены наши изменения и которая может вызвать так скажем SendPacket() метод
6) Отправить пакет который мы хотим
Что такое пакет?
Ваш игровой клиент и сервер игры находятся в постоянном общении между собой. Каждая передача одной стороны другой называется пакетом. Иногда это может быть серия пакетов которая передается потоком, в других случаях это 1 пакет имеющий одну цель. В играх используются протоколы для передачи пакетов: TCP и UDP. Игра открывает порты, ОС получает пакеты и направляет их к процессу с правильным портом (процесс это наша игра). Как клиент так и сервер имеют функции отправки и принятия пакетов — это важно понимать. В основе этих функций должны быть нормальные функции Windows winsock — википедия по
- №1 это потому что мы можем ОТПРАВЛЯТЬ ПАКЕТЫ
- Работая с пакетами можна понять как работает логика игры, которая имеет больше всего дыр
- Логика типа «sanity check(проверка работоспособности)» часто применяется к действиям которые выполняет клиент, но те же проверки не выполняются для проверки пакетов.
- Ограничения со стороны клиента могут быть не реализованы на
Клиент использует зелье здоровья -> Клиент запускает функцию pickup() -> зелье здоровья увеличивает здоровье на 1
pickup() функция создаёт сообщение и отправляет его на сервер "клиент использовал порцию зелья здоровья В"
Игровой клиент заворачивает это сообщение в пакет в котором есть сообщение "клиент использовал зелье здоровья В"
Пакет также имеет дополнительную информацию типа размера данных, размер пакета, ИД пакета и т.д.
Давайте назовём эту функцию AssemblePacket()
После этого клиент вызывает функцию SendPacket() который в свою очередь вызывает функцию отправки через Winsock
Это сообщение сокрыто (инкапсулировано) в пакете TCP и отправлено серверу
Операционная система (ОС) сервера получает пакеты и направляет их в обработку, а именно
Winsock функция сервера получает пакеты
Сервер извлекает "пакет игры" из пакета TCP протокола
Сервер вызывает функцию назовём ее DissasamblePacket(), который получает данные и наше сообщение о использованном зелье здоровья
Теперь наше сообщение обрабатывает серверным обработчиком данных
И тут уже на серверной стороне вызывается функция pickup(), удаляется вещь из карты игры (или рюкзака где лежало зелье) и увеличивает здоровье на +1 на
)
Теперь сервер должен обновить информацию состояния игры (карта, рюкзак, здоровье), всё на стороне клиента
Новая информация отправляется в функцию AssemblePacket() на стороне сервера и потом отправляется через SendPacket() -> WinsockSend() клиенту
Если вы знакомы с Windows WndProc очередями сообщений, вы увидите некоторую схожесть
Ключевой момент сейчас понять процесс и то как делается соединение:
game::AsseblePacket()
Winsock Layer
Network Layer TCP/UDP
game:: DissasemblePacket()
В более серьезных играх вы можете получить несколько слоёв дополнительных типа EncryptPacket() u DecryptPacket() — шифрование и расшифрование пакетов.
Winsock и Network слои в большинстве не важны для гейм хакинга
Нам всё равно на TCP/UDP и Winsock. Единственная причина, по которой нам нужен Winsock, состоит в том, что мы используем ссылки на эти функции winsock, чтобы найти функции AssemblePacket() и DisassemblePacket().
Почему? Потому что нас волнует то что нужно игре. Мы можем хакнуть игру используя игровую логику. Данные внутри пакета — вот важная часть игры!
Что такое Sniffing пакетов (перехват)?
Перехват пакетов — это действие, которое описывается как "человек по середине" (man in the middle) который логирует пакеты по мере их отправки. Самая популярная программа — Wireshark, всё что использует тот или иной порт будет залогировано.
Сейчас это прекращено но можно использовать Microsoft Message Analyzer который позволяет фильтровать по процессу. — (не знаю, что прекращено, но Wireshark еще работает)
Перехват пакетов важная составляющая, но для взлома игры это не особо, нам нужно логи пакетов, а не их перехват.
Программы которые помогут в этом деле:
WPE Pro & WPE Sonic (Winsock Packet Editor) — старая вещь (есть модификация работает и на х64 и на Win10). WPE использовался очень давно для взлома в простых играх. Но для игр нашего времени эта прога не будет работать. Программа не рабочая, это просто для истории.
Burp Suite — можно использовать для перехвата пакетов браузерных игр.
ColaSoft Packet Player — перехватывает, модифицирует и может отправить.
Advanced Packet Editor
WireEdit — наверное самый хороший инструмент (насколько понял, он только редактирует пакеты, удобный для редактир.)
GateKeeper — Инспектор пакетов
Как найти пакетные функции?
Для логирования пакетов нужно найти пакетные функции. Функции Winsock всегда используются для отправки, получения данных на Windows, проверке импортируемых таблиц и конечно же поиска этих функций. Найдите перекрестные ссылки на эти функции. Все функции, которые вызывают пакетные функции должны быть реверснуты. Функция которая вызывается чаще всего — вероятнее всего будет главной пакетной функцией.
Вы захотите реверснуть все эти функции по вызову стека, по мере вызова функций, но главное получите общее представление что происходит, после точно определите точные пакетные функции Assemble & Disassemble. Реверсните их как можно лучше.
Логирование пакетов
Перехват пакетов на уровне сети считается низкоуровневым. Как только вы найдете функции которые собирают и отправляют, а с другой стороны получите их и перехватите тогда записывайте аргументы, которые, вероятно, будут массивом символов, представляющим буфер пакетов.
HTTP логирование пакетов и манипуляция
Если игра использует HTTP тогда пробуйте использовать Fiddler и Burpsuite они две хороши в этом деле.
***Конец перевода***
Ниже я вставлю видео как доп. информацию где происодит реверсинг и информацию по реверсингу. Примеры старые, но если вы этого не уразумеете, тогда что можно говорить дальше. (Видео на англ)
Прошу простить, если где-то ошибся, так же можете внести своё понимание, если оно будет корректнее и более понятнее.
Если вам заинтересует данный топик, можно будет продолжить перевод (я увижу это по реакциях).