![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Сделал перехват WinSock API функции recv, но вот теперь встал вопрос каким образом лучше пытаться анализироавть приходящие пакеты(ведь в приходящем буфере сплошной массив байтов. Возможно, что первый байт(слово, двойное слово) это идентификатор сообщения, а вот остальное...)? Есть ли какие нибудь идеи на этот счет? Сразу говорю, что это не троянописательство. Пытаюсь помочь одному человеку, администрирующему один из игровых серверов "Пурги", но для защиты от читеров необходимо вести некоторые уточняющие логи(возможно с автобаном), чего в самом сервере не предусмотрено. Заранее спасибо.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
<Spawn>, а зачем было перехватывать функцию, если можно перехватывать пакеты? А анализировать их на предмет чего надо?
з.ы. а так и должно быть, что это непрерывный массив байт. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: нет Всего: 48 |
<Spawn> похоже тебе придется разбираться с сетевым протоколом этой игры...
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Baa Перехватывать нужно различные незаконные действия пользователя, будь то дюп предметов, или Плайер Киллерство, на не разоешенных для этого картах.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: нет Всего: 48 |
ага, все таки придется разбираться
![]() -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Игра на УО похожа
![]() Тут придется делать так: ловишь пакеты, сам делаешь незаконное действие и пытаешься анализировать пакет. Смори данные , которые не изменяются (скорее всего карта, правда могут быть и координаты, тогда это хуже, но тоже решимо. А киллерство думаю, что отследить можно, ведь при ударе посылается пакет с ударом, смори обычные пакеты, потом бей и смори изменения, главное совершать поменьше телодвижений, дабы данных меньше менялось... а если у игрушки шифрование пакетов.... то плакала твоя затея ![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Нее, не УО - сервак Аллодов 2))) Если бы это УО было бы, то было б легче. До меня уже поработали - все пакеты известны. Тем более в УО (при использовании POL-а) проще все подобное делать УО-шными скриптами.
Это сообщение отредактировал(а) <Spawn> - 31.8.2003, 17:16 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Могу предложить дизассемблировать сервак (или оттрейсить) и посмореть, как он сам пакеты разбирает.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: нет Всего: 329 |
Я нашел такую статейку:
--------Использование Debug API: пример перехвата вызовов функций Win32 API С ЧЕГО ВСЕ НАЧИНАЛОСЬ: С начала. Мне нужно было написать перехватчик вызовов WinSock. Дабы любая программа могла работать через SOCKS5-проксик. Я посчитал, что перехват вызовов DLL'ки проще, чем судорожные попытки написать драйвер (да и сейчас так считаю). Енота, правда, ехидно улыбалась и говорила "ну-ну", но я-таки справился. SOCKS сниффер еще пишу, но в принципах перехвата уже разобрался :-) [Енота: разобраться-то он действительно разобрался, а соксифиера нет до сих пор...] КАК ВСЕ БУДЕТ: Я предпочитаю не писать сухие статьи с кучей теории. Поскольку я люблю читать работающий исходный код, то и здесь будет только исходный код. Все пояснения я буду вставлять прямо в исходник - в виде комментариев. Впрочем, не надейтесь, что вам будет достаточно выдрать отсюда исходник, и он скомпилится. :-) Это не потому, что я специально что-то скрыл, а потому, что я вырезал кучу вспомогательных процедур, которые каждый может написать сам. Если вы, все же, паталогически ленивы - скачайте архив с полными рабочими исходниками. Оттуда точно заработает. ИСХОДНИКИ: Наконец-то... начнем.
Все. Не так страшен черт, как его малюют [Енота: или: не так страшен Гейтс... :-)]. Остались мелочи. Если вы запускаете процесс сами, не забудьте указать в CreateProcess флажок DEBUG_ONLY_THIS_PROCESS, чтобы отладчик мог работать, и чтобы процессы, которые может запустить отлаживаемая программа не отлаживались нами (а зачем нам дочерние процессы? если хотим перехватывать вызовы и в них, проще будет ловить непосредственно CreateProcess, и для каждого "новорожденного" запускать свою копию отладчика. Тем более, что если мы присоединяемся к уже запущенному процессу, то система по умолчанию ставит флажок DEBUG_ONLY_THIS_PROCESS. Так что перехватывать CreateProcess надежнее). Если же вы хотите присоединиться к уже запущенному процессу, то узнайте его Id (с помощью TaskManager в NT или программно), и смело пишите DebugActiveProcess(ProcessId). В дальнейшем никаких различий между работой с процессом, запущенным нами и процессом, к которому мы присоединились "на лету" уже нет. И еще: учтите, что если наш отладчик завершится, то система автоматически прибьет и процесс, который мы имели счастье отлаживать. Способа "отсоединиться" от процесса нет: взялся за гуж, не говори, что не дюж. :-) Также замечу, что полезно обрабатывать возможные ошибки при вызове системных функций. Здесь я их - в основном - смело игнорирую, но вам бы лучше так не поступать. Полные рабочие исходники можно взять с нашего сайта: http://www.piranha-home.org./Если кто-то поможет в деле перевода статьи на английский - буду очень благодарен. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
dsergey, не надо уже перехватывать... надо пакет разобрать...
Please, next time read more carefully. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Можно попробовать, хотя в асме я не очень еще. Ну да ладно, где там мой IDA ![]() -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
<Spawn>, привет
![]() Так ты поборол проблему перехвата в XP? Что было-то? Насчет формата пакетов - в инете нет описалова? -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
man2002ua Привет)))) А было то, что при подцеплении ДЛЛ я использовал hInstance(который описан в SysInit), а нужно было его внутри приложения определить - GetModuleHandle(nil). И еще немножко модернизировать класс пришлось. Так как он был расчитан на перехват АПИ в чужих приложениях, то пришлось добавть сниятие защиты - VirtualProtect. Описание вряд ли можно достать. Нивал даже исходники за $ не хочет продавать(так мне этот админ говорил). Ну думаю попытаться можно) Уже видно, то что первый байт это идентификатор пакета, потому что все пакеты начинаются так(по байтам):
19 - к примеру 0 0 0 0 0 1 ... Это сообщение отредактировал(а) <Spawn> - 3.9.2003, 10:20 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
огромный труд... CRC, TimeStamp, PrevPacketId ;) Различные контрольные проверки валидности пакета... удачи. Наверно у тебя вагоны времени.
-------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |