|
You last visited: Today at 04:47
Advertisement
LC Bot
Discussion on LC Bot within the General Coding forum part of the Coders Den category.
07/25/2010, 00:58
|
#1
|
elite*gold: 0
Join Date: Aug 2009
Posts: 13
Received Thanks: 2
|
LC Bot
Hey Leute,
ich bin gerade einen Bot für Last Chaos zu schreiben. Die ganzen Hacks wie Speedhack, Reichweite und Maphack habe ich schon funktioniert auch schon. Nur habe ich ein ganz großes Problem! Wenn ich versuche einen Tastendruck zu simulieren, damit z.B. die Selbstheilung einsetzt, passiert nichts. Kennt sich jemand mit Delphi aus und kann mir da helfen? Hier mal der Source mit dem ich das versucht habe:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var c: THandle;
begin
c:=FindWindow(nil,'LastChaos - Gamigo (Window 1024x768)');
if c<> 0 then
begin
c:=FindWindowEx(c,0,'ViewPort Window',nil);
if c<>0 then
begin
PostMessage(c, WM_KEYDOWN, 73, 1); // Tastendruck simulieren
end;
end;
end;
Ich bin für jede Hilfe dankbar.
gruß freaktonx
|
|
|
07/25/2010, 09:23
|
#2
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Code:
procedure TForm1.Button1Click(Sender: TObject);
var c, d: HWnd;
begin
c:= FindWindow(nil,'LastChaos - Gamigo (Window 1024x768)');
if c<> 0 then
begin
d:=FindWindowEx(c,0,'ViewPort Window',nil);
if d<>0 then
begin
PostMessage(d, WM_KEYDOWN, $73, 0);
sleep(100); //Evt. hinabsetzen
PostMessage(d, WM_KEYUP, $73, 0);// Tastendruck simulieren
end;
end;
end;
Besser noch mit VKKeyScan arbeiten.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var c, d: HWnd;
Key: Word;
begin
Key := VKKeyScan('I');
c:= FindWindow(nil,'LastChaos - Gamigo (Window 1024x768)');
if c<> 0 then
begin
d:=FindWindowEx(c,0,'ViewPort Window',nil);
if d<>0 then
begin
PostMessage(d, WM_KEYDOWN, Key, 0);
sleep(100); //Evt. hinabsetzen
PostMessage(d, WM_KEYUP, Key, 0);// Tastendruck simulieren
end;
end;
end;
|
|
|
07/25/2010, 11:59
|
#3
|
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
|
kenn mich zwar nicht mit Delphi aus aber ich versuchs mal
am besten hookt man z.B. TranslateMessage um die parameter zu vergleichen
PHP Code:
[+] Attaching nksp.exe with PID 4060
[+] user32.dll.TranslateMessage hooked at: 0x74c47d79
[+] Hook set continuing process.
[*] hWnd: 28020400 wParam: 09000000 lParam: 01000f00 ## TAB ##
[*] hWnd: 28020400 wParam: 70000000 lParam: 01003b00 ## F1 ##
[*] hWnd: 28020400 wParam: 71000000 lParam: 01003c00 ## F2 ##
[*] hWnd: 28020400 wParam: 72000000 lParam: 01003d00 ## F3 ##
das ganze dann in c/c++ ...(kann leider kein Delphi aber sollte leicht sein es zu portieren)
PHP Code:
#include <Windows.h>
#include <iostream>
using namespace std;
void SendKey(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
PostMessage(hWnd, WM_KEYDOWN, wParam, lParam );
Sleep(100);
PostMessage(hWnd, WM_KEYUP, wParam, lParam);
cout <<"Send key"<<endl;
}
int main()
{
HWND hWnd = FindWindowA("Nksp", NULL);
if(hWnd)
{
while(true)
{
SendKey(hWnd, VK_TAB, 0);
Sleep(1000);
SendKey(hWnd, VK_F1, 0x3b0001);
}
}
cin.get();
return 0;
}
bei manchen Tasten kann man lParam auf 0 setzen
ich weiß es gibt mit sicherheit ne einfachere Methode als die zeichen als hex values zu übergeben
arbeite normal nicht oft mit PostMessage bin darum für verbesserungen offen ;-)
## EDIT ##
oki das mit dem Handel hab ich mal geändert und hab jetzt auch die definierten Virtual keys verwendet.
Bleibt nur noch der lParam den man nicht immer auf 0 setzen kann.
Die Antwort dürfte hier stehen
|
|
|
07/25/2010, 13:52
|
#4
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Eine Möglichkeit, die der Geschwindigkeit hilft, wäre das Handle nur einmal zu holen anstatt bei jedem Funktionsaufruf.
|
|
|
07/25/2010, 14:39
|
#5
|
elite*gold: 0
Join Date: Aug 2009
Posts: 13
Received Thanks: 2
|
@HardCore.1337
Ich habe es mal mit deinem Code versucht aber da passiert auch nichts leider.
@vst0rm
Ich habe keine Ahnung wie ich das in Delphi schreiben soll.  HardCore.1337 vielleicht kannst du mir da ein bisschen helfen.
|
|
|
07/25/2010, 15:35
|
#6
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
mhh
und so?
Code:
procedure TForm1.Button1Click(Sender: TObject);
var c: HWnd;
Key: Word;
begin
Key := VKKeyScan('I');
c:= FindWindow(nil,'LastChaos - Gamigo (Window 1024x768)');
if c<> 0 then
begin
PostMessage(c, WM_KEYDOWN, Key, 0);
sleep(100); //Evt. hinabsetzen
PostMessage(c, WM_KEYUP, Key, 0);// Tastendruck simulieren
end;
end;
Es kann aber auch sein das ein AntiCheat Schutz das Handle blockt.
|
|
|
07/25/2010, 15:53
|
#7
|
elite*gold: 0
Join Date: Aug 2009
Posts: 13
Received Thanks: 2
|
Mh so gehts auch nicht.
Quote:
|
Es kann aber auch sein das ein AntiCheat Schutz das Handle blockt.
|
Dann müsste ja aber "Handle=0" sein oder?
gruß freaktonx
|
|
|
07/25/2010, 17:22
|
#8
|
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
|
versuch das mal kanns leider nicht testen und kann auch kein Delphi hab nur
die Windos API funktionen angepasst ...
PHP Code:
procedure TForm1.Button1Click(Sender: TObject);
var c: HWnd;
Key: Word;
begin
Key := VK_TAB; // wenn das fehler gibt dann die nächste zeile versuchen
//Key := 0x09 // oder wie man hex values auch immer bei Delphi schreibt
c:= FindWindow('Nksp',nil);
if c<> 0 then
begin
PostMessage(c, WM_KEYDOWN, Key, 0);
sleep(100); //Evt. hinabsetzen
PostMessage(c, WM_KEYUP, Key, 0);// Tastendruck simulieren
end;
end;
PS:
LC hat meines wissens kaum Schutz gegen solche Sachen, zumindest hab ich noch nix davon bemerkt xD ... man hat so gut wie freie Hand ^^
|
|
|
07/25/2010, 17:38
|
#9
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Wäre eine Idee, doch VKKeyScan ist schon richtig.
Den Titel als Class zu übergeben ist aber wirklich eine gute Idee.
|
|
|
07/25/2010, 18:24
|
#10
|
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
|
joa ich habs so (c/c++) zum laufen gebracht.
Das Problem ist nur das man nicht bei jeder Taste lParam auf 0 setzen kann,
hab mir das aber noch nicht so genau angesehen warum das nicht geht.
VK_TAB sollte (jedenfallst bei mir so) mit lParam auf 0 gehen
Bis jetzt bekomme ich lParam immer durch einen hook auf TranslateMessage raus, was aber nur ne Notlösung ist ...
Wenn wer ne Lösung dafür hat wäre nett sie hier zu posten ^^
|
|
|
07/25/2010, 18:44
|
#11
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Also ich kann bestätigen, das die tasten von A-Z mit einem lparam von 0 funktionieren.
|
|
|
07/25/2010, 19:59
|
#12
|
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
|
Quote:
Originally Posted by HardCore.1337
Also ich kann bestätigen, das die tasten von A-Z mit einem lparam von 0 funktionieren.
|
hmm bei Last Chaos germany ?
habs grade noch mal getestet hier die ausgabe des hooks
Quote:
C:\eclipse\workspace\sortdata\src>python nksp-debug.py
[+] Attaching nksp-new.exe with PID 2720
[+] user32.dll.TranslateMessage hooked at: 0x74c47d79
[+] Hook set continuing process.
[*] hWnd: e8090400 wParam: 57000000 lParam: 00000000
[*] hWnd: e8090400 wParam: 57000000 lParam: 00000000
[*] hWnd: e8090400 wParam: 57000000 lParam: 00000000
[*] hWnd: e8090400 wParam: 57000000 lParam: 00000000
C:\eclipse\workspace\sortdata\src>python nksp-debug.py
[+] Attaching nksp-new.exe with PID 2720
[+] user32.dll.TranslateMessage hooked at: 0x74c47d79
[+] Hook set continuing process.
[*] hWnd: e8090400 wParam: 57000000 lParam: 01001100
[*] hWnd: e8090400 wParam: 57000000 lParam: 01001100
[*] hWnd: e8090400 wParam: 57000000 lParam: 01001100
[*] hWnd: e8090400 wParam: 57000000 lParam: 01001100
C:\eclipse\workspace\sortdata\src>
|
erster aufruf ist die Übergabe mit einem Programm (PostMessage) und lParam auf 0 ... keine reaktion im spiel
zweiter aufruf ist normal über Tastatur eingegeben ... und dann ging es
Ich werd mal das ganze weiter verfolgen, wenn ich näheres weiss poste ich es hier rein ^^
## EDIT ##
Hab ne Lösung gefunden
PHP Code:
#include <iostream>
#include <Windows.h>
using namespace std;
typedef struct _KEYSTROKE
{
WORD KeyRepeatCount ;
BYTE ScanCode ;
BYTE ExtendedKey ;
BYTE Reserved : 4 ;
BYTE AltDown : 1 ;
BYTE Repeat : 1 ;
BYTE Up : 1 ;
} KEYSTROKE;
typedef struct _PARAM
{
WPARAM wParam;
LPARAM lParam;
} PARAM;
void SendKey(HWND hWnd, PARAM param)
{
PostMessage(hWnd, WM_KEYDOWN, param.wParam, param.lParam );
Sleep(100);
PostMessage(hWnd, WM_KEYUP, param.wParam, param.lParam);
cout <<"Send \t wParam: "<<hex<<param.wParam<<" \t lParam: "<<param.lParam<<endl;
}
void FillParam(int vk, PARAM ¶m)
{
KEYSTROKE sKey;
memset ( &sKey , 0 , sizeof ( KEYSTROKE ) ) ;
sKey.Repeat = 1;
sKey.ScanCode = (BYTE)MapVirtualKey ( vk , 0 ) ;
sKey.ExtendedKey = 0 ;
sKey.AltDown = 0 ;
sKey.Repeat = 0 ;
sKey.Up = 0 ;
param.wParam = vk;
memcpy ( ¶m.lParam, &sKey , sizeof ( DWORD ) ) ;
}
int main()
{
PARAM pF1, pTab, pW;
FillParam(VK_F1, pF1);
FillParam(VK_TAB, pTab);
//FillParam(VkKeyScan('w'), pW);
HWND hWnd = FindWindowA("Nksp", NULL);
if(hWnd)
{
while(true)
{
SendKey(hWnd, pTab);
Sleep(1000);
SendKey(hWnd, pF1);
//SendKey(hWnd, pW);
}
}
cin.get();
return 0;
}
und hier noch paar Infos dazu wenns wen interessiert ;-)
|
|
|
07/26/2010, 07:35
|
#13
|
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
|
Danke.
Funktioniert bei mir ebenfalls.
|
|
|
07/26/2010, 17:44
|
#14
|
elite*gold: 0
Join Date: Aug 2009
Posts: 13
Received Thanks: 2
|
Hey,
vst0rm der code den du gepostet hast funktioniert auch nicht.  Ich kenne mich leider mit C++ überhaupt nicht aus und in Delphi bin ich auch kein pro deshalb wäre es total nett wenn mir einer erklären könnte wie ich den code von die von C++ in Delphi umschreiben kann.
P.s. Ich finde es total toll wie ihr euch damit beschäftigt um jemanden in diesem Forum weiter zu helfen. Thx
gruß freaktonx
|
|
|
07/26/2010, 19:49
|
#15
|
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
|
Quote:
|
P.s. Ich finde es total toll wie ihr euch damit beschäftigt um jemanden in diesem Forum weiter zu helfen. Thx
|
Hab mich auch damit gerade beschäftigt ... dachte mir, dann kann ich auch meine Ergebnisse hier teilen ;-)
Warum das bei dir nicht geht weiss ich grade nicht.
Ich hab mal den TranslateMessage Hook zu ner .exe datei gemacht und hoch geladen. Dann kannst ja mal gucken
in wie weit dein Programm und die normale Tastatureingabe sich unterscheiden
Der Hook gibt [ hWnd , wParam und lParam ] aus bei jedem mal wenn eine KEYDOWN message an Nksp.exe übergeben wird
|
|
|
All times are GMT +1. The time now is 04:48.
|
|