C++ hook wsasend und wsarecv

01/20/2012 22:22 vitalka#1
Habe eine funktion bei der ich falls ich ein packet kriege eine MessageBox bekomme jedoch kriege ich nix und die packete laufen zwischen server und client weiter.

Detours direkt will ich nicht nutzen da Hackshield es vermutlich erkennen würde.


[Only registered and activated users can see links. Click Here To Register...]

Klappt aber nicht wo ist der fehler
01/20/2012 22:50 yihaaa#2
Test mal in Olly ob die Funktionen aufgerufen werden. Dann schreib den Name richtig "WSASend"! Weiß nicht ob er das als Fehler anerkennt( Hier hastes korrigiert, auf cpg noch nicht ). Ansonsten good job c&p :P
01/20/2012 22:56 vitalka#3
Kann nicht auf den Prozess zugreifen da er durch Hackshield geschützt ist
01/20/2012 23:01 yihaaa#4
Dann teste es doch bei einem Programm was nicht geschützt ist, ob da der hook richtig ausgeführt wird. Dann siehst du ja ob es an deinem Code liegt oder du noch andere Sachen in dem geschützten Programm verändern musst.
01/21/2012 00:55 MoepMeep#5
Welch ein Wunder, dass c&p code nicht geht :o
01/22/2012 11:25 vitalka#6
Da es bei mir nun mit dem Detour funktioniert bin ich bei einem neuen problem undzwar habe ich schon vor dem hooken eine connection gemacht die auf mein bot connectet :) soweit das connecten klappt und bin gerade senden dran hier habe ich die send funktion gehooked, er send pro hook recv und send ein packet nach meinem bot dann stürzt das game mit fehlermeldung von windows ab. Habe dann auchmal ein anderes programm was kein HS hat, da kam der gleiche fehler. Wo ist das prob:

Quote:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <winsock2.h>

#pragma comment(lib,"ws2_32.lib")

using namespace std;

typedef int ( WINAPI *realConnect )(SOCKET s, const struct sockaddr* name, int namelen );
typedef int (WINAPI* realRecv)(SOCKET socket, const char* buffer, int length, int flags);
typedef int (WINAPI* realSend)(SOCKET socket, const char* buffer, int length, int flags);

realSend o_send;
realRecv o_recv;
realConnect o_connect;

SOCKET Bot;
SOCKADDR_IN addr;


int WINAPI my_connect( SOCKET s, const struct sockaddr* name, int namelen)
{
WORD port = ntohs((*(WORD*)name->sa_data));
sockaddr_in *sockaddr = (sockaddr_in*)name;
sockaddr->sin_port = htons(16000);
if ( port != 80 )
{
sockaddr->sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
}
return o_connect(s,name,namelen);
}

int WINAPI my_send(SOCKET socket, const char* buffer, int length, int flags)
{
send(Bot, buffer, length, flags);
return o_send(socket, buffer, length, flags);
}

int WINAPI my_recv(SOCKET socket, const char* buffer, int length, int flags)
{
send(Bot, buffer, length, flags);
return o_recv(socket, buffer, length, flags);
}

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//Socketpart
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);

Bot=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
addr.sin_family=AF_INET;
addr.sin_port=htons(16000);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");

short status;
status=connect(Bot,(SOCKADDR*)(&addr),sizeof(addr) );
if (status==SOCKET_ERROR)
{
MessageBox(NULL, TEXT("Bot dont exists"), TEXT("Error"), MB_OK);
exit(0);
}
/////////////////////////////////////////////////////
HMODULE hWS32 = LoadLibraryA( "ws2_32.dll" );
FARPROC pConnect = GetProcAddress(hWS32,"connect");
FARPROC pSend = GetProcAddress(hWS32,"send");
FARPROC pRecv = GetProcAddress(hWS32,"recv");
//DetourCreate((LPVOID)pConnect,my_connect,5);
//__asm mov [ o_connect ], eax;
DetourCreate((LPVOID)pSend,my_send,5);
__asm mov [ o_send ], eax;
DetourCreate((LPVOID)pRecv,my_recv,5);
__asm mov [ o_recv ], eax;
break;
}
return true;
}

01/22/2012 12:14 xNopex#7
Quote:
undzwar habe ich schon vor dem hooken eine connection gemacht die auf mein bot connectet soweit das connecten klappt und bin gerade senden dran hier habe ich die send funktion gehooked, er send pro hook recv und send ein packet nach meinem bot dann stürzt das game mit fehlermeldung von windows ab
[Only registered and activated users can see links. Click Here To Register...]
Semantik

Das was du hier laberst macht semantisch und syntaktisch keinen Sinn.

EDIT: Und Code einrücken. Dieses erbrochene Etwas will sich kein Mensch durchlesen.
01/22/2012 12:21 vitalka#8
Entweder ich kriege ich hilfe oder eben nicht sowas kannst du dir echt sparen, genau solche Vögel wie dich kann ich nicht gebrauchen, es ist nicht die Section hilfe bei meinen Grammatikfehlern etc. also spars dir.
01/22/2012 12:24 MoepMeep#9
Quote:
Originally Posted by vitalka View Post
Entweder ich kriege ich hilfe oder eben nicht sowas kannst du dir echt sparen, genau solche Vögel wie dich kann ich nicht gebrauchen, es ist nicht die Section hilfe bei meinen Grammatikfehlern etc. also spars dir.
Und solche Vögel mit C&P code wollen wir hier nicht, machn Abflug ;o
01/22/2012 12:41 vitalka#10
oh man kinder ja dann viel spass ihr vögel untereinander ;) wer spricht von c&p
01/22/2012 12:44 Dr. Coxxy#11
code ordentlich einrücken, dann seh ich vllt mal drüber und geb dir nen stups in die richtige richtung... - vielleicht.

EDIT:
und einheitlichen codestyle bitte.
01/22/2012 13:02 vitalka#12
Quote:
Originally Posted by Dr. Coxxy View Post
code ordentlich einrücken, dann seh ich vllt mal drüber und geb dir nen stups in die richtige richtung... - vielleicht.

EDIT:
und einheitlichen codestyle bitte.
bin absoluter c++ anfänger schreibe normal in c# daher happerts da noch ein wenig
01/23/2012 09:35 xNopex#13
Rückt man in C# jetzt nichtmehr ein?
01/23/2012 13:17 Dr. Coxxy#14
anscheinend nicht bei c&p code, der im forum wo er es her hat leider (aufgrund der unfähigkeit des urhebers code tags zu benutzen) seine einrückung verloren hat.