|
You last visited: Today at 20:15
Advertisement
[Memory read] Baseadresse mit Script rausfinden?
Discussion on [Memory read] Baseadresse mit Script rausfinden? within the AutoIt forum part of the Coders Den category.
02/13/2012, 15:11
|
#1
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
[Memory read] Baseadresse mit Script rausfinden?
Hallo erstmal,
zuerst einmal die Situation. Also ich habe in dem Spiel "Aion" einen Pointer für die HP Anzahl herausgefunden. Der lautet : "Game.dll"+0009C01C und der Offsetwert des Pointers lautet : 4.
Ich hab den Pointer jetzt in mein Script eingefügt, indem ich die game.dll Adresse in Cheat engine gesucht und mit dem Wert "0009C01C" addiert habe und den Offset Wert dazu gegeben habe. Ich habe mit der Nomadmemory.au3 gearbeitet. Das hat auch alles soweit wunderbar geklappt.
Das Problem:
Das Problem ist, dass ich nicht jedesmal wenn ich das Spiel neustarte, die "game.dll" mit Cheat engine neu rausfinden möchte. Ich würde es gerne so machen, dass mein Autoit Script dies automatisch bei jedem Start des Spiels für mich erledigt, sodass ich nicht immer die game.dll bei Cheat engine rausfinden und in meinem Script ändern muss.
Weiß einer zufällig wie das funltionieren könnte?
Vielen Dank schonmal im vorraus
Das Script sieht übrigens so aus:
Code:
$Adresse = 0x2CA00000 + 0x0009C01C
Dim $Offset[2] = [0, 0x4]
$Open = _MemoryOpen(ProcessExists("aion.bin"))
If Not @error Then
$Read = _MemoryRead($Adresse, $Open)
$Value = _MemoryRead($Read + $Offset[1], $Open)
Und die Adresse "0x2CA00000" ist die "Game.dll", die ich bei jedem Neustart des Spiels im Script ändern muss.
Edit:
Problem gelöst, Autoit Script musste zu x86 compiled werden, damit die "Game.dll" gefunden werden konnte.
|
|
|
02/13/2012, 18:51
|
#2
|
elite*gold: 2
Join Date: Mar 2008
Posts: 8,541
Received Thanks: 4,539
|
gibts in der nomadmemory.au3 nicht auch ne
_MemoryGetBaseAddress()
methode?
hab ich zumindestens schonmal irgendwo gesehen
|
|
|
02/13/2012, 19:11
|
#3
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Ja gibt es
|
|
|
02/14/2012, 16:42
|
#4
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
@Remus Ja damit hab ich's jetzt mal versucht.
Also damit:
Code:
$baseADDR = _MemoryGetBaseAddress($pid, "Game.dll")
Kommt allerdings immer nur 0 raus ... :/
|
|
|
02/16/2012, 13:47
|
#5
|
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
|
Related:
 #post12835381
 #post12874739
Speziell _ProcessUDGetModuleBaseAddress() sollte dir das liefern, was du suchst.
|
|
|
02/18/2012, 21:11
|
#6
|
elite*gold: 0
Join Date: Feb 2009
Posts: 542
Received Thanks: 112
|
PHP Code:
#RequireAdmin #include <Pointer.au3>
HotKeySet("{F1}", "_Read")
$PID = ProcessExists("aion.exe") If $PID > 0 Then $Handle = _MemoryOpen($PID) $Address = _MemoryModuleGetBaseAddress(ProcessExists("aion.exe"), "Game.dll") $Address = "0x" & Hex($Address + Dec("9C01C")) Dim $Offset[2] = [0,0x4] Else Exit EndIf
While True Sleep(10) WEnd
Func _Read() $Read = _MemoryPointerRead($Address, $Handle, $Offset, "float") MsgBox(0, "", $Read[1]) EndFunc
vlt so ?? oda etwas umändern ...
|
|
|
03/13/2012, 17:35
|
#7
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
@maxi39 also bei deinem Script:
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
$PID = ProcessExists("aion.exe")
If $PID > 0 Then
$Handle = _MemoryOpen($PID)
$Address = _MemoryModuleGetBaseAddress(ProcessExists("aion.exe"), "Game.dll")
$Address = "0x" & Hex($Address + Dec("9C01C"))
Dim $Offset[2] = [0,0x4]
Else
Exit
EndIf
While True
Sleep(10)
WEnd
Func _Read()
$Read = _MemoryPointerRead($Address, $Handle, $Offset, "float")
MsgBox(0, "", $Read[1])
EndFunc
kommt leider immer nur 0 raus. Weiß einer wieso?:/
|
|
|
03/15/2012, 20:09
|
#8
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
Kann denn keiner helfen?:/
|
|
|
03/15/2012, 20:11
|
#9
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Debug Privilegien?
|
|
|
03/15/2012, 21:59
|
#10
|
elite*gold: 26
Join Date: Jan 2012
Posts: 3,474
Received Thanks: 18,844
|
Les dir mal  durch. Hatte genau das gleiche Problem wie du ;o
|
|
|
03/17/2012, 15:33
|
#11
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
@Applecode Danke, aber hat anscheinend auch nicht funktioniert. Jetzt kommt zwar nicht mehr 0 raus, dafür hab ich jetzt ne andere Fehlermeldung, die ich noch nie hatte^^. Sieht etwa so aus:
Noch einer ne Idee? Ich weiß echt nicht mehr weiter :/
Edit:
Ich suche ja nur eine Alternative, um die Baseadresse von "game.dll" rauszubekommen. Im Moment sieht das ganze halt so aus:
Code:
$Adresse = 0x2CA00000 + 0x0009C01C
Dim $Offset[2] = [0, 0x4]
$Open = _MemoryOpen(ProcessExists("aion.bin"))
If Not @error Then
$Read = _MemoryRead($Adresse, $Open)
$Value = _MemoryRead($Read + $Offset[1], $Open)
Ich hab also einfach nur "game.dll" bei Cheat engine eingegeben, sodass ich den Wert raushatte und dann hab ich ihn einfach mit der Adresse addiert und da kam auch immer das richtige bei heraus. Nur das Problem ist ja, dass sich die "game.dll" bei jedem Spielneustart ändert.
|
|
|
03/17/2012, 15:40
|
#12
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Scheinbar wird die Funktion rekursiv aufgerufen, sie ruft sich also selber immer wieder auf. AutoIt limitiert aber die Anzahl der Inkarnationen. Die Grenze wurde von deinem Programm überschritten.
Viellleicht könntest du die Funktion hier mal posten.
|
|
|
03/17/2012, 15:41
|
#13
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Masterscripter
@Applecode Danke, aber hat anscheinend auch nicht funktioniert. Jetzt kommt zwar nicht mehr 0 raus, dafür hab ich jetzt ne andere Fehlermeldung, die ich noch nie hatte^^. Sieht etwa so aus:
Noch einer ne Idee? Ich weiß echt nicht mehr weiter :/
Edit:
Ich suche ja nur eine Alternative, um die Baseadresse von "game.dll" rauszubekommen. Im Moment sieht das ganze halt so aus:
Code:
$Adresse = 0x2CA00000 + 0x0009C01C
Dim $Offset[2] = [0, 0x4]
$Open = _MemoryOpen(ProcessExists("aion.bin"))
If Not @error Then
$Read = _MemoryRead($Adresse, $Open)
$Value = _MemoryRead($Read + $Offset[1], $Open)
Ich hab also einfach nur "game.dll" bei Cheat engine eingegeben, sodass ich den Wert raushatte und dann hab ich ihn einfach mit der Adresse addiert und da kam auch immer das richtige bei heraus. Nur das Problem ist ja, dass sich die "game.dll" bei jedem Spielneustart ändert.
|
lass das ganze doch erstmal in scite direkt über den interpreter laufen... dann wird wir auch in der console direkt der fehler angezeigt...
Edit:
davon abgesehen steht doch da das der maximal vorgegebene rekursionslevel überschritten wurde...
|
|
|
03/17/2012, 15:43
|
#14
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Quote:
Originally Posted by lolkop
lass das ganze doch erstmal in scite direkt über den interpreter laufen... dann wird wir auch in der console direkt der fehler angezeigt...
Edit:
davon abgesehen steht doch da das der maximal vorgegebene rekursionslevel überschritten wurde...
|
Dazu sei gesagt, dass er SciTE mit Administator-Rechten starten muss.
|
|
|
03/17/2012, 15:53
|
#15
|
elite*gold: 0
Join Date: Oct 2010
Posts: 167
Received Thanks: 24
|
Ja also der Fehler an sich ist mir schon klar, aber ich weiß nicht, wie ich ihne beheben kann, geschweige denn, was ich falsch mache.
Mein Script ist:
Code:
#RequireAdmin
#include <NoMadMemory.au3>
HotKeySet("{F1}", "_Read")
$PID = ProcessExists("aion.bin")
If $PID > 0 Then
$Handle = _MemoryOpen($PID)
$Address = _MemoryModuleGetBaseAddress(ProcessExists("aion.bin"), "Game.dll")
$Address = "0x" & Hex($Address + Dec("9C01C"))
Dim $Offset[2] = [0,0x4]
Else
Exit
EndIf
While True
Sleep(10)
WEnd
Func _Read()
$Read = _PointerRead($Address, $Handle, $Offset, "float")
MsgBox(0, "", $Read[1])
EndFunc
Und das einzige, was ich erreichen möchte, ist die HP Anzahl herausbekommen. In meinem 1. Post könnt ihr das Script, mit dem es klappt sehen. Es klappt nur nach Neustart des Spiels halt nicht mehr.
|
|
|
 |
|
Similar Threads
|
[VB.NET] Read memory help
03/25/2011 - .NET Languages - 7 Replies
Ok so im looking for some one that can help me to read a procces memory from a game and show it on a label in vb.net so if the HP changes then the label will change.
Please help me here cant find anything on google, also how to send keys to the game
|
Suche Script für Memory Read
03/04/2011 - AutoIt - 1 Replies
Kann mir einer ein Script geben ohne GUI, mit NoMadMemory include wo ich die Read Memory Funktion nutzen kann?
Würde mich auch über ein VB Script freuen!
Möchte für 4Story Global ein Log Buch machen!
|
VB.NET Read Memory
11/08/2010 - .NET Languages - 1 Replies
jo Hi,
Ich suche eine ReadMemory Function. Hat einer eine da?
Danke
|
[VB]Write Memory bzw Read Memory
06/26/2010 - .NET Languages - 8 Replies
Hi
Ich hab das TuT von *Guidman* benütz um einen hack zu machen.
So aber nun hab ihc ein paar fragen könnte man memory teil kürzer machen und am besten wie kann man das selber machen weil ich will nihct immer C&P machen.
Und zu Read Memory kann man das auch machen das ein Label immer die Bestimmte Ahnzahl angiebt von dem Pointer?.(Wenn das Read Memory ist ?)
Bitte helf mir
Danke
|
Memory read and add value
06/20/2010 - AutoIt - 4 Replies
Im trying to read values with HexCode but i have no ide to do this. i want the porgress bar and the labels to show the curent value of the Adresses
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
|
All times are GMT +1. The time now is 20:16.
|
|