Tengo este codigo
Lo que quiero hacer es obtener el nombre del personaje para el juego Lineage 2 (Interlude) pero siempre me devielve 0, alguno tiene una idea de que es lo que esta pasando.- Muchas gracias
Código [Seleccionar]
Public Class Form1
'API ReadProcessMemory
Private Shared Function ReadProcessMemory( _
ByVal hProcess As IntPtr, _
ByVal lpBaseAddress As IntPtr, _
ByVal lpBuffer() As Byte, _
ByVal dwSize As Integer, _
ByRef lpNumberOfBytesRead As Integer) As Boolean
End Function
Private Function FindAddress(ByVal pHandle As IntPtr, ByVal BaseAddress As IntPtr, ByVal StaticPointer As IntPtr, ByVal Offsets() As IntPtr) As IntPtr
' Crearemos un buffer de 4 bytes para sistema de32-bit o 8 bytes sobre un sistema de 64-bit .
Dim tmp(IntPtr.Size - 1) As Byte
Dim Address As IntPtr = BaseAddress
' Checaremos para 32-bit vs 64-bit.
If IntPtr.Size = 4 Then
Address = New IntPtr(Address.ToInt32 + StaticPointer.ToInt32)
Else
Address = New IntPtr(Address.ToInt64 + StaticPointer.ToInt64)
End If
' Loop de cada Offset hasta encontrar el Address
For i As Integer = 0 To Offsets.Length - 1
ReadProcessMemory(pHandle, Address, tmp, IntPtr.Size, 0)
If IntPtr.Size = 4 Then
Address = BitConverter.ToInt32(tmp, 0) + Offsets(i).ToInt32()
Else
Address = BitConverter.ToInt64(tmp, 0) + Offsets(i).ToInt64()
End If
Next
Return Address
End Function
Public Function Obtener_Address()
Dim p As Process
For Each p In Process.GetProcesses()
If Not p Is Nothing Then
If (LCase(p.ProcessName) = "l2") Then
Dim pID As IntPtr = p.Handle
Dim base As IntPtr = p.MainModule.BaseAddress
' Colocamos Nuestro Pointer Estatico
Dim sptr As IntPtr = &HB5C3320
' Y aqui nuestro Offset segun los necesarios
Dim offsets() As IntPtr = {&HF4, &H14, &H308, &HC4, &H0}
Dim addr As IntPtr = FindAddress(pID, base, sptr, offsets)
Dim f As String
f = addr.ToString
Return f
Exit Function
End If
End If
Next
Return ("Error")
' Obtendremos el Handle y el BaseAddress de nuestro proceso
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Obtener_Address())
End Sub
End Class
Lo que quiero hacer es obtener el nombre del personaje para el juego Lineage 2 (Interlude) pero siempre me devielve 0, alguno tiene una idea de que es lo que esta pasando.- Muchas gracias