C++ перехват пакетов - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем.

Ответ
Опции темы
Непрочитано 26.07.2016, 17:27   #21
Пользователь

По умолчанию Re: C++ перехват пакетов

Попробуйте пока что вместо вызова оригинальной функции выводить в лог ид пакета, строку Format, чтобы убедиться что вообще вызывается то что нужно с корректными данными.

Последний раз редактировалось flopix; 26.07.2016 в 20:28.
flopix вне форума Ответить с цитированием
Непрочитано 26.07.2016, 20:20   #22
Аватар для Zubastic
ZG troll squad

Автор темы (Топик Стартер) Re: C++ перехват пакетов

Вроде как идет нормально. Вообще как написать нормально вывод?) А то я в плюсах не особо.
__________________
Zubastic вне форума Ответить с цитированием
Непрочитано 26.07.2016, 20:32   #23
Пользователь

По умолчанию Re: C++ перехват пакетов

Например так:
PHP код:
MessageBoxA(0Format"SendPacket"MB_OK); 
flopix вне форума Ответить с цитированием
Непрочитано 26.07.2016, 20:50   #24
Пользователь

По умолчанию Re: C++ перехват пакетов

Цитата:
Сообщение от Zubastic Посмотреть сообщение
Собственно хочу сделать еще одну реинкарнацию пакетхака. На этот раз в виде длл, но возникла большая проблема:
 
int __cdecl UNetworkHandler_OutgoingPacket_hook(unsigned int This, char *Format, ...)
{
    true_UNetworkHandler_OutgoingPacket(This, Format, ...);
    return 0;
}
 
Code: C++
Собственно почему в одном случае все работает, а в другом ошибка?)
Это кривизна, и я честно не понимаю, как это вообще может скомпилироваться.
f1redark вне форума Ответить с цитированием
Непрочитано 26.07.2016, 21:24   #25
Аватар для Zubastic
ZG troll squad

Автор темы (Топик Стартер) Re: C++ перехват пакетов

Цитата:
Сообщение от f1redark Посмотреть сообщение
Это кривизна, и я честно не понимаю, как это вообще может скомпилироваться.
Еще раз: это псевдофункция, она и не должна компилиться. Я просто показал, что хочу пробросить пакеты. Как именно это сделать я не знаю (не прибегая к тому способу из ргварда, который описали выше).

Добавлено через 45 секунд
Цитата:
Сообщение от flopix Посмотреть сообщение
Например так:
PHP код:
MessageBoxA(0Format"SendPacket"MB_OK); 
Format выдаст CCCC ну или что-то такое. Мне же содержимое нужно, верно?
__________________

Последний раз редактировалось Zubastic; 26.07.2016 в 21:25. Причина: Добавлено сообщение
Zubastic вне форума Ответить с цитированием
Непрочитано 26.07.2016, 21:36   #26
Пользователь

По умолчанию Re: C++ перехват пакетов

Цитата:
Сообщение от Zubastic Посмотреть сообщение
Format выдаст CCCC ну или что-то такое. Мне же содержимое нужно, верно?
Этого достаточно чтобы понять что приходит то что нужно.
То есть у вас проблема только в вызове оригинала. Как будто бы его адрес сохранен неверно.
flopix вне форума Ответить с цитированием
Непрочитано 26.07.2016, 21:42   #27
Пользователь

По умолчанию Re: C++ перехват пакетов

Так в чем тогда ошибка? Я так и не увидел, как ты вызываешь оригинал.

Добавлено через 17 минут
Цитата:
Сообщение от flopix Посмотреть сообщение
И что такая конструкция прям так компилируется с троеточием в аргументах ?
PHP код:
true_UNetworkHandler_OutgoingPacket(ThisFormat, ...); 
Функция sendPacket идет с переменным числом аргументов и есть нюансы. Попробуйте пока вызвать так:
PHP код:
//Клиентские пакеты
void __cdecl UNetworkHandler_OutgoingPacket_hook(unsigned int Thischar *Format, ...)
{
    
unsigned char buf[10240];
    
int size 0len;
    
wchar_t *wstr;

    
va_list args;
    
va_start(argsFormat);

    while (*
Format != 0)
    {
        switch (*
Format)
        {
            case 
'c':
                *(
unsigned char*) (buf size) = va_arg(argsunsigned char);
                
size++;
                break;
            case 
'h':
                *(
unsigned short int*) (buf size) = va_arg(argsunsigned short int);
                
size += 2;
                break;
            case 
'd':
                *(
unsigned int*) (buf size) = va_arg(argsunsigned int);
                
size += 4;
                break;
            case 
'Q':
                *(
unsigned __int64*) (buf size) = va_arg(argsunsigned __int64);
                
size += 8;
                break;
            case 
'b':
                
len va_arg(argsunsigned int);
                
memcpy(buf sizeva_arg(argsvoid*), len);
                
size += len;
                break;            
            case 
'S':
                
wstr va_arg(argswchar_t*);
                if (
wstr == 0)
                {
                    
len 2;
                    *(
unsigned short int*) (buf size) = 0;
                }
                else
                {
                    
len wcslen(wstr) * 2;
                    
memcpy(buf sizewstrlen);
                }
                
size += len;
                break;
        }
        
Format++;    
    }

    
va_end(args);

    
true_UNetworkHandler_OutgoingPacket(This"b"size, (int)buf);

Тем более для того что вы делаете это как раз понадобится. На выходе у вас готовый буфер с пакетом.
Этот код рабочий, если с ним не работает, берешь отладчик, ставишь бряк на свою функцию, и смотришь, как вызывается true функция, какие параметры, и что со стеком, ну и где падает конкретно, потому что иначе это гадание все.

Последний раз редактировалось f1redark; 26.07.2016 в 21:59. Причина: Добавлено сообщение
f1redark вне форума Ответить с цитированием
Непрочитано 26.07.2016, 22:04   #28
Аватар для Zubastic
ZG troll squad

Автор темы (Топик Стартер) Re: C++ перехват пакетов

Цитата:
Сообщение от flopix Посмотреть сообщение
Этого достаточно чтобы понять что приходит то что нужно.
То есть у вас проблема только в вызове оригинала. Как будто бы его адрес сохранен неверно.
Там приходит все нормально...

Добавлено через 48 секунд
Цитата:
Сообщение от f1redark Посмотреть сообщение
Так в чем тогда ошибка? Я так и не увидел, как ты вызываешь оригинал.
Так и вызываю. Код и ргварда, в итоге крит с ошибкой ревив пакета.
Цитата:
Сообщение от f1redark Посмотреть сообщение
Этот код рабочий, если с ним не работает, берешь отладчик, ставишь бряк на свою функцию, и смотришь, как вызывается true функция, какие параметры, и что со стеком, ну и где падает конкретно, потому что иначе это гадание все.
Отлаживал длл, ничего интересного не получалось. Просто захожу в функцию и крит.
__________________

Последний раз редактировалось Zubastic; 26.07.2016 в 22:05. Причина: Добавлено сообщение
Zubastic вне форума Ответить с цитированием
Непрочитано 26.07.2016, 22:11   #29
Пользователь

По умолчанию Re: C++ перехват пакетов

Пробуйте с другим патчем. Возможно все таки тут не совсем он чистый и защите не нравится откуда вызывается функция true_UNetworkHandler_OutgoingPacket.
flopix вне форума Ответить с цитированием
Непрочитано 26.07.2016, 22:11   #30
Пользователь

По умолчанию Re: C++ перехват пакетов

Цитата:
Сообщение от Zubastic Посмотреть сообщение
Там приходит все нормально...

Добавлено через 48 секунд

Так и вызываю. Код и ргварда, в итоге крит с ошибкой ревив пакета.

Отлаживал длл, ничего интересного не получалось. Просто захожу в функцию и крит.
Как длл в процесс грузишь? В общем, скомпиль и кинь сюда, я гляну.
f1redark вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват и подмена пакетов Smiler ArcheAge 27 13.01.2023 04:12
Шифровка пакетов SiriusED Blade & Soul 8 23.07.2015 00:21
Подмен пакетов katanasmil Программирование / Programming 4 16.06.2014 19:24
Отправка пакетов(C#) Tezarius ArcheAge 6 13.03.2014 01:28
Перехват пакетов конкретного приложения под win32 Redvain Курилка / Yak floor 0 28.05.2009 12:46


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 14:00. Часовой пояс GMT +3.

Вверх