|
You last visited: Today at 09:43
Advertisement
Pointer und Offsets?
Discussion on Pointer und Offsets? within the AutoIt forum part of the Coders Den category.
08/10/2013, 21:55
|
#16
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
Naja um dir jetzt echt mal ein bisschen zu helfen:
Code:
#AutoIt3Wrapper_UseX64=n
#include <Pointer.au3>
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _MemoryOpen($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x0356DC90
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _MemoryRead(_MemoryRead(_MemoryRead($lpBaseAddress, $phHandles) + $pOffsets[0], $phHandles) + $pOffsets[1], $phHandles, 'dword')
ConsoleWrite("Value: " & $lpMemoryData)
MsgBox(64, "Info", & "Value: " & $lpMemoryData)
_MemoryClose($phHandles)
EndIf
EndIf
#Edit:
Kleiner Fehler Fix
Code:
#AutoIt3Wrapper_UseX64=n
#RequireAdmin
#include <MemoryPointer.au3>
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _MemoryOpen($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x00400000 + 0x3E6948
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _MemoryRead(_MemoryRead(_MemoryRead($lpBaseAddress, $phHandles) + $pOffsets[0], $phHandles) + $pOffsets[1], $phHandles, 'dword')
ConsoleWrite("Value: " & $lpMemoryData)
MsgBox(64, "Info", "Value: " & $lpMemoryData)
_MemoryClose($phHandles)
EndIf
EndIf
|
|
|
08/10/2013, 22:12
|
#17
|
elite*gold: 68
Join Date: Feb 2011
Posts: 401
Received Thanks: 96
|
Quote:
Originally Posted by BladeTiger12
Naja um dir jetzt echt mal ein bisschen zu helfen:
Code:
#AutoIt3Wrapper_UseX64=n
#include <Pointer.au3>
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _MemoryOpen($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x0356DC90
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _MemoryRead(_MemoryRead(_MemoryRead($lpBaseAddress, $phHandles) + $pOffsets[0], $phHandles) + $pOffsets[1], $phHandles, 'dword')
ConsoleWrite("Value: " & $lpMemoryData)
MsgBox(64, "Info", & "Value: " & $lpMemoryData)
_MemoryClose($phHandles)
EndIf
EndIf
#Edit:
Kleiner Fehler Fix
Code:
#AutoIt3Wrapper_UseX64=n
#RequireAdmin
#include <MemoryPointer.au3>
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _MemoryOpen($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x00400000 + 0x3E6948
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _MemoryRead(_MemoryRead(_MemoryRead($lpBaseAddress, $phHandles) + $pOffsets[0], $phHandles) + $pOffsets[1], $phHandles, 'dword')
ConsoleWrite("Value: " & $lpMemoryData)
MsgBox(64, "Info", "Value: " & $lpMemoryData)
_MemoryClose($phHandles)
EndIf
EndIf
|
Endlich funk es sehr vielen dank kanst du mir auch bitte erkleren ? woher komt 0x00400000 + 0x3E6948 ?
|
|
|
08/10/2013, 22:21
|
#18
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
0x00400000 ist in der Regel der "Einstiegspunkt" eines Prozesses.
Er hat im Endeffekt nur die Werte genommen, die du im ersten Beitrag geschrieben hast:
Quote:
Originally Posted by blackout617
MAX HP = 007E6938 Offset1:AC Offset2:48
|
Das deckt sich allerdings nicht mit den Werten deines Screenshots, deshalb habe ich sie nie hergenommen. Wohl ein Fehler gewesen.
Die Hex-Ausgabe liegt übrigens an folgender Zeile in der Pointer.au3:
Code:
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
Könntest du folgenden Code mal ausprobieren:
Code:
#AutoIt3Wrapper_UseX64=n
#RequireAdmin
#include "KDMemory.au3"
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _KDMemory_OpenProcess($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x007E6948
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _KDMemory_ReadProcessMemory($phHandles, $lpBaseAddress, 'DWORD', $pOffsets)
If @error Then
MsgBox(48, "Error", "Can't read memory! @error: " & @error & ", @extended: " & @extended)
Else
MsgBox(64, "Info", "Address: " & $lpMemoryData[0] & @CRLF & "Value: " & $lpMemoryData[1])
EndIf
_KDMemory_CloseHandle($phHandles)
EndIf
EndIf
Meine UDF hat eine ausführlichere "Fehlerbehandlungsmöglichkeit". Deshalb hast du bei meiner UDF auch die Fehlermeldung bekommen, wohingegen die _MemoryPointerRead() Funktion einfach nur "0" zurück liefert und den Funktionsaufruf von "ReadProcessMemory" überhaupt nicht nach Richtigkeit überprüft.
|
|
|
08/10/2013, 22:27
|
#19
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
Nicht nur das KDeluxe, seine Adresse im ersten Post kann stimmen,
und die Adresse: 0x0356DC90 ist falsch gewesen.
|
|
|
08/10/2013, 22:43
|
#20
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Selbst die Adresse aus dem 1. Beitrag ist falsch (Differenz von 0x10).
"Richtig" war es in diesem Beitrag:
Quote:
Originally Posted by blackout617
Quote:
#include <Pointer.au3>
$PID = ProcessExists("MultiClient.exe")
$MemOpen = _MemoryOpen($PID)
Global $Offset[3]
$Offset[0] = 0
$Offset[1] = Dec("48")
$Offset[2] = Dec("AC")
$StaticOffset = Dec("003E6948")
$BaseAddr = _MemoryGetBaseAddress($MemOpen, 1)
$Addr = "0x" & Hex($baseADDR + $StaticOffset)
$Value = _MemoryPointerRead($Addr, $MemOpen, $Offset)
while 1
Tooltip ($Value[1])
WEnd
|
|
Die "MultiClient.exe" hat mich aber schon die ganze Zeit gestört. Bei dieser ist der Einstiegspunkt eben nicht 0x00400000 sondern 0x03187348. Ich nehme aber einfach mal an, dass die "MultiClient.exe" die "NostaleX.dat" lädt und ausführt, wodurch die richtige Adresse wieder 0x007E6948 und nicht 0x0356DC90 ist. Das sind natürlich wieder "Sonderfälle".
|
|
|
08/10/2013, 22:44
|
#21
|
elite*gold: 68
Join Date: Feb 2011
Posts: 401
Received Thanks: 96
|
ok danke,3E6948 habe ich werstanden das ist bei c.e. beim pointer scan die base adresse
0x00400000 ist die einstieg adressse
$lpBaseAddress = 0x00400000 + pointer base adresse(die ersten 2 zahlen löschen und dan schreiben
MultiClient.exe ist die NostaleX.dat nur als multiclient gemacht
|
|
|
08/10/2013, 22:50
|
#22
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Was meinst du damit? CE zeigt als "Base Address" nicht E6948 an sondern "MultiClient.exe"+3E6948. Beides gehört zusammen und ist die "Base Address".
Das war aber auch schon das Problem, da "MultiClient.exe"+3E6948 = 0x0356DC90 ist. Richtig wäre aber 0x007E6948. Du kannst in CE ja mal "NostaleX.dat"+3E6948 ausprobieren, vielleicht funktioniert es ja.
Quote:
Originally Posted by KDeluxe
Könntest du folgenden Code mal ausprobieren:
Code:
#AutoIt3Wrapper_UseX64=n
#RequireAdmin
#include "KDMemory.au3"
$szProcessName = "MultiClient.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId == 0 Then
MsgBox(48, "Error", "Process doesn't exists!")
Else
$phHandles = _KDMemory_OpenProcess($dwProcessId)
If @error Then
MsgBox(48, "Error", "Can't open " & $szProcessName & "! @error: " & @error)
Else
$lpBaseAddress = 0x007E6948
Dim $pOffsets[2] = [0xAC, 0x48]
$lpMemoryData = _KDMemory_ReadProcessMemory($phHandles, $lpBaseAddress, 'DWORD', $pOffsets)
If @error Then
MsgBox(48, "Error", "Can't read memory! @error: " & @error & ", @extended: " & @extended)
Else
MsgBox(64, "Info", "Address: " & $lpMemoryData[0] & @CRLF & "Value: " & $lpMemoryData[1])
EndIf
_KDMemory_CloseHandle($phHandles)
EndIf
EndIf
Meine UDF hat eine ausführlichere "Fehlerbehandlungsmöglichkeit". Deshalb hast du bei meiner UDF auch die Fehlermeldung bekommen, wohingegen die _MemoryPointerRead() Funktion einfach nur "0" zurück liefert und den Funktionsaufruf von "ReadProcessMemory" überhaupt nicht nach Richtigkeit überprüft.
|
|
|
|
08/11/2013, 00:23
|
#23
|
elite*gold: 68
Join Date: Feb 2011
Posts: 401
Received Thanks: 96
|
Also bei heist das jetzt NostaleX.dat werden die pointers,base adress,offsetse nicht funk. die ich bei MultiClient.exe gefunden habe ?
und noch eine kleine frage wie kan ich mit pointer.au3 memory write benutzen ?
Habe das wersucht geht nicht
Code:
$r = 0x00400000 + 0x3E6578
$r = _MemoryRead($r + $pOffsets[10],$phHandles)
$r = _MemoryRead($r + $pOffsets[11],$phHandles)
$Test = _MemoryWrite($r+ $pOffsets[11], $phHandles, "1082599999")
|
|
|
08/11/2013, 02:26
|
#24
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Grundsätzlich schon. Ich empfehle dir dennoch weiterhin meine UDF zu verwenden und nicht die Pointer.au3.
Du solltest dann auch einfach die Offsets als Parameter übergeben. Ich vermute aber mal, dass in deinem $pOffsets Array alle Offsets gespeichert sind, die du hast. Das müsstest du dann natürlich ändern.
Ich habe keine Lust deinen aktuellen Fehler genauer zu beschreiben, da ich der Meinung bin, dass du meine UDF verwenden solltest, deshalb kurz.
Code:
$r = _MemoryRead($r + $pOffsets[11],$phHandles)
Diese Zeile musst du aus dem Code entfernen.
|
|
|
 |
|
Similar Threads
|
Pointer+offsets lol
05/28/2013 - League of Legends - 11 Replies
Hallo,
Ich arbeite gerade an einem Tool für lol welches einem im Spiel helfen soll,
Auto timer etc items vorschlagen Fokus usw
Ich habe nur ein Problem es sind so viele Werte und bei manchen Pointen komme ich auf keinen grünen Zweig. Vor allem die respawn zeit
Kann mal wer die Base Pointer +offsets posten
Tjx im voraus :)
|
C++ Pointer mit Offsets?
05/22/2013 - C/C++ - 12 Replies
Hi.
Ich habe einen Pointer gefunden mit 5 Offsets.
Hier mal ein Bild:
http://img4.fotos-hochladen.net/uploads/cetcm2ox7 3i5.png
Mit Autoit habe ich es nicht geschafft, da die Value sich nie geändert hat.
Jetzt will ich es per DLL machen.
So sieht meine DLL bis jetzt aus:
|
Offsets/Pointer
04/14/2010 - World of Warcraft - 4 Replies
Huhu,
hat wer die Offsets/Pointer für WoW 3.3.3a ?
Wäre n1!
|
[Help] Pointer,Offsets,Etc.
05/29/2009 - Kal Online - 10 Replies
Heyjo,
Aaalso...
Ich hab mich vorher noch nie mit Artmoney befasst bzw. nur 1-2 mal für speedhack das wars aber auch schon.
Mir geht es jetzt um den Pointer, Offsets kram.
Wenn ich Pointer suchen möchte such ich erst mal die normale adresse...sagen wir jetzt von der X Coordinate
in meinem Fall jetzt:
085EBDA8
jetzt mach ich nen rechtsklick drauf --> Mehr... --> Suche.. --> Pointer zu dieser Adresse suchen:
0 Ergebnisse
Wenn ich Pointer ab Anfang des Speicherblocks suchen klicke, kriegt...
|
need help getting mob pointer and offsets
12/21/2008 - Silkroad Online - 1 Replies
well as the topic sais i wanna get the memory adresses to read mobdata like playerdata
so far i found the adress for mobhp in the memory
the adress changes with each mob so i've set a breakpoint in olly and got the offset 0x440
with that offset i got the pointer for that client
u can c that here:
http://silkroad-planet.de/Magic/mob_hp.jpg
the mob was a movia(54hp) and the pointer was 0x9CE4E6C
well now i'm able to get the data of that client for each mob i select...
|
All times are GMT +1. The time now is 09:44.
|
|