|
You last visited: Today at 16:42
Advertisement
Pointer in Script einbauen gefailt ?
Discussion on Pointer in Script einbauen gefailt ? within the AutoIt forum part of the Coders Den category.
07/01/2012, 17:50
|
#1
|
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("******", 302, 70, 192, 124) GUISetIcon("C:\Program Files (x86)\****\******", -1) $Checkbox1 = GUICtrlCreateCheckbox("60", 16, 8, 97, 17) $Checkbox2 = GUICtrlCreateCheckbox("70", 16, 40, 97, 17) $Button1 = GUICtrlCreateButton("Do It!", 136, 8, 153, 49) 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
|
|
|
07/01/2012, 18:16
|
#2
|
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.
|
|
|
07/01/2012, 18:19
|
#3
|
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
|
Ok , danke !
ich warte dann .
|
|
|
07/01/2012, 18:21
|
#4
|
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.
|
|
|
07/01/2012, 18:30
|
#5
|
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
|
Wie den Pointer ? meinst du nur den Script vom Pointer ?
|
|
|
07/01/2012, 18:39
|
#6
|
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.
|
|
|
07/01/2012, 18:40
|
#7
|
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.
|
|
|
07/01/2012, 18:48
|
#8
|
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
|
|
|
07/01/2012, 18:55
|
#9
|
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.
|
|
|
07/01/2012, 18:57
|
#10
|
elite*gold: 37
Join Date: Nov 2011
Posts: 935
Received Thanks: 480
|
Base Address .....................Offset0..Offset 1
"metin2client.exe"+0002B9D0... 444......25E
|
|
|
07/01/2012, 19:16
|
#11
|
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", 180, 64, 192, 124) $Button1 = GUICtrlCreateButton("Change", 45, 20, 75, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
#region Offsets Global $Offset[3] = [0, 0x444, 0x25E] #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
|
|
|
07/01/2012, 19:39
|
#12
|
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 ^^
|
|
|
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:
Code:
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <Pointer.au3>
GUICreate("Bla", 100, 60)
$Rad_Value60 = GUICtrlCreateRadio("60", 5, 5, 40, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Rad_Value70 = GUICtrlCreateRadio("70", 55, 5, 40, 17)
$Btn_Start = GUICtrlCreateButton("Start", 5, 30, 90, 25)
GUISetState()
Dim $bHack = False, $dwBase = 0, $dwStaticBase = 0x2B9D0
Dim $dwOffset[3] = [0, 0x444, 0x25E]
While Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Btn_Start
$bHack = Not $bHack
If $bHack Then
GUICtrlSetData($Btn_Start, "Stop")
Else
GUICtrlSetData($Btn_Start, "Start")
EndIf
EndSwitch
If $bHack Then
$dwProcessId = ProcessExists("metin2client.exe")
If $dwProcessId > 0 Then
If $dwBase == 0 Then
$dwBase = _MemoryModuleGetBaseAddress($dwProcessId,"metin2client.exe")
If $dwBase > 0 Then $dwBase += $dwStaticBase
EndIf
$Handle = _MemoryOpen($dwProcessId)
If Not @error Then
If $dwBase > 0 Then
If GUICtrlRead($Rad_Value60) == $GUI_CHECKED Then
_MemoryPointerWrite($dwBase, $Handle, $dwOffset, 60, "WORD")
Else
_MemoryPointerWrite($dwBase, $Handle, $dwOffset, 70, "WORD")
EndIf
EndIf
_MemoryClose($Handle)
EndIf
EndIf
EndIf
WEnd
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.
|
|
|
07/02/2012, 07:19
|
#14
|
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.
|
|
|
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.
|
|
|
 |
|
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.
|
|