|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / .NET (C#, VB.NET, ASP) / Leer Memoria de un Proceso
|
en: 18 Noviembre 2010, 07:10 am
|
Tengo este codigo 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
|
|
|
2
|
Programación / Programación General / Insertar Modulo en Aplicacion.
|
en: 11 Septiembre 2010, 22:19 pm
|
Hola Gente del foro, tengo un par de preguntas para ahcerles, estuve haciendo una aplicacion en vb.net que es un cliente/servidor manejado por sokets.
Este programa hace lo siguiente: 1- Al abrir, envia datos de login a la aplicacion servidor con fecha de login, hwid. 2- El servidor recive los datos y los almacena en una base de datos sql, si el hwid esta en la tabla de aceptados, genera un codigo y envia mensaje de continuar con el codigo para aceder a los datos. 3- Esta aplicacion (el cliente) trabaja en conjunto con otra que es de terceros, yo en mi cliente, recivo y envio datos para manejar la conexion como se habran dado cuenta, si el hwid no esta en la tabla, recivo mensaje de cierre de aplicacion, y por medio del cliente mato el proceso en la pc. 4-Cabe aclarar que es absolutamente imperativo que el cliente este corriendo mientras la aplicacion se esta ejecutando. 6-Cada determinado tiempo, el cliente revisa el listado de procesos en busca de determinados programas, que en este caso servirian para interrumpir en el correcto funcionamiento de la aplicacion principal, y asi alterar datos que la aplicacion guarda en una base de datos sql.
Lo que quiero saber es si: -¿Se puede insertar (inyectar) una dll que haga esto mismo que yo hago en el programa cliente. O insertar otra que me ejecute el cliente cuando abra la aplicacion y me lo mantenga abierto mientras trabajo con el programa, una vez termine, cierre el cliente? -¿Es recomendable usar la inyeccion de dll?, o ¿hay algun metodo mejor que me permita mantener la aplicacion abierta hasta que se cierre la principal? -
Aclaro que soy programador, pero nunca en mi vida tuve que hacer algo asi y sinceramente no tengo la mas minima idea de por donde empezar.
Agradeceria sus prontas respuestas, y si son con ejemplo tipo para nene de jardin, por que estuve leyendo inyeccion dll en el foro pero no cazo una.
|
|
|
|
|
|
|