Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 31.07.2015, 13:00   #1
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
А возможно перехватывать пакеты не перхватывая функции из engine.dll, а
перехватывая например send и recv? или я тогда смогу только прослушивать а отправлять не смогу?
если красиво заморочиться, то сможешь и прослушивать, и отправлять, и блокировать прием/отправку некоторых пакетов... только придется решать проблему с шифрацией трафика, а это значительно сложнее, чем написание обычного бота
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 31.07.2015, 19:06   #2
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
если красиво заморочиться, то сможешь и прослушивать, и отправлять, и блокировать прием/отправку некоторых пакетов... только придется решать проблему с шифрацией трафика, а это значительно сложнее, чем написание обычного бота
Ну коннект к логин серверу я взял тут готовый и сделал конект к гейм серверу. Наваял формочку с инвентарём, всё показывает, пакеты могу отправлять. Т.е. можно сказать что с шифацией разобрался. Но делать полноценного ООГ бота мне не под силу, да и не зачем - есть волкер.
Я думал о чём-то вроде небольшого плагина для клиента. Перехватывать функции из engine.dll - у меня тоже врятли получится, вот подумал на счёт Send и Recv
cvillian вне форума   Ответить с цитированием
Старый 02.08.2015, 22:09   #3
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Есть совет куда копать?
cvillian вне форума   Ответить с цитированием
Старый 03.08.2015, 00:10   #4
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
Есть совет куда копать?
Если можешь расшифровать трафик, то влазишь внутрь клиента (любой удобный вид инъекции), и дальше сплайсишь send и recv, причем лучше в библиотеке ws2_32.dll.
C send'ом проще: делаешь сплайс, в своем обработчике получаешь буфер, делаешь с ним все что хочешь и передаешь управление оригинальной функции; с recv чуть сложнее: нужно подменять точку возврата, передавать управление оригинальной функции, дожидаешься окончание ее работы, проверяешь результат (если есть данные, обрабатываешь их), и возвращаешь управление в вызываемую функцию.
Вначале попробуй сделать перехват функций даже без действий, чтобы проверить контролирует ли клиент эти функции или нет, если не контролирует, то развиваешь функционал.
Есть еще прикольный вариант: пишешь свою библиотеку wsock32.dll, по набору экспортируемых функций идентичную оригинальной, которая только передает управление библиотеке из system32, ну и плюс обрабатывает трафик, кое-где такой элементарный трюк работает.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 06.08.2015, 01:52   #5
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
с recv чуть сложнее: нужно подменять точку возврата, передавать управление оригинальной функции, дожидаешься окончание ее работы, проверяешь результат (если есть данные, обрабатываешь их), и возвращаешь управление в вызываемую функцию.
С этим я походу уже не справлюсь.
cvillian вне форума   Ответить с цитированием
Старый 06.08.2015, 17:37   #6
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
С этим я походу уже не справлюсь.
Не бойся, это не так страшно как кажется, к тому же все это описано с учетом различных защит и их проверок, т.е. чтобы быть максимально незаметным, начинать можно с простых конструкций (как у тебя описан new_recv).
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 08.08.2015, 17:35   #7
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
т.е. чтобы быть максимально незаметным
Да незаметность мне не важна, я играю на бото-сервере
Просто я не знаю как делаются такие вещи как подмена точки возврата
cvillian вне форума   Ответить с цитированием
Старый 03.08.2015, 15:02   #8
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Функции перехватил:
Код:
function new_recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
  sz: Word;
  id: byte;
begin
  Form1.ListBox1.Items.Add('recv');
  result:= old_recv(s, buf, len, flags);
end;
но непонятно как из Buf выковыривать информацию
cvillian вне форума   Ответить с цитированием
Старый 03.08.2015, 15:44   #9
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
Функции перехватил:
Код:
function new_recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
  sz: Word;
  id: byte;
begin
  Form1.ListBox1.Items.Add('recv');
  result:= old_recv(s, buf, len, flags);
end;
но непонятно как из Buf выковыривать информацию
Объяви его как PAnsiChar (либо ссылка на статический массив байт), возможно тот же эффект даст обычное преобразование PAnsiChar(Buff).
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 08.12.2015, 16:56   #10
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

А на c# нет случайно ни у кого примера конекта к серверу, без декодирования, просто чтобы первый пакет хотябы принял. В дельфи там сокет цеплялся на хэндл формы, посылал ей сообщения и было просто, с с# как-то по другому организуется, никак не могу разобраться

Добавлено через 3 часа 19 минут
а вообще вроде получилось
Только вот врятли переведу шифрацию с дельфи с#

Последний раз редактировалось cvillian, 08.12.2015 в 17:46. Причина: Добавлено сообщение
cvillian вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 05:54.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!