Autoit nomadmemory.au3

03/01/2013 14:07 xcyancali#1
Moin,

Ich möchte mal in Autoit was neues machen & habe mir mal die UDF Nomadmemory angeschaut, finde ich echt super :)

Mein Test spiel ist Solitair.

Mein bisheriges Spiel sied so aus:

Code:
#RequireAdmin
#include <NomadMemory.au3>
$adresse1 = 0x0088A2B4
$PID = ProcessExists("Solitaire.exe")

$OPEN = _MEMORYOPEN($PID)

_MEMORYWRITE($adresse1, $OPEN,"10", "Byte")
MsgBox(0,"","")
Wenn ich das Spiel neu starte, ändert sich ja die Adresse.
Gibt es also irgendeine Formel um die Adresse wieder rauszufinden?

Mfg,
xCyancali
03/01/2013 14:36 YatoDev#2
du musst den pointer oder wie das auch heißt rausfinden such mal nach nem cheat engine tutorial
03/01/2013 14:48 xcyancali#3
Quote:
du musst den pointer oder wie das auch heißt rausfinden such mal nach nem cheat engine tutorial
Wenn ich nach den Pointern suche, stürzt mein Pc ab, also Bluescreen ://
03/01/2013 14:50 YatoDev#4
du kannst den pointer auch bekommen in dem du scannst : adressen nimmst , value hat sich im spiel geändert (nicht durch dich ) scannen dann was da gleich bleibt an adressen . Ich weiß net ob das richtig ist aber müsste gehen
03/01/2013 15:02 xcyancali#5
ah okay, habe jetzt ein par adressen.
Baseadress: "solitaire.exe"+000BB038
Offset 0: 30
Offset 1: 5B4
Points to: 000AE194
wenn ich jetzt die Base Adresse nehme (000BB038) passiert nichts im Script.
03/01/2013 15:09 YatoDev#6
wohl eher die dann oder nicht ? 000AE194 dann versuch nochmal neu die adresse müsste ja wieder da sein
03/01/2013 16:15 xcyancali#7
ah, mir ist was aufgefallen.
A2B4 bleibt immer, nur die 4 nummern davor ändern sich immer, wie schaff ich das jetzt, dass ich jetzt die nummern rausfinde?
03/02/2013 16:04 butter123#8
mit basepointern funktioniert das so:

du hast eine statische adresse die sich nicht verändert. die hat einen wert z.b. 123. also ist die nächste adresse die wir auslesen 123 + einen offset, bspw 124. also ließt man dann 124 aus. das geht dann so lange weiter bis man die eigentliche adresse hat, in der der gesuchte wert steht. ich glaube es gibt auch eine funktion, in die du einfach nur baseadress und die offsets eingibst und die liefert dir dann den wert den du haben willst. weiß den namen aber grad nciht.
03/02/2013 16:51 snow21#9
hier ein bsp für pointer

kleine geschichte
du bist von einem auto angefahren worden und hast dein gedächtniss verloren. du kennst nichts wie den ort wo du gerade aufgewacht bist.

so sieht das auch mit den pointern aus.
du hast einen wert aber kennst nicht dein zuahuse / den weg zum basepointer (dein zuhause / deinen wert)
jetzt gehst du auf die suche nach dem wert der nicht nur eine adresse/ziel hat.

du suchst nach offset hinweisen (adressen) die dich zum ziel bringen.


du hast als bsp den wert 000AE194
das ist aber ein wert der verloren geht nach dem neustart des spiels.

also ist 000AE194 dein einstigspunkt da wo du im krankenhaus wach wirst ^^

jetzt gehst du auf die suche nach hinweisen
1 adresse die man dir nennt ist 0xff als bsp aber du bekommst noch nicht den richtigen hinweis also merken wir uns schon mal "0xFF" 0xFF sagt uns ja das der hinweiss 255 stellen verschoben ist. jetzt wissen wir das 000AE194+255/0xff(dec/hex) ist immer das gleiche) verschoben ist. der wert der bei 000AE194+255 raus kommst suchen wir als nächtest. also rechnen wir mit cheatengine die werte zusammen.

nachher sieht das dann ca. so aus

000AE194 + 0xff + 0xa20 + 0xhf3 + 0x22f = dein gesuchter wert / dein zuhause
hier sieht man das man auch hinweisen folgen muss und den wert den man gefunden hat zurückverfolgen muss den man sucht. also 000AE194 + oxff = ergebinss + 0x2a20 = ergebniss + 0chf3 = ergebiss + 0x22f = baspointer (die adresse die sich nicht mehr ändert) wir sind @home

meist sind das 4 offsets (0xff + 0xa20 + 0xhf3 + 0x22f) kann aber auch bis 7 +++ gehen was aber nicht sinnvoll ist.


soll nur eine kleine erklärung sein wie du zum ziel kommst und warum der eine wert nicht immer der gleiche ist.

lese dich hier einmal ein und wenn du genau weist was die begriffe bedeuten klappt das schon
basepointer?
dynamisch / statisch adresse?
offset?



dein wirscher snow21
03/25/2014 09:49 HexScript#10
Hallo, ich habe ein Problem...

Ich möchte ein Trainer/Hack für Assault Cube erstellen.
Ich habe Offsets und Baseaddressen aber es funktioniert nicht...

Code:

#include <NomadMemory.au3>

#Region Koda...
[...]
#Endregion Koda

_go() ; wartet auf ac_client.exe

while 1
$msg = GuiGetMsg()
Select
Case $msg = -3
Exit
Case $msg = $Button1
Exit
Endselect
Wend

Func _go() ; Code von "wartet auf ac_client.exe"
ToolTip("Wait for Assault Cube...", 0, 0)
ProcessWait("ac_client.exe")
$pid = processexists("ac_client.exe")
ToolTip("", 0, 0)
_start()
Endfunc

Func _start() ; öffnen des tools und memory
$msg = guigetmsg()
sleep(1000)
guisetstate(1)
$pid = processexists("ac_client.exe")
$Open = _memoryopen($pid)
while 1
If GuiCtrlRead($Checkbox1) = 1 Then ; Assault Cube Munition im lauf
$StaticOffset1 = Dec("004DF73C")
Global $OffSet1[3]
$Offset[0] = 0
$Offset[1] = 0x14
$Offset[2] = 0x378
$baseADDR1 = _memorygetbaseaddress($pid, 1)
$finalADDR1 = "0x" & Hex($baseADDR1 + $StaticOffset1)
$r1 = _memoryread($finalADDR1, $Open)
$r1 = _memoryread($r1 + $Offset1[1], $Open)
$r1 = _memorywrite($r1 + $Offset1[2], $Open, 1, "4Bytes")
EndIf

; 2. Checkbox lass ich mal weg ist gleich wie die 1. (ähnlich)

If guictrlread(Checkbox3) = 1 Then ; Assault Cube automatisches feuern
$StaticOffset3 = Dec("...addresse...") ; hab nach kopieren 2. Checkbox nicht geändert
Global $OffSet3[1]
$OffSet3[0] = 0x218
$baseADDR3 = _memorygetbaseaddress($pid, 1)
$finalADDR3 = "0x" & Hex($baseADDR3 + $StaticOffset3)
$r3 = _memoryread($finalADDR3, $Open)
$r3 = _memorywrite($r3 + $Offset[0], $Open, 1, "Byte")
Endif
Wend
Endfunc

Also es funktioniert so weit alles...
Nur wenn ich halt eine checkbox anklicke soll die memory umgeschrieben werden
aber leider peassiert nichts...

Wäre nett wenn mir jemand helfen würde, da ich nicht weiß was falsch ist.

Neues Coding würde mir auch helfen :) thx
03/25/2014 13:11 lolkop#11
Quote:
Originally Posted by HexScript View Post
Code:
#include <NomadMemory.au3>

#Region Koda...
[...]
#EndRegion Koda
_go() ; wartet auf ac_client.exe

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
		Case $msg = $Button1
			Exit
	EndSelect
WEnd

Func _go() ; Code von "wartet auf ac_client.exe"
	ToolTip("Wait for Assault Cube...", 0, 0)
	ProcessWait("ac_client.exe")
	$pid = ProcessExists("ac_client.exe")
	ToolTip("", 0, 0)
	_start()
EndFunc   ;==>_go

Func _start() ; öffnen des tools und memory
	$msg = GUIGetMsg()
	Sleep(1000)
	GUISetState(1)
	$pid = ProcessExists("ac_client.exe")
	$Open = _memoryopen($pid)
	While 1
		If GUICtrlRead($Checkbox1) = 1 Then ; Assault Cube Munition im lauf
			$StaticOffset1 = Dec("004DF73C")
			Global $OffSet1[3]
			$Offset[0] = 0
			$Offset[1] = 0x14
			$Offset[2] = 0x378
			$baseADDR1 = _memorygetbaseaddress($pid, 1)
			$finalADDR1 = "0x" & Hex($baseADDR1 + $StaticOffset1)
			$r1 = _memoryread($finalADDR1, $Open)
			$r1 = _memoryread($r1 + $Offset1[1], $Open)
			$r1 = _memorywrite($r1 + $Offset1[2], $Open, 1, "4Bytes")
		EndIf
		If GUICtrlRead(Checkbox3) = 1 Then ; Assault Cube automatisches feuern
			$StaticOffset3 = Dec("...addresse...") ; hab nach kopieren 2. Checkbox nicht geändert
			Global $OffSet3[1]
			$OffSet3[0] = 0x218
			$baseADDR3 = _memorygetbaseaddress($pid, 1)
			$finalADDR3 = "0x" & Hex($baseADDR3 + $StaticOffset3)
			$r3 = _memoryread($finalADDR3, $Open)
			$r3 = _memorywrite($r3 + $Offset[0], $Open, 1, "Byte")
		EndIf
	WEnd
EndFunc   ;==>_start
  1. zukünftig bitte code-tags verwenden
  2. funktioniert denn das schreiben einer einfachen adresse?
  3. processwait gibt bereits das processhandle zurück
  4. du verirrst dich in deinem script in einer reihe von funktionen, wobei du in der letzten sogar stecken bleibst
  5. du solltest zur problemlösung versuchen alles über die hauptschleife laufen zu lassen
  6. wenn du bei der gui erstellung mit einem array arbeitest, kannst du den wichtigsten teil des scriptes als 4zeiler aufbauen
03/25/2014 20:54 HexScript#12
Also das ist mein erster Script mit NomadMemory.au3 und ich weiß davon nicht viel und deine begriffe kenne ich nicht. Habe bisher nur Bots erstellt (PixelSearch aim und Chat/Spam). Ich weiß nicht mal wie ein Memory write (address, pointer, read) script aussieht... Zahlreiche tutorials konnten mir auch nicht helfen aber trotzdem danke!
03/25/2014 21:49 lolkop#13
Quote:
Originally Posted by HexScript View Post
Also das ist mein erster Script mit NomadMemory.au3 und ich weiß davon nicht viel und deine begriffe kenne ich nicht. Habe bisher nur Bots erstellt (PixelSearch aim und Chat/Spam). Ich weiß nicht mal wie ein Memory write (address, pointer, read) script aussieht... Zahlreiche tutorials konnten mir auch nicht helfen aber trotzdem danke!
wenn du nicht weist, was schleifen, arrays und handles sind, solltest du dir zunächst einmal anfänger tutorials anschauen.
03/25/2014 23:41 Lawliet#14
mach bitte einen neuen thread auf ;)
#closed