Tinutron Posted May 21, 2009 Share Posted May 21, 2009 hello! i would like to memory read the health points of my archlord charakter. i could not find much information about this, so i better ask bevor i waste more time. is this possible and if yes, is it hard to do? there are so many progamms i have seen, that can read a charakters hp, that really must be doable. i allready downloaded NomandMemory, but i think i dont understand for what exactly this is. can someone help me out with maybe a piece of code or something? thank you very much! Link to comment Share on other sites More sharing options...
Richard Robertson Posted May 21, 2009 Share Posted May 21, 2009 You have to do a lot more work than you have so far. You'll need to get a memory searching program and search for your current health. Record the address. Close the program and run it a few more times searching for your health value. If you get the same address each time, you then take that to Nomad. You'll have to get someone else's help since I don't know how to use it. Link to comment Share on other sites More sharing options...
Tinutron Posted May 22, 2009 Author Share Posted May 22, 2009 ok, i just did what you said and found these adresses. now i only need to know, what to do with them. Link to comment Share on other sites More sharing options...
Richard Robertson Posted May 22, 2009 Share Posted May 22, 2009 Gotta wait for someone else sorry. I don't do any memory reading/writing. Link to comment Share on other sites More sharing options...
Tinutron Posted May 22, 2009 Author Share Posted May 22, 2009 anyway, thank you very much! i can see a little light in the distance... Link to comment Share on other sites More sharing options...
monoceres Posted May 22, 2009 Share Posted May 22, 2009 (edited) Simple example on reading a 4 byte value into an autoit variable from specified process and pointer. #include <winapi.au3> Global Const $PROCESS_VM_OPERATION = (0x0008) Global Const $PROCESS_VM_READ = (0x0010) Global $Process="someprocess.exe" Global $Pointer = 0xDEADBEEF; replace of course $handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process)) $s=DllStructCreate("int") Local $read _WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),DllStructGetSize($s),$read) MsGbox(0,"Read value",DllStructGetData($s,1)) _WinAPI_CloseHandle($handle) Edited May 22, 2009 by monoceres Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
Tinutron Posted May 22, 2009 Author Share Posted May 22, 2009 (edited) Simple example on reading a 4 byte value into an autoit variable from specified process and pointer. #include <winapi.au3> Global Const $PROCESS_VM_OPERATION = (0x0008) Global Const $PROCESS_VM_READ = (0x0010) Global $Process="someprocess.exe" Global $Pointer = 0xDEADBEEF; replace of course $handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process)) $s=DllStructCreate("int") Local $read _WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),DllStructGetSize($s),$read) MsGbox(0,"Read value",DllStructGetData($s,1)) _WinAPI_CloseHandle($handle) this helped me alot, thanks! another question: it looks like the memory adresses(for example of my current hp) are changing after i restart the game, is this normal? EDIT: i found this delphi code, that is definitly able to read a monsters hp. can someone explain this to me or even translate it into autoit(if it dosnt take to much work)? var BufferStr : array[0..100] of AnsiChar; BufferP: cardinal; BufferInt:Integer; BytesRead:Cardinal; BasePointer:cardinal; TempPointer:cardinal; begin BasePointer:=9023416; ReadProcessMemory(hProc, Pointer(BasePointer), @BufferP, SizeOf(BufferP), BytesRead); edtBasPointer.Text :=IntToHex(BufferP,8); TempPointer:=BufferP; ReadProcessMemory(hProc, Pointer(TempPointer+1188), @BufferP, SizeOf(BufferP), BytesRead); TempPointer:=BufferP; ReadProcessMemory(hProc, Pointer(TempPointer+92), @BufferP, SizeOf(BufferP), BytesRead); TempPointer:=BufferP; ReadProcessMemory(hProc, Pointer(TempPointer+36), @BufferP, SizeOf(BufferP), BytesRead); TempPointer:=BufferP; ReadProcessMemory(hProc, Pointer(TempPointer+116), @BufferP, SizeOf(BufferP), BytesRead); TempPointer:=BufferP; edtTargetidptr.Text:=IntToHex(BufferP,8); ReadProcessMemory(hProc, Pointer(TempPointer+1824), @BufferInt, SizeOf(BufferInt), BytesRead); edtTargetid.Text := IntToStr(BufferInt); end; Edited May 22, 2009 by Tinutron Link to comment Share on other sites More sharing options...
flamefire Posted May 22, 2009 Share Posted May 22, 2009 its a dynamic adress so you'll get something like this: offset1-->offset2-->health in this case you have to read the offset on the baseadress and you'll get offset2 now read the value on offset (offset2+constant) to read the health Global Const $PROCESS_VM_OPERATION = (0x0008) Global Const $PROCESS_VM_READ = (0x0010) Global $Process="someprocess.exe" Global $Pointer = 0xDEADBEEF; replace of course $handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process)) $s=DllStructCreate("int") Local $read _WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),DllStructGetSize($s),$read) MsGbox(0,"Base",DllStructGetData($s,1)) Local $health _WinAPI_ReadProcessMemory($handle,$read+0xAFFFF,DllStructGetPtr($s),DllStructGetSize($s),$health) _WinAPI_CloseHandle($handle) Now just fill up your values Link to comment Share on other sites More sharing options...
Tinutron Posted May 22, 2009 Author Share Posted May 22, 2009 can somone recommend me a good memory reader? i can only find crappy programms with nealy no functions. :\ Link to comment Share on other sites More sharing options...
Tinutron Posted May 22, 2009 Author Share Posted May 22, 2009 (edited) oh men, this makes me sick... -.- i cant find an offset that isnt changing or maybe i dont get this in my brain at all. can someone give me some instructions how to walk forward? edit: i just dont know, how to get this static adress. it is no more problem to find the adress, that shows my current hp but it changes with every game-restart. where is the way to the static adress now? Edited May 22, 2009 by Tinutron Link to comment Share on other sites More sharing options...
Richard Robertson Posted May 23, 2009 Share Posted May 23, 2009 It's very likely that there is no static address. That's why I originally said check it a few times... Link to comment Share on other sites More sharing options...
Diception Posted May 25, 2009 Share Posted May 25, 2009 It's very likely that there is no static address. That's why I originally said check it a few times...incase your still trying to do thisfind and use cheatengine (complete the tutorials) even if it takes you a few goes read everything more than once. come back and look into other memory read bots on these forums learn from the codeonce you have what you think is a working understanding build your code (the wrong way)post an example of your work and ask specific questionsi know you belive your questions are specific but they are actualy very very broad Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now