hey, also ich habe ein kleines problem, oder doch eher großes problem
arbeite gerade zum ersten mal mit hooks und so und hab versucht recv zu hooken,
also ich habe in einem spiel die recv funktion gehookt( glaube zumindest das ich das hab)
z.b wenn ich mich einlogge sehe ich auch meine id/pw name etc.. andere namen die erscheinen kommen auch vor , aber am meisten ist da son müll drin
sobald ich auf log in drücke kommen extreeeeem viele recv an ( ka ob soviel normal ist xD und dann nach mehreren sekunden stoppts einfach und nix kommt mehr...
hier meine funktionen die ich benutze
BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
{
if (reason == DLL_PROCESS_ATTACH)
{
Console();
RecvAddr = (DWORD)GetProcAddress(GetModuleHandleA("ws2_32.dll "), "recv");
cout << hex << RecvAddr; // nur zum checken ob die richtige adresse kam
oDraw2D = (tDraw2D)DetourFunction((BYTE*)RecvAddr, (BYTE*)&Draw2D, 5);
}
return 1;
}
// ka ob man das was jetzt kommt so machen kann wie ich das jetzt gemacht habe xD
typedef int(__stdcall *tDraw2D)(SOCKET Socket, char *Buffer, int Length, int Flags);
tDraw2D oDraw2D = NULL;
void Draw2D(SOCKET Socket, char *Buffer, int Length, int Flags)
{
__asm PUSHAD;
for (int i = 0; i < Length; i++)
{
cout << Buffer[i];
printf(" ");
}
printf("\n");
hey, also ich habe ein kleines problem, oder doch eher großes problem
arbeite gerade zum ersten mal mit hooks und so und hab versucht recv zu hooken,
also ich habe in einem spiel die recv funktion gehookt( glaube zumindest das ich das hab)
z.b wenn ich mich einlogge sehe ich auch meine id/pw name etc.. andere namen die erscheinen kommen auch vor , aber am meisten ist da son müll drin
sobald ich auf log in drücke kommen extreeeeem viele recv an ( ka ob soviel normal ist xD und dann nach mehreren sekunden stoppts einfach und nix kommt mehr...
hier meine funktionen die ich benutze
BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
{
if (reason == DLL_PROCESS_ATTACH)
{
Console();
RecvAddr = (DWORD)GetProcAddress(GetModuleHandleA("ws2_32.dll "), "recv");
cout << hex << RecvAddr; // nur zum checken ob die richtige adresse kam
oDraw2D = (tDraw2D)DetourFunction((BYTE*)RecvAddr, (BYTE*)&Draw2D, 5);
}
return 1;
}
// ka ob man das was jetzt kommt so machen kann wie ich das jetzt gemacht habe xD
typedef int(__stdcall *tDraw2D)(SOCKET Socket, char *Buffer, int Length, int Flags);
tDraw2D oDraw2D = NULL;
void Draw2D(SOCKET Socket, char *Buffer, int Length, int Flags)
{
__asm PUSHAD;
for (int i = 0; i < Length; i++)
{
cout << Buffer[i];
printf(" ");
}
printf("\n");
1. Also erstmal vermeide bitte diese "Hook Funktionen" aus dem Internet, die sind totaler müll, nimm doch die Microsoft Detours oder die schönen .
2. Am besten die Funktion "Draw2D" mit der __declspec(naked) calling convention umschreiben.
3. Ich denke, dass diese "kryptischen" Zeichen nur kommen, da die Packets vermutlich noch enrypted werden (Vermutung).
1. Also erstmal vermeide bitte diese "Hook Funktionen" aus dem Internet, die sind totaler müll, nimm doch die Microsoft Detours oder die schönen .
2. Am besten die Funktion "Draw2D" mit der __declspec(naked) calling convention umschreiben.
3. Ich denke, dass diese "kryptischen" Zeichen nur kommen, da die Packets vermutlich noch enrypted werden (Vermutung).
danke für die hilfe, zu
1. erst wollte ich detours.h verwenden aber ich bin noch ein ziemlicher anfänger in visual studio und daher konnte ich das nicht includen :/ das einfache #include hat nicht gereicht.. ( habe die header datei zu den headerdateien eingefügt) kann es seind as ich die auch noch iwo anders includen muss?
2. habe das jetzt zu
__declspec(naked) void Draw2D(SOCKET Socket, char *Buffer, int Length, int Flags)
{
__asm PUSHAD;
for (int i = 0; i < Length; i++)
{
cout << Buffer[i];
printf(" ");
}
printf("\n");
__asm POPAD;
oDraw2D(Socket,Buffer,Length, Flags );
}
umgeschrieben, ist das falsch? weil das game crashed
3. stimmt kann ich mir gut vorstellen, aber welche möglichkeiten habe die encrypteten zu kriegen? das problem ist das gamehackshield lässt mich nicht mit ollydbg drauf zugreifen
danke für die hilfe, zu
1. erst wollte ich detours.h verwenden aber ich bin noch ein ziemlicher anfänger in visual studio und daher konnte ich das nicht includen :/ das einfache #include hat nicht gereicht.. ( habe die header datei zu den headerdateien eingefügt) kann es seind as ich die auch noch iwo anders includen muss?
2. habe das jetzt zu
__declspec(naked) void Draw2D(SOCKET Socket, char *Buffer, int Length, int Flags)
{
__asm PUSHAD;
for (int i = 0; i < Length; i++)
{
cout << Buffer[i];
printf(" ");
}
printf("\n");
__asm POPAD;
oDraw2D(Socket,Buffer,Length, Flags );
}
umgeschrieben, ist das falsch? weil das game crashed
3. stimmt kann ich mir gut vorstellen, aber welche möglichkeiten habe die encrypteten zu kriegen? das problem ist das gamehackshield lässt mich nicht mit ollydbg drauf zugreifen
Du musst noch die detours lib linken und in deinem Projekt einbinden, also:
Code:
#pragma comment(lib, "detours.lib")
Welches Spiel ist es denn?... vielleicht kenne ich es und kann dir dabei mehr helfen, sonst kannst du die "Interne" Recv Funktion im Spiel suchen und die Assembler Funktion hooken.
Da wird dann dein Buffer in irgendeinem Register stehen, welches du dann nur noch returnen musst .
Aber du sagtest doch, dass das ein Hackshield besitzt, also wird auch dein JMP Detour erkannt?
Du musst noch die detours lib linken und in deinem Projekt einbinden, also:
Code:
#pragma comment(lib, "detours.lib")
Welches Spiel ist es denn?... vielleicht kenne ich es und kann dir dabei mehr helfen, sonst kannst du die "Interne" Recv Funktion im Spiel suchen und die Assembler Funktion hooken.
Da wird dann dein Buffer in irgendeinem Register stehen, welches du dann nur noch returnen musst .
Aber du sagtest doch, dass das ein Hackshield besitzt, also wird auch dein JMP Detour erkannt?
Sonst schau mal im letzten Post hier: rein.
also ein hackshield hats aufjedenfall und obs erkannt wird weiß ich nicht aber das würde vielleicht der grund sein wieso nach 30-60 sec keine recv mehr in der konsole rein kommen
das mit dem pragma comment hab ich gemacht, hat nicht funktioniert, trotzdem findet der die detours.h nicht obwhohl die da ist-.- oder muss ich die detours.lib im linker oder so auch noch hinzufügen?
kannst du mir noch sagen ob das hier so richtig ist? weil das game crasht wenn ich das so injecte
__declspec(naked) void Draw2D(SOCKET Socket, char *Buffer, int Length, int Flags){
.....
}
werde mit den link mal ansehen
edit: habe mir den link angeguckt, meinst du also ich soll am ende einfach extern "C" __declspec(naked) void Draw2D(); schreiben?
Du nimmst dir einfach die Klasse, die er dort bereitgestellt hat und compilst die DLL o.O?
Wenn's immer noch nicht klappt dann versuch deine Hook-Func so zu gestalten:
Code:
INT WINAPI OurRecv(SOCKET sock, CHAR* buf, INT len, INT flags)
{
std::cout << "Received: ";
for (int i = 0; i< strlen(buf);i++)
std::cout << std::hex << static_cast<WORD>(buf[i]) << ' ';
std::cout << std::endl;
return RealRecv(sock, buf, len, flags);
}
erstmal danke die sehr für deine hilfe, habe das ganze jetzt umeschrieben und meine hook func in die form gebracht wie du gesagt hast und benutze die detours 1.5 diesmal sieht das ganze schonmal viel besser aus^^
unzwar so
Received: 24 5f 2f 32
Received: a
Received: a
Received: a
Received: 22 3e 9 32
Received: a
Received: a
Received: a
Received: 22 ffa7 ffff 2e
Received: f
Received: f
Received: f
Received: ff94 ff9e 49 9
Received: f
Received: ff94 72 ffe5 2f
Received: f
Received: ff94 2c ffeb 31
Received: f
Received: ff94 ff85 f 32
Received: f
Received: ff94 ffae 1b 32
Received: f
Received: ff94 64 2d 32
Received: f
Received: ff94 2b 2f 32
Received: f
Received: ff94 5f 2f 32
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: a
Received: 23 3e 9 32
Received: a
Received: 22 6 10 30
Received: a
Received: a
Received: a
Received: a
Received: a
Received: 23 6 10 30
Received: f
Received: f
Received: f
Received: ff94 ff89 74
Received: f
Received: ffff fff4
Received: f
Received: ff94 31 ff9a 19
Received: f
Received: ffff fff4
Received: f
Received: ff94 5 ff82 1c
Received: f
Received: ffff fff4
Received: f
Received: ff94 ffa8 ffa6 20
Received: f
Received: ffff fff4
Received: f
Received: ff94 fff3 13 22
Received: f
Received: ffff fff4
ob das jetzt 100 pro richtig ist weiß nicht da ich mich nicht so gut auskenne^^, aber vllt könntest du ja sagen obs richtig aussieht
aber trotzdem hören die recv nach ca 30 sec auf :S weißt du vllt woran das liegt? vielleicht am hackshield?
Also bevor du überhaupt attachst, stürzt es schon ab?
Wenn das so ist, dann wird es anscheind vom Spiel erkannt, pack es mit UPX wenn dies der Fall ist.
Also bevor du überhaupt attachst, stürzt es schon ab?
Wenn das so ist, dann wird es anscheind vom Spiel erkannt, pack es mit UPX wenn dies der Fall ist.
jo bevor ich attache, ich werde upx mal runterladen, aber ich glaube attachen klappt dann immernoch nciht, genau wie mit ollydbg wenn ich attachen will kommt immer error_access_denied, oder wenn ich injector start stürzt es entweder ab oder der prozess wird nicht angezeigt... auch mit uce kann ich eigentlich den prozess nicht auswählen aber wenn ich einstelle das es automatisch beim start vom prozess injected werden soll klappts( und das ist die einzige mögichkeit wie ich auch dlls injecten kann^^)
Okay habe die Lösung für das "30 sek Problem", anscheind wird bei Kalonline dein Detour "proofed" also die 5 bytes die gesetzt werden (E9 - JMP)...
Anders ausgedrückt: Hackshield erkennt Hooks von externen Anwendungen auf der Recv-Funktion.
Also dir bleiben viele Möglichkeiten, dass zu bypassen:
1. Hook 5 bytes nach der Recv-Funktion im Client (schau auch mal im debugger nach, was nach 30 sek auf der Adresse wo der Detour ist, passiert!)
2. Setz einen Hardware Breakpoint (bin mir da aber nicht sicher ob die vom Hackshield treiber entfernt werden)
3. Vectored Exception Handler / Structured Exception Handler setzen
Edit: Wegen dein Debugging Problem, hier eine Lösung wie du das "Hacking-Shield" (wortwitz haha bin ich lustig...) umgehst:
Lad dir und herunter.
Schmeiß die DLL's in deinem Olly ordner -> F3 in Olly -> Kalonline Prozess öffnen -> Tada alles API Hooks werden unhooked und du solltest debuggen können
2. Möglichkeit: Mit den VEH-Debugger von CE debuggen.
Okay habe die Lösung für das "30 sek Problem", anscheind wird bei Kalonline dein Detour "proofed" also die 5 bytes die gesetzt werden (E9 - JMP)...
Anders ausgedrückt: Hackshield erkennt Hooks von externen Anwendungen auf der Recv-Funktion.
Also dir bleiben viele Möglichkeiten, dass zu bypassen:
1. Hook 5 bytes nach der Recv-Funktion im Client (schau auch mal im debugger nach, was nach 30 sek auf der Adresse wo der Detour ist, passiert!)
2. Setz einen Hardware Breakpoint (bin mir da aber nicht sicher ob die vom Hackshield treiber entfernt werden)
3. Vectored Exception Handler / Structured Exception Handler setzen
Edit: Wegen dein Debugging Problem, hier eine Lösung wie du das "Hacking-Shield" (wortwitz haha bin ich lustig...) umgehst:
Lad dir und herunter.
Schmeiß die DLL's in deinem Olly ordner -> F3 in Olly -> Kalonline Prozess öffnen -> Tada alles API Hooks werden unhooked und du solltest debuggen können
2. Möglichkeit: Mit den VEH-Debugger von CE debuggen.
jo habe im debuger von der ce gesehn das mein jmp auf der adresse nicht mehr da ist nach ca 30 sec^^
Quote:
Originally Posted by bloodx
Du willst kal hooken? Du brauchst kein push und pop -
Nen recv Hook + 5 Bytes wegen Hackshild check
danke aber habe das mit push und pop nicht mehr
das ganze sieht jetzt so aus
int MyPacketRecv(SOCKET Socket, char *Buffer, int Length, int Flags);
int(__stdcall *PacketRecv)(SOCKET Socket, char *Buffer, int Length, int Flags);
int MyPacketRecv(SOCKET Socket, char *Buffer, int Length, int Flags) {
std::cout << "Received: ";
for (int i = 0; i< strlen(Buffer); i++)
std::cout << std::hex << static_cast<WORD>(Buffer[i]) << ' ';
std::cout << std::endl;
return PacketRecv(Socket, Buffer, Length, Flags);
}
[Selling] Nostale Send/Recv Hook 11/01/2014 - Nostale Trading - 1 Replies I sell a basic project for those who want to start programming hack for nostale (traffic injector). The project is made with Visual Studio 2013 but compatible with the 2012 version.
Price:
- 5€ PayPal
- 10€ PaySafeCard
Functions:
- SendPacket
- RecvPacket
c++ recv hook 07/22/2013 - C/C++ - 9 Replies 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.
int WINAPI XRecv(SOCKET Socket, char *Buffer, int Length, int Flags)
{
char *Buf = Buffer;
int leng = Recv(Socket, Buf, Length, Flags);
if (leng > 0)
[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>