Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 16:42

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

Advertisement



Pointer in Script einbauen gefailt ?

Discussion on Pointer in Script einbauen gefailt ? within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
Pointer in Script einbauen gefailt ?

Hey Com,

Hab mal versucht in einen 0815 Hack Script den Pointer einzubauen,
jedoch ist es gefailt und wen ich jetzt auf den Button klicke , hat es keine Wirkung,meine Frage ist nun was habe ich falsch gemacht ?
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include<pointer.au3>
#RequireAdmin
SetPrivilege("SeDebugPrivilege"1)
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("******"30270192124)
GUISetIcon("C:\Program Files (x86)\****\******", -1)
$Checkbox1 GUICtrlCreateCheckbox("60"1689717)
$Checkbox2 GUICtrlCreateCheckbox("70"16409717)
$Button1 GUICtrlCreateButton("Do It!"136815349)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Button1
          $pid 
WinGetProcess("METIN2")
$openmem _MemoryOpen($pid)
$baseadress _MemoryModuleGetBaseAddress($pid,"metin2client.exe")
$testoffset1 "444" offset neben dem metin2client.bin
    $testoffset2 
"25E" ;das obere offset
    $testoffset3 
"0002B9D0" ;steht neben dem metin2client.bin+[wert]
    Global 
$AOffset[3]
$AOffset[0] = 0
$AOffset
[1] = Dec($testoffset1)
$AOffset[2] = Dec($testoffset2)
$Aaddress "0x" Hex($baseadress Dec($testoffset3))

EndSwitch
WEnd
Func _Hack
()
    
ToolTip ("warte auf Metin2" ,0,0)
    
$PID ProcessExists("metin2client.exe")
    
ProcessWait($PID)
    
ToolTip ("Metin2 wurde Indifiziert." ,0,0)
    
$OPEN _MemoryOpen($PID)
    If 
GUICtrlRead($Checkbox1) = 1 Then
    _MemoryWrite
(0x*****,$OPEN,60,"byte[2]")
EndIf

If 
GUICtrlRead($Checkbox2) = 1 Then
    _MemoryWrite
(0x*****,$OPEN,70,"byte[2]")
    EndIf
EndFunc 
MFG °Elite_Shooter
Copex™ is offline  
Old 07/01/2012, 18:16   #2
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Ich glaube ich trau meinen Augen nicht. Das ist der größte C&P Müll, den ich in meinem ganzen Leben gesehen habe. Ich guck mal was sich machen lässt und pack das Script dann nach einem Edit in den Anhang.

€: Tut mir leid, aber ich blick da erlich nicht durch.
Logtetsch is offline  
Old 07/01/2012, 18:19   #3
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
Ok , danke !

ich warte dann .
Copex™ is offline  
Old 07/01/2012, 18:21   #4
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Wie schon gesagt, blicke ich nicht hindurch. Wenn du mir den Pointer schickst, könnt ich das dann machen.
Logtetsch is offline  
Old 07/01/2012, 18:30   #5
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
Wie den Pointer ? meinst du nur den Script vom Pointer ?
Copex™ is offline  
Old 07/01/2012, 18:39   #6
 
-STORM-'s Avatar
 
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
Ich nehme an, du hast den Pointer mit CE gefunden.
Also einfach in CE Rechtsklick, Copy, und dann so hier einfügen.
-STORM- is offline  
Old 07/01/2012, 18:40   #7
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Hast du keinen Pointer? Du musst doch einen Pointer haben, damit das Script funktioniert. Der Pointer ist schätzungsweise 80% der Arbeit. Wenn du nicht ordentlich Pointer suchen kannst, kann ich dir auch nicht helfen.
Logtetsch is offline  
Old 07/01/2012, 18:48   #8
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
die Pointer habe ich mit CE gefunden , die stehen doch im Script , das Problem ist doch nur der aufbau des Scripts oder nicht ? =/.


Base Address .....................Offset0..Offset 1


"metin2client.exe"+0002B9D0... 444......25E
Copex™ is offline  
Old 07/01/2012, 18:55   #9
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Der Aufbau des Scripts ist kompletter Schrott und gehört aus dem Internet gelöscht.
Mach mal einen Screenshot von deinem Pointer, oder du machst es sowie -STORM- erwähnt hat und postest uns diesen.
Logtetsch is offline  
Old 07/01/2012, 18:57   #10
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
Base Address .....................Offset0..Offset 1


"metin2client.exe"+0002B9D0... 444......25E
Copex™ is offline  
Old 07/01/2012, 19:16   #11
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Hab mal schnell etwas gebastelt. Musst die Werte noch für dich anpassen.

PHP Code:
#region Abfrage
if ProcessExists ("metin2client.exe") = False Then
        MsgBox 
(64,"Error","Metin2 konnte nicht gefunden werden! Bitte starten sie Metin2")
        Do
            
Sleep (200)
        
Until ProcessExists ("metin2client.exe") = True
EndIf
#endregion

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Pointer.au3>
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Vorlage"18064192124)
$Button1 GUICtrlCreateButton("Change"45207525)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

#region Offsets
Global $Offset[3] = [00x4440x25E]
#endregion

#region Baseaddresse herausfinden
Global $Pid ProcessExists ("metin2client.exe")
Global 
$Open _MemoryOpen ($Pid)
Global 
$Baseaddresse _MemoryModuleGetBaseAddress ($Pid"metin2client.exe") + 0x0002B9D0
Global $Close _MemoryClose ($Open)
#endregion

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

        Case 
$Button1
            $Open 
_MemoryOpen ($Pid)
            
$WriteValue _MemoryPointerWrite ($Baseaddresse$Open$Offset"Dein Wert""Datentyp des Wertes ; Ist nicht unbedingt erzwingend")
            if @
error False Then
                MsgBox 
(0,"","Wert wurde erfolgreich geändert!")
            EndIf
            
$Close _MemoryClose ($Open)

    EndSwitch
WEnd 
Logtetsch is offline  
Thanks
1 User
Old 07/01/2012, 19:39   #12
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
Ok , vielen danke <3

auch dafür das du mich ertragen musstest xD ^^
Copex™ is offline  
Old 07/01/2012, 19:55   #13
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Mal wieder nur kopiert... Natürlich auch vom erst besten Müll, der dir in die Augen sprang.

Das einzige was richtig funktioniert ist die von Koda erzeugte GUI. Der Rest ist einfach nur unbrauchbar.
Fangen wir mal bei den ersten selbst geschrieben Zeilen an:
Code:
$pid = WinGetProcess("METIN2")
$openmem = _MemoryOpen($pid)
$baseadress = _MemoryModuleGetBaseAddress($pid,"metin2client.exe")
Was ist hier falsch? Im Grunde nichts, dennoch furchtbar schlecht. Bevor du in diesem Fall die Variable $pid verwendest solltest du vorher entweder prüfen, ob das Fenster "METIN2" vor dem Funktionsaufruf WinGetProcess() existiert, oder der Wert der Variable > -1 ist (besser).
Bevor du das Handle benutzt, welches von _MemoryOpen() zurück gegeben wird, solltest du auch prüfen, ob es gültig ist. Dafür kannst du einfach das Makro "@error" verwenden. Tritt kein Fehler bei der Durchführung von _MemoryOpen() auf bekommst du auch ein gültiges Handle.


Code:
$testoffset1 = "444" ; offset neben dem metin2client.bin
$testoffset2 = "25E" ;das obere offset
$testoffset3 = "0002B9D0" ;steht neben dem metin2client.bin+[wert]
Global $AOffset[3]
$AOffset[0] = 0
$AOffset[1] = Dec($testoffset1)
$AOffset[2] = Dec($testoffset2)
$Aaddress = "0x" & Hex($baseadress + Dec($testoffset3))
Unnötige Variablen zu verwenden ist immer schlecht. Für diese wird Platz im Arbeitsspeicher reserviert. Mehr unnötige Variablen bedeuten also, dass unnötiger Weise nutzlos Speicher reserviert wird.
Die Offsets als Text zu verwenden um diese anschließend mittels Funktion in ein brauchbares "Format" zu bringen ist auch sinnlos, du kannst die Offsets gleich als Hexadezimalzahl angeben (z. B. $Offset = 0x666).


Code:
ToolTip ("warte auf Metin2" ,0,0)
$PID = ProcessExists("metin2client.exe")
ProcessWait($PID)
ToolTip ("Metin2 wurde Indifiziert." ,0,0)
$OPEN = _MemoryOpen($PID)
Gut gedacht, dass war es dann aber schon. Das Script funktioniert so zwar wenn der Prozess schon läuft, wird dieser nach dem Script gestartet funktioniert es nicht.
Du lässt dir zuerst die Prozess ID zurück geben. Existiert der Prozess zu dieser Zeit nicht, erhältst du den Rückgabewert 0. Anschließend möchtest du auf einen einen Prozess warten, der nie gestartet wird. Zumindest in der Theorie. ProcessWait() akzeptiert als Parameter keine Prozess ID, du musst den Namen angeben, den du bei ProcessExists() verwendet hast.
Richtig, dennoch schlecht und nicht empfehlenswert, wäre es so:
Code:
$PID = ProcessWait("metin2client.exe")
Beim Handle (sprich $OPEN) wieder das selbe wie oben schon erklärt.


Code:
If GUICtrlRead($Checkbox1) = 1 Then
_MemoryWrite(0x*****,$OPEN,60,"byte[2]")
Erst einmal möchte ich anmerken: Ganz schön egoistisch... Hilfe erwarten, aber relevantes, was anderen evtl. helfen könnte, zu entfernen. Dabei beziehe ich mich mal auf die Adresse. Außerdem kommt es sowieso nicht vor, dass jemand die Adresse aus deinem Script gefunden hätte, deshalb ist es meiner Meinung nach nicht nur egoistisch sondern auch noch banal. Egal.
"=" ist eigentlich ein Zuweisungsoperator, zum vergleichen sollte man "==" verwenden. Bei AutoIt nicht weiter tragisch, dennoch sollte man es sich ruhig angewöhnen.
Ich kenne mich mit Metin überhaupt nicht aus, betrachte es also als Frage.
Möchtest du wirklich ein "byte" Array der Größe 2 ändern, oder ist die Adresse zwei Byte groß? Wenn letztes zutreffen würde, müsstest du hier "short" bzw. "WORD" verwenden.

Zu guter Letzt sollte man noch erwähnen, dass du die Funktion "_Hack" nie aufrufst, also unnötiger Code. Selbes trifft auf den Pointer, da du ihn nicht verwendest.


Ich habe mit den Infos aus deinem Script mal folgendes gebastelt:
Da der Pointer nicht verwendet wurde, habe ich statt _MemoryWrite() einfach mal _MemoryPointerWrite() mit dem Pointer verwendet.


Logtetschs Lösung zeigt auch ein paar Mängel (mein Lösungsvorschlag gefällt mir nebenbei bemerkt selber nicht), aber das spare ich mir jetzt mal.
KDeluxe is offline  
Thanks
3 Users
Old 07/02/2012, 07:19   #14
 
Copex™'s Avatar
 
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
bitte einmal einen Post vorher schauen , wurde schon gelöst , aber ein thanks bekommst du für deine Mühe.
Copex™ is offline  
Old 07/02/2012, 07:58   #15
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Das ist mir durchaus bewusst, ich habe das Script von Logtetsch gesehen. Den Grund warum, ich dennoch geantwortet habe, kannst du dem letzten Satz entnehmen.
Einfaches kopieren bringt außerdem nicht wirklich viel, ich habe alle Fehler einzeln angeschrieben und etwas dazu gesagt, was für Lernzwecke auf jeden Fall besser sein dürfte.
KDeluxe is offline  
Reply


Similar Threads Similar Threads
Script frage ( POINTER )
04/20/2011 - AutoIt - 0 Replies
habe jetzt den script bis jetzt killerdeluxe hatte schon etwas verbessert doch wenn ich den wer von unbesiegbarkeit (god ) freeze geht das programm zu #RequireAdmin #Include <NomadMemory.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3>
Pointer Einbauen Geht nicht Brauche Hilfe !!!
08/10/2010 - AutoIt - 9 Replies
Hallo Erst mal Ich versuch grad ein hack für 4story DE zu machen aber ich schaf es nicht mit den Pointer hab alle Pointer Gescuht und gefunden aber weis nicht wie ich die einbaue kan jemand helfen wäre sehr Nett #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <NomadMemory.au3> #include <StaticConstants.au3>
Lvl-Begrenzung einbauen? Hilfe bitte Script-Profis!
07/02/2010 - Metin2 Private Server - 3 Replies
Hey Com, wie baue ich in einen Quest von einem Event-Map-Porter eine lvl-Begrenzung ein,das der npc dann z.B. sagt du bist zu niedrig komm wieder wenn du 85 bist oder so ähnlich..oder zweite möglichkeit das man den Npc vorher nicht anklicken kann. Hier mein Quest: quest ***** begin state start begin when login or levelup with pc.level >0 begin set_state(tanaka) end end
AutoIt Script in Button einbauen?
06/09/2010 - AutoIt - 5 Replies
Hey, nach langer Zeit wollt ich wieder mit AutoIt hantieren hab aber leider keine Ahnung mehr wie ich z.B. nen RunScript in nen Button einbaue. bitte um Hilfe! >_< Froce
Pointer Script...
03/06/2008 - Kal Online - 10 Replies
Also will nen pointer script machen ^^ alloc(check,32) check: mov eax, mov eax,



All times are GMT +1. The time now is 16:43.


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.