Bot für crossfire

07/25/2010 10:11 --BUG--#1
Hallo,

ich habe vor mir einen bot für crossfire zu machen, der die ganze zeit herumläuft. Da crossfire directinput benutzt funktionieren die einfachen bots mit key sends nicht. Ich glaube man sollte sendinput verwenden.

Meine fragen:
Wie bekomme ich genau den focus für crossfire heraus?
Wie functioniert der sendinput befehl ( mit taste drücken und loslassen) ?

Wäre nett wenn mir jemand weiterhelfen könnte.
07/26/2010 10:58 Cholik#2
#moved
07/26/2010 13:16 scenebase#3
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Damit hast du dann schon mal zugriff auf den Process und SendInput() könntest du dann auch ausführen eigentlich.
07/26/2010 17:35 --BUG--#4
hi Rhilor,
wie kann ich denn bei den Windows funktionen klar machen auf welches programm ich eingreifen möchte ?

zB:
HWND WINAPI FindWindow(
__in_opt LPCTSTR lpClassName,
__in_opt LPCTSTR lpWindowName
);

wie kann ich bestimmen welches fenster gefunden werden soll ?
07/26/2010 20:29 Nektarius#5
hi ich habe es mal so versucht aber es geht nicht.
kann mir jemand bitte sagen was ich falsch gemacht habe ?

#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <time.h>


HWND hwnd;
hwnd = FindWindow(NULL,L"CrossFire");
hwnd = SW_MAXIMIZE(NULL,L"CrossFire");
SetForegroundWindow(hwnd);
SetActiveWindow(hwnd);

HANDLE WINAPI OpenProcess(NULL,L"CrossFire"
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId
);



int main()
{
INPUT InputData;
int iEvents;

InputData.type = INPUT_KEYBOARD;
InputData.ki.wVk = 0x48;
InputData.ki.wScan = 35;
InputData.ki.dwFlags = 0;
InputData.ki.time = time(NULL);
InputData.ki.dwExtraInfo = 0;

iEvents = SendInput(1, &InputData, sizeof(InputData));

return 0;
}
07/26/2010 21:04 scenebase#6
Quote:
Originally Posted by Nektarius View Post
hi ich habe es mal so versucht aber es geht nicht.
kann mir jemand bitte sagen was ich falsch gemacht habe ?

#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <time.h>


HWND hwnd;
hwnd = FindWindow(NULL,L"CrossFire");
hwnd = SW_MAXIMIZE(NULL,L"CrossFire");
SetForegroundWindow(hwnd);
SetActiveWindow(hwnd);

HANDLE WINAPI OpenProcess(NULL,L"CrossFire"
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId
);



int main()
{
INPUT InputData;
int iEvents;

InputData.type = INPUT_KEYBOARD;
InputData.ki.wVk = 0x48;
InputData.ki.wScan = 35;
InputData.ki.dwFlags = 0;
InputData.ki.time = time(NULL);
InputData.ki.dwExtraInfo = 0;

iEvents = SendInput(1, &InputData, sizeof(InputData));

return 0;
}
So holst du dir das HWND:
Code:
HWND hwnd = FindWindow(NULL, "ICQ");
So holst du dir die PID(vorher deklariert["DWORD pid"]):
Code:
GetWindowThreadProcessId(hwnd,&pid);
So öffnest du den Process:
Code:
HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
07/26/2010 23:15 P-a-i-n#7
ich bin mir sicher da wird dir xtrap den arschversohlen ohne bypass ;)
07/27/2010 11:10 scenebase#8
ja um den bypass muss er sich schon selbst kümmern :D
07/27/2010 13:35 Nektarius#9
was ist überhaupt ein bypass und was bringt der?

Rhior, das was du in meinem code rot gemacht hast soll ich weglassen ?
wie soll ich den pid vorher deklarieren ?
07/27/2010 20:58 --BUG--#10
hi
wie deklariert man denn die paramteter ?

HANDLE WINAPI OpenProcess(NULL,L"CrossFire"
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId
);
07/27/2010 21:34 scenebase#11
Code:
HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
Am besten mal:
[Only registered and activated users can see links. Click Here To Register...] lesen dann verstehst du es bestimmt.
07/30/2010 18:25 Nektarius#12
muss ich dann dein speicher von crossfire auslesen und dann verändern oder halt schreiben? Wenn dass so ist muss ich dann das mit directinput da reinschreiben ?
Und wie sag ich dem was es schreiben soll ?
Code:

int main(void)
{
HWND hWnd;
HANDLE hproc;
DWORD procid;
DWORD rw = 0;

unsigned adress = 0x00409040;
int buffer = 0;

hWnd = FindWindow(0,"Opfer");
if(!hWnd)
return 0;

GetWindowThreadProcessId(hWnd, &procid);

hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);

if(ReadProcessMemory(hproc,(LPCVOID)adress,&buffer ,
sizeof(buffer),&rw))
{
cout << "Lesen erfolgreich\n";
cout << buffer << endl;
}
buffer++;

if(WriteProcessMemory(hproc,(LPVOID)adress,&buffer ,
sizeof(buffer),&rw))
{
cout << "Schreiben erfolgreich\n";
}

CloseHandle(hproc);//<-- Wichtig!
return 0;
}