Показать сообщение отдельно
Старый 02.09.2011, 22:04   #1
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию [C++]Помогите хукнуть пакеты методами клиента

Всем привет!
Оч надеюсь на Вашу помощь)
В общем задача такова: Заменить клиентские ::SendPacket и ::RecvPacket
с SendPacket я разобрался..
Код:
	asm
	{
		mov ecx, [pUNetworkHandler]
		mov eax, [ecx+048h]
		mov ecx, [eax]
		mov eax, [ecx+06Ch] //GF
		//mov eax, [ecx+068h] //IT
		mov pSendPacket, eax
	}
	//SplaisingVMT((void *)pSendPacket,(void *)pSendPacket,SendPacketH);
	//CreatNewConnect();
Код:
void __cdecl SendPacketH(void * Object, char * format, ...)
{
	va_list arglist; // Переменные
	va_start(arglist,format);
	
	char			c_Packet[8120];
	C_PacketConstructor	Packet;
	
	Packet.SetPointer(&c_Packet[0]);
	
	for (int len=0; *format; format++)
	{
		switch (*format)
		{
		case 'c': Packet.WriteC(va_arg(arglist,unsigned char));	len++;	break;
		case 'h': Packet.WriteH(va_arg(arglist,short));len++;			break;
		case 'd': Packet.WriteI(va_arg(arglist,int));len++;				break;
		case 'f': Packet.WriteF(va_arg(arglist,float));	len++;			break;
		case 'Q': Packet.WriteD(va_arg(arglist,__int64));	len++;		break;
		case 's': Packet.Writes(va_arg(arglist,char *));len++;		break;
		case 'S': Packet.WriteS(va_arg(arglist,wchar_t *));len++;	break;
		case 'b': 
		case 'x': 
			{
			
				int cb=va_arg(arglist,int);
				const char* p=va_arg(arglist,const char*);
				Packet.WriteB(p,cb);
			} break;	
		}
	}

	//EncryptPacket(c_Packet);
	send(NewSocket, c_Packet, Packet.GetSize(), 0);
	return;
};

А вот с RecvPacket чуть не понятно...
Подскажите плиз где его искать то?)
__________________
Все относительно...
ALF вне форума   Ответить с цитированием