|
You last visited: Today at 08:28
Advertisement
c++ recv hook
Discussion on c++ recv hook within the C/C++ forum part of the Coders Den category.
07/22/2013, 16:19
|
#1
|
elite*gold: 5
Join Date: Dec 2009
Posts: 1,080
Received Thanks: 434
|
c++ recv hook
Hey,
ich hab mir einen recv, send hook gebastelt.
Die Send funktion funktioniert einwandfrei aber die recv funktion leitet die packete nachdem loggen nicht mehr weiter.
Wenn ich die logging funktion bei der recv funktion austelle geht es einwandfrei.
Code:
int WINAPI XRecv(SOCKET Socket, char *Buffer, int Length, int Flags)
{
char *Buf = Buffer;
int leng = Recv(Socket, Buf, Length, Flags);
if (leng > 0)
{
PacketCryption(Buf, leng);
WriteLogRecv(Buf, leng);
}
return leng;
}
void WriteLogRecv(char* MSG, int Lenght)
{
FILE * logfile;
if((logfile=fopen("C:\\RecvLog.LOG", "a+")) != NULL)
{
time_t secs=time(0);
tm *t=localtime(&secs);
fprintf(logfile, "[RECV] :: %i >> %04d-%02d-%02d %02d:%02d:%02d >> ", Lenght, t->tm_year+1900,t->tm_mon+1,t->tm_mday, t->tm_hour,t->tm_min,t->tm_sec);
for(unsigned int i = 0; i < Lenght; i++)
{
fprintf(logfile, "0x%02x, ", (BYTE)MSG[i]);
}
fprintf(logfile, "\n");
fclose(logfile);
}
}
Recv = (int (WINAPI *)(SOCKET, char *, int, int))DetourFunction((PBYTE)GetProcAddress(GetModuleHandle(L"ws2_32.dll"), "recv"), (PBYTE)XRecv);
Ich hoffe ihr könnt mir helfen
|
|
|
07/22/2013, 18:00
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
mmh sieht eigtl soweit korrekt aus, was machste denn in "PacketCryption"?
EDIT:
Quote:
hihi
|
|
|
07/22/2013, 18:07
|
#3
|
elite*gold: 5
Join Date: Dec 2009
Posts: 1,080
Received Thanks: 434
|
simple byte verschiebung die ist aber auch richtig die benutze ich ja auch bei der send.
Es liegt an der log funktion. Egal welche Log Funktion/Klasse ich benutze
|
|
|
07/22/2013, 18:33
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Debuggen.
|
|
|
07/22/2013, 18:37
|
#5
|
elite*gold: 5
Join Date: Dec 2009
Posts: 1,080
Received Thanks: 434
|
Die Pakete kommen ja im log an. Kann es sein das die Log Funktion zu lange dauert und somit der Client ein TimeOut gibt?
|
|
|
07/22/2013, 18:40
|
#6
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Nein.
Debuggen -> schaun, ob er überhaupt die originale recv-Funktion aufruft und ob die übergebenen Daten alle passen
Padmak
|
|
|
07/22/2013, 19:29
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Luôô
simple byte verschiebung die ist aber auch richtig die benutze ich ja auch bei der send.
Es liegt an der log funktion. Egal welche Log Funktion/Klasse ich benutze
|
dir ist klar, dass du wenn du den buffer decryptest und nach dem loggen deine änderungen des packets nicht wieder rückgängig machst, dass dann die originalanwendung versuchen wird den bereits decrypteten buffer nochmals zu decrypten, was wahrscheinlich ziemlich in die hose gehen wird?
(zmdst wenn du und das programm das tun was ich denke, deswegen auch die frage was du in packetcryption machst.)
|
|
|
07/22/2013, 21:46
|
#8
|
elite*gold: 5
Join Date: Dec 2009
Posts: 1,080
Received Thanks: 434
|
Hab ich mir auch schon gedacht aber nein hab es auch schon wieder gecryptet.
Ich kann entweder nur loggen oder nur decrypten. Sonst kommen die Packet zu spät oder so an und ich kann nicht einloggen
|
|
|
07/22/2013, 22:19
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Luôô
Hab ich mir auch schon gedacht aber nein hab es auch schon wieder gecryptet.
Ich kann entweder nur loggen oder nur decrypten. Sonst kommen die Packet zu spät oder so an und ich kann nicht einloggen
|
kann ich mir nicht vorstellen.
versuch mal den buffer encrypted zu loggen, also ohne etwas zu de oder/und encrypten.
was soll eigtl. das:
Code:
char *Buf = Buffer;
kannst doch direkt den übergebenen pointer benutzen?
wird dir der compiler zwar rausoptimieren, aber trzd. eigtl unnötig.
|
|
|
07/22/2013, 23:14
|
#10
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Kopier doch das empfangene in einen neuen Buffer, decrypte das und logg es dann mit.
Wenn das auch nicht geht, debuggen!
Padmak
|
|
|
 |
Similar Threads
|
[request] alissafix with recv hook
06/27/2013 - Mabinogi - 62 Replies
can anyone fix the recv hook problem for alissa?
thanks in advance
|
[Question] Recv hook
01/10/2013 - Kal Online - 3 Replies
I'm having a bit weird problem with that. I've managed to hook recv function directly in winsock dll and i can sniff the data being exchanged between client and server. I guess that they are encrypted because i didn't hook recv in engine exactly but in dll.
In main thread:
RealRecv = (RecvPtr)GetProcAddress(GetModuleHandle(L"ws2 _32.dll"), "recv");
RealRecv = (RecvPtr)Detour((BYTE*)RealRecv, (BYTE*)&OurRecv, 5);
OurRecv func:
INT WINAPI OurRecv(SOCKET sock, CHAR* buf, INT len, INT...
|
[C++]Hook all Recv function Problem
08/21/2010 - C/C++ - 5 Replies
Hi Leute
wenn ich send hooke egal welches läuft das alles super nur wenn ich irgendein recv hooke habe ich immer eine Packet size von 1000 bis 10000.
sry das ich schon wieder nerve
#include "WinSock2.h"
#include <cstdio>
#include <ctime>
#include <fstream>
#include <iomanip>
|
[Help]HackShield detected send,recv hook c++
08/17/2010 - C/C++ - 6 Replies
Entschuldigung für noch einen Thread am selben Tag aber das passt glaub ich nicht wirklich in das andere deswegen eröffne ich einen neuen.
Wenn ich die Winsock send recv hooke detected das Hackshield nach ca. 2 minuten einen hack kann man das Bypassen ?
Und wenn ja,wie sollte ich anfangen.
Würde mich freuen auf eine Antwort.
Mit freundlichen Grüßen :)
|
All times are GMT +1. The time now is 08:29.
|
|