Программинг Форум для тем связанных с программированием
02.09.2011, 22:04
#1
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
[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 чуть не понятно...
Подскажите плиз где его искать то?)
__________________
Все относительно...
02.09.2011, 23:17
#2
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
поищи где клиент вызывает рекв, там собсна только 1-2 места таких, потом найди смещение и прибавляй его вместо 6С
мб тебе вообще адднетворк нужен? или шифрацию запилить решил?)
__________________
Н а ч а л о .
02.09.2011, 23:20
#3
Местный
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
альф - да, он защиту делает.
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Последний раз редактировалось Breadfan, 02.09.2011 в 23:23 .
02.09.2011, 23:29
#4
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
В общем вот что обнаружил )))
Код:
007964B0 . 56 PUSH ESI
007964B1 . 8B7424 08 MOV ESI,DWORD PTR SS:[ESP+8]
007964B5 . 53 PUSH EBX
007964B6 . 55 PUSH EBP
007964B7 . C705 F4FCAB00 >MOV DWORD PTR DS:[ABFCF4],1
007964C1 . 57 PUSH EDI
007964C2 > 8B86 58090100 MOV EAX,DWORD PTR DS:[ESI+10958]
007964C8 . 6A 64 PUSH 64
007964CA . 50 PUSH EAX
007964CB . E8 5EA5A703 CALL 04210A2E
007964D0 . 90 NOP
007964D1 . 3D 02010000 CMP EAX,102
007964D6 . 75 2D JNZ SHORT Engine.00796505
007964D8 . 833D F4FCAB00 >CMP DWORD PTR DS:[ABFCF4],0
007964DF .^75 E1 JNZ SHORT Engine.007964C2
007964E1 . 8B86 58090100 MOV EAX,DWORD PTR DS:[ESI+10958]
007964E7 . 85C0 TEST EAX,EAX
007964E9 . 5F POP EDI
007964EA . 5D POP EBP
007964EB . 5B POP EBX
007964EC . 74 11 JE SHORT Engine.007964FF
007964EE . 50 PUSH EAX
007964EF . E8 0C9BA803 CALL 04220000
007964F4 . 90 NOP
007964F5 . C786 58090100 >MOV DWORD PTR DS:[ESI+10958],0
007964FF > 5E POP ESI
00796500 .^E9 5A8DDCFF JMP Engine.0055F25F
00796505 > 8B8E 1C120100 MOV ECX,DWORD PTR DS:[ESI+1121C]
0079650B . 8B15 2CF7C200 MOV EDX,DWORD PTR DS:[C2F72C]
00796511 . 33ED XOR EBP,EBP
00796513 . 896C24 14 MOV DWORD PTR SS:[ESP+14],EBP
00796517 . 8D0C8A LEA ECX,DWORD PTR DS:[EDX+ECX*4]
0079651A . 0F31 RDTSC
0079651C . 2901 SUB DWORD PTR DS:[ECX],EAX
0079651E . 8B46 38 MOV EAX,DWORD PTR DS:[ESI+38]
00796521 . 55 PUSH EBP ; /Flags
00796522 . 68 00000100 PUSH 10000 ; |BufSize = 10000 (65536.)
00796527 . 68 309AA700 PUSH Engine.00A79A30 ; |Buffer = Engine.00A79A30
0079652C . 50 PUSH EAX ; |Socket
0079652D . 90 NOP ; |
0079652E . E8 3C023071 CALL ws2_32.recv ; \recv
00796533 . 8B8E 1C120100 MOV ECX,DWORD PTR DS:[ESI+1121C]
00796539 . 8B15 2CF7C200 MOV EDX,DWORD PTR DS:[C2F72C]
0079653F . 8BF8 MOV EDI,EAX
00796541 . 8D0C8A LEA ECX,DWORD PTR DS:[EDX+ECX*4]
00796544 . 0F31 RDTSC
00796546 . 83C0 F4 ADD EAX,-0C
00796549 . 0101 ADD DWORD PTR DS:[ECX],EAX
0079654B . 3BFD CMP EDI,EBP
0079654D .^0F8E 6FFFFFFF JLE Engine.007964C2
00796553 . EB 0B JMP SHORT Engine.00796560
00796555 . 8DA424 0000000>LEA ESP,DWORD PTR SS:[ESP]
0079655C . 8D6424 00 LEA ESP,DWORD PTR SS:[ESP]
00796560 > 8B86 C01F0100 MOV EAX,DWORD PTR DS:[ESI+11FC0]
00796566 . 83E8 00 SUB EAX,0 ; Switch (cases 0..1)
00796569 . 0F84 BD000000 JE Engine.0079662C
0079656F . 83E8 01 SUB EAX,1
00796572 . 0F85 64010000 JNZ Engine.007966DC
00796578 . 8B86 1C120100 MOV EAX,DWORD PTR DS:[ESI+1121C] ; Case 1 of switch 00796566
0079657E . 8B0D 2CF7C200 MOV ECX,DWORD PTR DS:[C2F72C]
00796584 . 8D0C81 LEA ECX,DWORD PTR DS:[ECX+EAX*4]
00796587 . 0F31 RDTSC
00796589 . 2901 SUB DWORD PTR DS:[ECX],EAX
0079658B . 8B8E BC1F0100 MOV ECX,DWORD PTR DS:[ESI+11FBC]
00796591 . 8B86 B81F0100 MOV EAX,DWORD PTR DS:[ESI+11FB8]
00796597 . 2BC1 SUB EAX,ECX
00796599 . 3BC7 CMP EAX,EDI
0079659B . 7C 02 JL SHORT Engine.0079659F
0079659D . 8BC7 MOV EAX,EDI
0079659F > 50 PUSH EAX
007965A0 . 8D95 309AA700 LEA EDX,DWORD PTR SS:[EBP+A79A30]
007965A6 . 52 PUSH EDX
007965A7 . 8D8431 5008000>LEA EAX,DWORD PTR DS:[ECX+ESI+850]
007965AE . 50 PUSH EAX
007965AF . E8 7CBBDCFF CALL Engine.00562130
007965B4 . 8B8E B81F0100 MOV ECX,DWORD PTR DS:[ESI+11FB8]
007965BA . 2B8E BC1F0100 SUB ECX,DWORD PTR DS:[ESI+11FBC]
007965C0 . 83C4 0C ADD ESP,0C
007965C3 . 3BCF CMP ECX,EDI
007965C5 . 7C 02 JL SHORT Engine.007965C9
007965C7 . 8BCF MOV ECX,EDI
007965C9 > 8B96 1C120100 MOV EDX,DWORD PTR DS:[ESI+1121C]
007965CF . A1 2CF7C200 MOV EAX,DWORD PTR DS:[C2F72C]
007965D4 . 2BF9 SUB EDI,ECX
007965D6 . 03E9 ADD EBP,ECX
007965D8 . 8D1C90 LEA EBX,DWORD PTR DS:[EAX+EDX*4]
007965DB . 0F31 RDTSC
007965DD . 83C0 F4 ADD EAX,-0C
007965E0 . 0103 ADD DWORD PTR DS:[EBX],EAX
007965E2 . 85C9 TEST ECX,ECX
007965E4 . 7E 0A JLE SHORT Engine.007965F0
007965E6 . 018E BC1F0100 ADD DWORD PTR DS:[ESI+11FBC],ECX
007965EC . 014C24 14 ADD DWORD PTR SS:[ESP+14],ECX
007965F0 > 8B86 B81F0100 MOV EAX,DWORD PTR DS:[ESI+11FB8]
007965F6 . 3986 BC1F0100 CMP DWORD PTR DS:[ESI+11FBC],EAX
007965FC . 0F85 DA000000 JNZ Engine.007966DC
00796602 . 8B16 MOV EDX,DWORD PTR DS:[ESI]
00796604 . 8B52 78 MOV EDX,DWORD PTR DS:[EDX+78]
00796607 . 50 PUSH EAX
00796608 . 8D86 50080000 LEA EAX,DWORD PTR DS:[ESI+850]
0079660E . 50 PUSH EAX
0079660F . 8BCE MOV ECX,ESI
00796611 . FFD2 CALL EDX
00796613 . 33C0 XOR EAX,EAX
00796615 . 8986 B81F0100 MOV DWORD PTR DS:[ESI+11FB8],EAX
0079661B . 8986 BC1F0100 MOV DWORD PTR DS:[ESI+11FBC],EAX
00796621 . 8986 C01F0100 MOV DWORD PTR DS:[ESI+11FC0],EAX
00796627 . E9 B0000000 JMP Engine.007966DC
0079662C > 8B86 1C120100 MOV EAX,DWORD PTR DS:[ESI+1121C] ; Case 0 of switch 00796566
00796632 . 8B0D 2CF7C200 MOV ECX,DWORD PTR DS:[C2F72C]
00796638 . 8D0C81 LEA ECX,DWORD PTR DS:[ECX+EAX*4]
0079663B . 0F31 RDTSC
0079663D . 2901 SUB DWORD PTR DS:[ECX],EAX
0079663F . 8B8E BC1F0100 MOV ECX,DWORD PTR DS:[ESI+11FBC]
00796645 . B8 02000000 MOV EAX,2
0079664A . 2BC1 SUB EAX,ECX
0079664C . 3BC7 CMP EAX,EDI
0079664E . 7C 02 JL SHORT Engine.00796652
00796650 . 8BC7 MOV EAX,EDI
00796652 > 50 PUSH EAX
00796653 . 8D95 309AA700 LEA EDX,DWORD PTR SS:[EBP+A79A30]
00796659 . 52 PUSH EDX
0079665A . 8D8431 5008000>LEA EAX,DWORD PTR DS:[ECX+ESI+850]
00796661 . 50 PUSH EAX
00796662 . E8 C9BADCFF CALL Engine.00562130
00796667 . B9 02000000 MOV ECX,2
0079666C . 2B8E BC1F0100 SUB ECX,DWORD PTR DS:[ESI+11FBC]
00796672 . 83C4 0C ADD ESP,0C
00796675 . 3BCF CMP ECX,EDI
00796677 . 7C 02 JL SHORT Engine.0079667B
00796679 . 8BCF MOV ECX,EDI
0079667B > 8B96 1C120100 MOV EDX,DWORD PTR DS:[ESI+1121C]
00796681 . A1 2CF7C200 MOV EAX,DWORD PTR DS:[C2F72C]
00796686 . 2BF9 SUB EDI,ECX
00796688 . 03E9 ADD EBP,ECX
0079668A . 8D1C90 LEA EBX,DWORD PTR DS:[EAX+EDX*4]
0079668D . 0F31 RDTSC
0079668F . 83C0 F4 ADD EAX,-0C
00796692 . 0103 ADD DWORD PTR DS:[EBX],EAX
00796694 . 85C9 TEST ECX,ECX
00796696 . 7E 0A JLE SHORT Engine.007966A2
00796698 . 018E BC1F0100 ADD DWORD PTR DS:[ESI+11FBC],ECX
0079669E . 014C24 14 ADD DWORD PTR SS:[ESP+14],ECX
007966A2 > B8 02000000 MOV EAX,2
007966A7 . 3986 BC1F0100 CMP DWORD PTR DS:[ESI+11FBC],EAX
007966AD . 75 2D JNZ SHORT Engine.007966DC
007966AF . 66:8B8E 500800>MOV CX,WORD PTR DS:[ESI+850]
007966B6 . 66:898E B81F01>MOV WORD PTR DS:[ESI+11FB8],CX
007966BD . 3986 B81F0100 CMP DWORD PTR DS:[ESI+11FB8],EAX
007966C3 . 7D 0D JGE SHORT Engine.007966D2
007966C5 . 68 E0618900 PUSH Engine.008961E0 ; UNICODE "packet size is under 2 something wrong!"
007966CA . E8 21BEFFFF CALL Engine.007924F0
007966CF . 83C4 04 ADD ESP,4
007966D2 > C786 C01F0100 >MOV DWORD PTR DS:[ESI+11FC0],1
007966DC > 85FF TEST EDI,EDI ; Default case of switch 00796566
007966DE .^0F8F 7CFEFFFF JG Engine.00796560
007966E4 . 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
007966E8 . 0186 70090100 ADD DWORD PTR DS:[ESI+10970],EAX
007966EE . 0186 74090100 ADD DWORD PTR DS:[ESI+10974],EAX
007966F4 .^E9 C9FDFFFF JMP Engine.007964C2
Что интересно - Функция в адресе 007964B0 никогда не вызывается)
а вызывается скорее всего каким то джампом я хз )
Но так и не нашел то что хотел)
Так же клиент постоянно тикает эту функцию, определил я это поставив бряк на
007964D1 . 3D 02010000 CMP EAX,102
Пред ней я так понял и идет проверка "тик это или нет" если нет - значит пакет, значит вызываем Recv
Чето такое....
__________________
Все относительно...
Последний раз редактировалось ALF, 02.09.2011 в 23:33 .
03.09.2011, 13:12
#5
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
а не проще похучить клиентску шифровку\расшифровку ?
asm Код:
Engine.dll:20522A50 dd offset unk_203DA2F0
Engine.dll:20522A54 dd offset loc_203DA610
Engine.dll:20522A58 dd offset sub_203DA590 ; зашифровываем исходящий пакет
Engine.dll:20522A5C dd offset sub_203DA500 ; расшифровываем входящий пакет
Engine.dll:20522A60 dd offset unk_205948B4
Engine.dll:20522A64 engine_??_7UNetworkHandler@@6BUObject@@@ ; этот адрес экспортируется
Engine.dll:20522A68 dd offset off_201124E2
Engine.dll:20522A6C dd offset unk_20112530
Engine.dll:20522A70 dd offset unk_200947D0
__________________
Шожиделать.. ботить хочется..
Последний раз редактировалось destructor, 03.09.2011 в 13:16 .
03.09.2011, 13:34
#6
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Цитата:
Сообщение от
destructor
а не проще похучить клиентску шифровку\расшифровку ?
asm Код:
Engine.dll:20522A50 dd offset unk_203DA2F0
Engine.dll:20522A54 dd offset loc_203DA610
Engine.dll:20522A58 dd offset sub_203DA590 ; зашифровываем исходящий пакет
Engine.dll:20522A5C dd offset sub_203DA500 ; расшифровываем входящий пакет
Engine.dll:20522A60 dd offset unk_205948B4
Engine.dll:20522A64 engine_??_7UNetworkHandler@@6BUObject@@@ ; этот адрес экспортируется
Engine.dll:20522A68 dd offset off_201124E2
Engine.dll:20522A6C dd offset unk_20112530
Engine.dll:20522A70 dd offset unk_200947D0
О_о идея не плохая)))
А не подскажите какие аргументы идут при вызове этих функций?
__________________
Все относительно...
04.09.2011, 16:59
#7
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
Цитата:
Сообщение от
Breadfan
он защиту делает.
этоже создание вредоносных программ! банить таких надо!!!
Цитата:
Сообщение от
ALF
А не подскажите какие аргументы идут при вызове этих функций?
держи
Код:
void __stdcall function(char * buff, int64 * pxorkey, int leng)
{
int * pobj; __asm mov pobj, ecx; //опционально
printf("указатель на пакет %p", buff);
printf("указатель на ключик %p", pxorkey);
printf("размер пакета %d",leng) ;
};
__________________
Шожиделать.. ботить хочется..
Последний раз редактировалось destructor, 04.09.2011 в 17:34 .
За это сообщение destructor нажился спасибкой от:
18.12.2011, 22:49
#8
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
oO Поставил месседжи на те функции - походу клиент не вызывает их О_О.
(Goddess of Destruction)
__________________
Все относительно...
19.12.2011, 13:40
#9
Рыцарь
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
криво поставил?
__________________
Шожиделать.. ботить хочется..
19.12.2011, 19:12
#10
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Цитата:
Сообщение от
destructor
криво поставил?
(FARPROC &)ClientEncrypt = (FARPROC)((DWORD)UNHandlerTable - 0x0C);
(FARPROC &)ClientDecrypt = (FARPROC)((DWORD)UNHandlerTable - 0x08);
SplaisingVMTF(ClientEncrypt, NewCrypt);
SplaisingVMTF(ClientDecrypt, NewCrypt);
__________________
Все относительно...
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 03:29 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!