elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  LeerPointers/Punteros con VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: LeerPointers/Punteros con VB.NET  (Leído 3,790 veces)
igustin10

Desconectado Desconectado

Mensajes: 13


Ver Perfil
LeerPointers/Punteros con VB.NET
« en: 16 Diciembre 2015, 21:27 pm »

Que tal amigos como va?

Estoy desarrollando una aplicacion que varia segun otra. Lo que quiero preguntarles hoy es  como puedo hacer para leer ciertos pointer (punteros) de una aplicacion en VB.NET.

Quiero mostrar el value (valor) de un puntero (que lleva a un address) en una de las labels de mi proyecto.

Muchas Gracias a todos por la ayuda!!  ;-) ::) :D


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #1 en: 17 Diciembre 2015, 17:59 pm »

Buenas.

Entiendo de lo que hablas, y no tendrías ningún problema con la clase Marshal para extraer el valor. Estaría bien que nos dejaras el fragmento de código para acomodarlo y dejarlo como pides.

Saludos.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

igustin10

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #2 en: 17 Diciembre 2015, 18:36 pm »

kub0x antes que nada gracias por tomar un poco tiempo y leer el post y responder.

Ahora me voy  a poner a ver como quedaria con la clase Marshal (no lo conocia, me estoy fijado aca de que se trata: https://msdn.microsoft.com/es-es/library/system.runtime.interopservices.marshal(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1).

Lo que habia intendado yo pero veo que esta mal es:
Código:
Dim pointervalue As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        pointervalue = WriteDMAInteger("Proceso", &HAddress, {&H1, &H2, &H3}, Value, 5)
        Label1.Text = pointervalue


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #3 en: 17 Diciembre 2015, 23:38 pm »

Citar
Te explico como es lo que quiero hacer:
Tengo este Pointer: "Proceso"+001913B8 - Offset0: 104 - Offset1: bdc - Offset2: 60
Y quiero mostrarlo en una label del proyecto.
Como podria lograrlo? Estuve investigando lo de clase Marshal pero no lo entendi muy bien.

Quieres representar los datos de un puntero a una dirección que reside en otro proceso. Cuando veas un puntero de la forma "Proceso" + Dirección (0x...) lo que tienes realmente es la dirección base del proceso (base address) + la dirección. Por ejemplo: "Firefox" + 0x456A será la base address de firefox digamos 0x400000 quedaría 0x400000 + 0x456A.

En .NET es sencillo coger la base address de un proceso cualquiera (mientras tengas los mismos permisos que el proceso al que se abrirá el HANDLE):

Código
  1. [DllImport("kernel32.dll", SetLastError = true)]
  2. static extern bool ReadProcessMemory(
  3. IntPtr hProcess,
  4. IntPtr lpBaseAddress,
  5. [Out] byte[] lpBuffer,
  6. int dwSize,
  7. out IntPtr lpNumberOfBytesRead);
  8.  
  9. public static void Main (string[] args)
  10. {
  11. Process proc = Process.GetProcessesByName ("Firefox")[0];
  12. IntPtr ptr = 0xDEADBEEF + proc.MainModule.BaseAddress;
  13. IntPtr prochandle = proc.Handle;
  14. byte[] bytes = new byte[40];
  15.                        IntPtr readbytes = new IntPtr();
  16. ReadProcessMemory (prochandle, ptr, bytes, bytes.Length, out readbytes);
  17.                        string data = Encoding.ASCII.GetString(bytes);
  18.                }
  19.  

En data tendrías el valor del puntero leído. Cambia 0xDEADBEEF y Firefox por la dirección del puntero y por el nombre del proceso. Cambia el 40 de byte[] bytes=new byte[40] por la longitud que quieres leer del puntero. Si todo va bien debería salirte.

Saludos!
« Última modificación: 17 Diciembre 2015, 23:43 pm por kub0x » En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

igustin10

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #4 en: 18 Diciembre 2015, 00:20 am »

Perfecto! Entendi el codigo, muchisimas gracias.

Mas claro que el agua jaja. Ahora voy a INTENTAR pasarlo a Visual Basic porque la verdad se muy poco de C.

MUCHAS GRACIAS kub0x!
Salu2, Igustin
En línea

igustin10

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #5 en: 18 Diciembre 2015, 22:25 pm »

Usando un codigo que es ReadWriteMemory.vb (pongo abajo la parte que uso):

Código:
Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer
        Try
            Dim lvl As Integer = Address
            For i As Integer = 1 To Level
                lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
            Next
            Dim vBuffer As Integer
            vBuffer = ReadInteger(Process, lvl, nsize)
            Return vBuffer
        Catch ex As Exception

        End Try
    End Function[font=Verdana][/font]


Lo que he tratado de hacer es:

Código:
Dim pointer As Integer = ReadDMAInteger("Proceso", &HBaseAddress+Address, Offsets, Level:=1)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label2.Text = pointer
    End Sub

Ya reemplaze los datos pero me dice que es 0.

Alguna ultima ayuda? Ya casi lo saco  :-\ :-\
En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: LeerPointers/Punteros con VB.NET
« Respuesta #6 en: 21 Diciembre 2015, 13:50 pm »

En este caso utilizas la función casera ReadInteger, estaría bien que la postearas para ver como manejas la lectura de memoria del proceso destino. Sin eso me temo que no puedo ayudarte. El code que te dejé también es funcional, podrías partir del mismo eso sí, tendrías que pasarlo a VB.NET.

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
punteros
Programación Visual Basic
bautistasbr 4 2,051 Último mensaje 30 Septiembre 2005, 19:35 pm
por NYlOn
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,860 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines