Rom bOT hP auslesen ( VB 2008 )

02/16/2010 16:58 Account94#1
Hallo
ich probiere grade mir selber einen Runes of magic bot zu basteln.
leider scheitere ich an der Stelle ,wo ich die hp aus der Memory auslese.
Der ausgelesene wer ist immer 0. Aber der Pointer und die offsets sind eig richtig.
Bitte helft mir den Fehler zu finden

Hier mal mein Code zum Hp auslesen:
Code:
Public Class Form1
    Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
    Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Public PROCESS_ALL_ACCESS = &H1F0FFF

    Public Function readmem(ByVal processHandle As IntPtr, ByVal Address As Integer)
        Dim hp = 0
        ReadProcessMemory(processHandle, Address, hp, 4, 0)
        Return hp
    End Function



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim myProcesses As Process() = Process.GetProcessesByName("Client")
        Dim processHandle As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 1, myProcesses(0).Id)
        Dim pointeradress As Integer = &H5693C0
        Dim offset As Integer = &H2C8
        Dim boffset As Integer = &H58C

        Dim adress As Integer = (readmem(processHandle, pointeradress))
        adress = (readmem(processHandle, pointeradress + boffset))

        Dim value As Integer = (readmem(processHandle, adress + offset))


    End Sub

End Class
Mfg
02/17/2010 11:31 12354#2
Du brauchst warscheinlich "Debug Rechte":
Process.EnterDebugMode() am Anfang in Form1_Load schreiben
02/18/2010 17:31 flo8464#3
Falsch dein Zeug kopiert?

Der GameWorld-Pointer ist nicht 0x5693C0 (was mitten in der .code section des Hauptmodules liegt) sondern 0x9693C0 (RoM 2.1.6.2065)
02/18/2010 18:23 Account94#4
thx euch beiden
leider gibt mein prog immer noch 0 aus , obwohl ich Process.EnterDebugMode()
sowie den richtigen pointer benutzt habe. :(

Ich glaube der fehler liegt irgendwie dort , wo man den Basepointer mit dem gameoffset addiert, denn an der Stelle liest er die 0 aus und bei der Stelle wo die adresse dan mit dem offset der hp addiert wird liest er auch wieder 0 aus.

Der Fehler liegt nicht generell daran, das er nicht aus der memory lesen kann, denn einfache adressen kann ich ganz normal lesen.

Hat einer von euch vielleicht ne idee?

Mfg
02/20/2010 17:23 Account94#5
okay ich habs hinbekommen
ich hab einfach mal statt der hex werte die integer werte genommen und siehe da - es klappt
mfg