Ayuda como leer un Pointer

Iniciado por abdiel2475, 17 Enero 2011, 22:58 PM

0 Miembros y 1 Visitante están viendo este tema.

abdiel2475

Hola amm tengo una duda como puedo leer un pointer con offset y todo eso D:

me gustaria leer una address de un juego pero el juego tiene multi lvl pointers
y pss me gustaria como leer un pointer en vb6
el pointer ya lo encontre solo nesesito saber como leer el value D:



Gracias :)

raul338

Busca sobre el API CopyMemory :)

BlackZeroX

#2
.
CopyMemory es este caso no sirve debes usar esta API:

ReadProcessMemory

Hay un ejemplo mio editando el Score del pinball usando dicha API junto con WriteProcessMemory en este foro

Edito: (Escribi mal mi firma xP) :

P.D.: Busca mas sobre que es un puntero y un offset, por que yo se que son sinonimos ( la gente confunde a la gente ).

Dulces Lunas!¡.
The Dark Shadow is my passion.

abdiel2475

#3
muchas gracias por contestr :)
trate y trate y no pude hacer nada

amm me podrias dar un ejemplo :(
gracias

PD: tengo este codigo pero pss nose no me funciona ya lo modifiqe y todo
pero no me cambia el address solo lo suma :/ y no sale lo qe espero


Public Function ReadLongPointer(Address As Long, Offset As Long, WindowName As String) As Long

    Dim hwnd As Long
    Dim ProcessID As Long
    Dim ProcessHandle As Long
    Dim Valueofpointer As Long
    Dim valueX As String
    Dim Addy As String
    Dim Value As String
    hwnd = FindWindow("could not be fetched", vbNullString)


    If hwnd = 0 Then
        MsgBox "Could Not find process window!", vbCritical, "Read error"
        Exit Function
    End If

    GetWindowThreadProcessId hwnd, ProcessID
    ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)


    If ProcessHandle = 0 Then
        MsgBox "Could Not Get a process handle!", vbCritical, "Read error"
        Exit Function
    End If

    ReadProcessMem ProcessHandle, Address, Valueofpointer, 4, 0& 'Change the Four To two If you want For two bytes
    ' WriteLongPointer = Value
    valueX = Val(Valueofpointer) + Val(Offset)
    Decnum = valueX
    HexNum = ""

Dim valueX2 As String
Dim valueX3 As String

valueX2 = valueX + Val(140)
valueX3 = valueX2 + Val(60)

MsgBox valueX3

    While Decnum <> 0
    NextHexDigit = Decnum - (Int(Decnum / 16) * 16)


    If NextHexDigit < 10 Then
        HexNum = Chr(Asc(NextHexDigit)) & HexNum
    Else
        HexNum = Chr(Asc("A") + NextHexDigit - 10) & HexNum
    End If

    Decnum = Int(Decnum / 16)
Wend

If HexNum = "" Then HexNum = "0"
valueX = HexNum
Addy = "&H" + valueX3
Exit Function
ReadProcessMemory ProcessHandle, Addy, Value, 4, 0& 'Change the Four To two If you want For two bytes
ReadLongPointer = Value
CloseHandle ProcessHandle
End Function

BlackZeroX

Dependiendo de como ayas declarado la API ReadProcessMemory los paametros cambian al pasarlo pero lo mas habitual es que en lpBuffer se pase l puntero a la variable mas no la variable en si misma ya que si haces esto ultimo solo estaras pasando su cntenido intenta con byval varptr().

Temibles Lunas!¡.
The Dark Shadow is my passion.

abdiel2475

aff no logro hacer qe funcione :( maldicion