Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   C++ перехват пакетов (https://forum.zone-game.info/showthread.php?t=41105)

Zubastic 26.07.2016 00:09

Re: C++ перехват пакетов
 
Проверил, адреса совпадают.

flopix 26.07.2016 00:46

Re: C++ перехват пакетов
 
Если временно сделать так то отрабатывает без ошибок? понятно что пакеты не будут отправлены.

PHP код:

//Клиентские пакеты
int __cdecl UNetworkHandler_OutgoingPacket_hook(unsigned int Thischar *Format, ...)
{
    
//true_UNetworkHandler_OutgoingPacket(This, Format, ...);
    
return 0;



Zubastic 26.07.2016 00:50

Re: C++ перехват пакетов
 
Да, все нормально.

flopix 26.07.2016 14:01

Re: C++ перехват пакетов
 
И что такая конструкция прям так компилируется с троеточием в аргументах :eek:?
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);


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

Zubastic 26.07.2016 14:58

Re: C++ перехват пакетов
 
Это псевдофункция. С тем, что у Вас - крит.

flopix 26.07.2016 15:05

Re: C++ перехват пакетов
 
А патч чистый или может с какой то защитой?

Persy 26.07.2016 15:22

Re: C++ перехват пакетов
 
а) Патч чистый.
б) Хватит копипастить код из шарных *Гвардов.

flopix 26.07.2016 15:23

Re: C++ перехват пакетов
 
Цитата:

Сообщение от Persy (Сообщение 415711)
а) Патч чистый.
б) Хватит копипастить код из шарных *Гвардов.

Это не просто код из шары, это рабочий код. Лично проверено и используется в специальном патче для HF.

Zubastic 26.07.2016 15:34

Re: C++ перехват пакетов
 
Возможно проблема в дллке клаба, проверим ка и эту теорию...
Вообще мне код обработки пакетов не нравится, он какой-то ущербный...

Zubastic 26.07.2016 16:48

Re: C++ перехват пакетов
 
Не помогло. Используем 273 протокол, патч от рпг клаба без system.dll


Текущее время: 13:51. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot