Register for your free account! | Forgot your password?

You last visited: Today at 04:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



LC Bot

Discussion on LC Bot within the General Coding forum part of the Coders Den category.

Reply
 
Old   #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
freaktonx is offline  
Thanks
2 Users
Old 07/25/2010, 09:23   #2
 
HardCore.1337's Avatar
 
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;
HardCore.1337 is offline  
Thanks
1 User
Old 07/25/2010, 11:59   #3
 
vst0rm's Avatar
 
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 at0x74c47d79
[+] Hook set continuing process.
[*] 
hWnd28020400  wParam09000000  lParam01000f00        ## TAB ##
[*] hWnd28020400  wParam70000000  lParam01003b00        ## F1 ##
[*] hWnd28020400  wParam71000000  lParam01003c00        ## F2 ##
[*] hWnd28020400  wParam72000000  lParam01003d00        ## 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 hWndWPARAM wParamLPARAM lParam)
{
        
PostMessage(hWndWM_KEYDOWNwParamlParam );
        
Sleep(100);
        
PostMessage(hWndWM_KEYUPwParamlParam);
        
cout <<"Send key"<<endl;    
}



int main()
{


HWND hWnd FindWindowA("Nksp"NULL);


if(
hWnd)
{
    while(
true)
    {
        
SendKey(hWndVK_TAB0);
        
Sleep(1000);
        
SendKey(hWndVK_F10x3b0001);
    }
}

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
vst0rm is offline  
Old 07/25/2010, 13:52   #4
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 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.
freaktonx is offline  
Old 07/25/2010, 15:35   #6
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 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
freaktonx is offline  
Old 07/25/2010, 17:22   #8
 
vst0rm's Avatar
 
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(SenderTObject);
var 
cHWnd;
KeyWord;
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
(cWM_KEYDOWNKey0); 
     
sleep(100); //Evt. hinabsetzen
     
PostMessage(cWM_KEYUPKey0);// 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 ^^
vst0rm is offline  
Old 07/25/2010, 17:38   #9
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 07/25/2010, 18:24   #10
 
vst0rm's Avatar
 
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 ^^
vst0rm is offline  
Old 07/25/2010, 18:44   #11
 
HardCore.1337's Avatar
 
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.
HardCore.1337 is offline  
Old 07/25/2010, 19:59   #12
 
vst0rm's Avatar
 
elite*gold: 0
Join Date: Jul 2010
Posts: 56
Received Thanks: 12
Quote:
Originally Posted by HardCore.1337 View Post
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 ;
    
BYTE AltDown ;
    
BYTE Repeat ;
    
BYTE Up ;

KEYSTROKE;


typedef struct _PARAM
{
    
WPARAM wParam;
    
LPARAM lParam;
PARAM;


void SendKey(HWND hWndPARAM param)
{  
    
PostMessage(hWndWM_KEYDOWNparam.wParamparam.lParam );
    
Sleep(100);
    
PostMessage(hWndWM_KEYUPparam.wParamparam.lParam);
    
cout <<"Send \t wParam: "<<hex<<param.wParam<<" \t lParam: "<<param.lParam<<endl;    
}


void FillParam(int vkPARAM &param)
{
    
KEYSTROKE sKey;
    
memset ( &sKey sizeof KEYSTROKE ) ) ;
    
sKey.Repeat 1;
    
sKey.ScanCode = (BYTE)MapVirtualKey vk ) ;
    
sKey.ExtendedKey ;
    
sKey.AltDown ;
    
sKey.Repeat ;
    
sKey.Up ;

    
param.wParam vk;
    
memcpy ( &param.lParam, &sKey sizeof DWORD ) ) ;

}


 



int main()
{

    
PARAM pF1pTabpW;

    
FillParam(VK_F1pF1);
    
FillParam(VK_TABpTab);
    
//FillParam(VkKeyScan('w'), pW);
    
    


HWND hWnd FindWindowA("Nksp"NULL);


if(
hWnd)
{
    while(
true)
    {
        
SendKey(hWndpTab);
        
Sleep(1000);
        
SendKey(hWndpF1);
        
//SendKey(hWnd, pW);
        

    
}
}

cin.get();

return 
0;

und hier noch paar Infos dazu wenns wen interessiert ;-)
vst0rm is offline  
Thanks
2 Users
Old 07/26/2010, 07:35   #13
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Danke.
Funktioniert bei mir ebenfalls.
HardCore.1337 is offline  
Old 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
freaktonx is offline  
Old 07/26/2010, 19:49   #15
 
vst0rm's Avatar
 
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
vst0rm is offline  
Reply




All times are GMT +1. The time now is 04:48.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.