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

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

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

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

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

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

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

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

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

Цитата:
Сообщение от ScythLab Посмотреть сообщение
т.е. чтобы быть максимально незаметным
Да незаметность мне не важна, я играю на бото-сервере
Просто я не знаю как делаются такие вещи как подмена точки возврата
cvillian вне форума   Ответить с цитированием
Старый 08.08.2015, 23:22   #70
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от cvillian Посмотреть сообщение
Да незаметность мне не важна, я играю на бото-сервере
Просто я не знаю как делаются такие вещи как подмена точки возврата
Если неважна, тогда забудь об этом
Берешь вначале вызываешь оригинальную функцию recv, если она вернула данные, то обрабатываешь их, потом возвращаешь результат вызываемой программе.
Также не забывай учитывать flags = MSG_PEEK, а то будут косяки.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Ответ

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


Опции темы
Опции просмотра

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

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


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

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

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