А возможно перехватывать пакеты не перхватывая функции из engine.dll, а
перехватывая например send и recv? или я тогда смогу только прослушивать а отправлять не смогу?
если красиво заморочиться, то сможешь и прослушивать, и отправлять, и блокировать прием/отправку некоторых пакетов... только придется решать проблему с шифрацией трафика, а это значительно сложнее, чем написание обычного бота
если красиво заморочиться, то сможешь и прослушивать, и отправлять, и блокировать прием/отправку некоторых пакетов... только придется решать проблему с шифрацией трафика, а это значительно сложнее, чем написание обычного бота
Ну коннект к логин серверу я взял тут готовый и сделал конект к гейм серверу. Наваял формочку с инвентарём, всё показывает, пакеты могу отправлять. Т.е. можно сказать что с шифацией разобрался. Но делать полноценного ООГ бота мне не под силу, да и не зачем - есть волкер.
Я думал о чём-то вроде небольшого плагина для клиента. Перехватывать функции из engine.dll - у меня тоже врятли получится, вот подумал на счёт Send и Recv
Если можешь расшифровать трафик, то влазишь внутрь клиента (любой удобный вид инъекции), и дальше сплайсишь send и recv, причем лучше в библиотеке ws2_32.dll.
C send'ом проще: делаешь сплайс, в своем обработчике получаешь буфер, делаешь с ним все что хочешь и передаешь управление оригинальной функции; с recv чуть сложнее: нужно подменять точку возврата, передавать управление оригинальной функции, дожидаешься окончание ее работы, проверяешь результат (если есть данные, обрабатываешь их), и возвращаешь управление в вызываемую функцию.
Вначале попробуй сделать перехват функций даже без действий, чтобы проверить контролирует ли клиент эти функции или нет, если не контролирует, то развиваешь функционал.
Есть еще прикольный вариант: пишешь свою библиотеку wsock32.dll, по набору экспортируемых функций идентичную оригинальной, которая только передает управление библиотеке из system32, ну и плюс обрабатывает трафик, кое-где такой элементарный трюк работает.
с recv чуть сложнее: нужно подменять точку возврата, передавать управление оригинальной функции, дожидаешься окончание ее работы, проверяешь результат (если есть данные, обрабатываешь их), и возвращаешь управление в вызываемую функцию.
Не бойся, это не так страшно как кажется, к тому же все это описано с учетом различных защит и их проверок, т.е. чтобы быть максимально незаметным, начинать можно с простых конструкций (как у тебя описан new_recv).
А на c# нет случайно ни у кого примера конекта к серверу, без декодирования, просто чтобы первый пакет хотябы принял. В дельфи там сокет цеплялся на хэндл формы, посылал ей сообщения и было просто, с с# как-то по другому организуется, никак не могу разобраться
Добавлено через 3 часа 19 минут
а вообще вроде получилось
Только вот врятли переведу шифрацию с дельфи с#
Последний раз редактировалось cvillian, 08.12.2015 в 17:46.
Причина: Добавлено сообщение