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:
(http://img683.imageshack.us/img683/445/awads.jpg)
Gracias :)
Busca sobre el API CopyMemory :)
.
CopyMemory es este caso no sirve debes usar esta API:
ReadProcessMemory (http://msdn.microsoft.com/en-us/library/ms680553%28v=vs.85%29.aspx)
Hay un ejemplo mio editando el Score del pinball usando dicha API junto con WriteProcessMemory (http://msdn.microsoft.com/en-us/library/ms681674%28v=vs.85%29.aspx) 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!¡.
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
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!¡.
aff no logro hacer qe funcione :( maldicion