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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  pregunta convertir
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: pregunta convertir  (Leído 6,602 veces)
thearing

Desconectado Desconectado

Mensajes: 2


Ver Perfil
pregunta convertir
« en: 18 Marzo 2011, 18:07 pm »

Holaaa que tal una pregunta...
Estoy usando el cheat engine para leer un address de memoria de un proceso...
Resulta que es el caption de un label, pude encontrar el pointer (tiene 5 offsets) y tambien leerlo hasta llegar al address dinamico desde vb...

Pero resulta que desde vb, obtengo el value en 4bytes, 2bytes 1byte, y lo que necesito es que lo detecte como el cheat engine cuando ponemos en TYPE: "Text" y lo convierte a texto automaticamente...
Y no se como hacer para convertirlo desde vb directamente!
Alguien puede darme alguna mano?

por ejemplo tengo esto:
En 4bytes, el value que detecta es: "791687217" (en decimal) y en hexadecimal es: "2F303031"
Ahora cuando en el cheat engine pongo en TYPE: Text, el value es: "100/100"

Queria saber si es posible eso desde vb directamente, gracias!


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pregunta convertir
« Respuesta #1 en: 18 Marzo 2011, 19:13 pm »

Lo obtienes en formato string o long?
Tendrias que tomar cada 2 letras del valor hexadecimal y usar ese valor como ascii para agregarlo a otro string

2F = 47 = 1 en la tabla ASCII :P

Usa las funciones de string: Asc, y Mid


En línea

Cromatico

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: pregunta convertir
« Respuesta #2 en: 18 Marzo 2011, 23:27 pm »

Hola reaul338 gracias por contestar, yo leia desde vb en 4 bytes, pero ahora estuve mirando y si pongo array of byte en el cheat engine, me tira:
Código:
31 30 30 2F 31 30 30 00 04 00
que en la tabla:
Código:
http://www.asciitable.com/
es exactamente "100/100"

Lo que vos me dijiste 2F=47=1 no pude ubicarlo en la tabla, no lo encontre...

Ahora la pregunta es, como hago para leer en array of bytes, en vez de 4 bytes desde vb? Tendria que saber la longitud de la cadena tambien... Alguna idea?
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pregunta convertir
« Respuesta #3 en: 18 Marzo 2011, 23:31 pm »

Ahh... no no, mala mia, pense cualquier cosa. Mira, Un string esta formado por una cadena de caracteres y que termina en 0

Bajo esa condicion, podes hacer un bucle con RtlMoveMemory a un byte temporal y agregalo a un vector de bytes hasta que el byte temporal sea 0 y de ahi convertir el vector a string usando StrConv

El problema es que si no termina en 0 podes quedarte en bucle infinito (a menos que pongas un limite :xD)
En línea

Cromatico

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: pregunta convertir
« Respuesta #4 en: 19 Marzo 2011, 00:01 am »

Por lo que estuve mirando, los ultimos 3 (por ejem: "00 00 65") no forman parte del texto que yo quiero, asi que podria utilizar el primer null "00" para leer hasta ahi con readprocessmemory...

Igual tengo un problema, no logro leer el array completo...
Código:
ReadProcessMem phandle, address, valbuffer, 4, 0&

Me devuelve
"791687217" o hex("791687217") = "2F303031" (esto es lo mismo que me detecta el cheat engine si pongo 4bytes en TYPE.

Pero si pongo en el cheat engine en TYPE, array of bytes, me detecta:
"31 30 30 2F 31 30 30 00 00 65" (Lenght 10) aunque yo podria cortarlo en el primer "00" eso no importa por ahora

Y el array que tendria que recibir en vb es:
"31 30 30 2F 31 30 30  00 00 65", no entiendo como convertirlo a esto!

Gracias y perdon mi ignorancia :P
« Última modificación: 19 Marzo 2011, 00:04 am por Cromatico » En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pregunta convertir
« Respuesta #5 en: 19 Marzo 2011, 00:09 am »

La verdad no entendi nada :xD , y esa linea de codigo sola mucho no me ayuda
En línea

Cromatico

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: pregunta convertir
« Respuesta #6 en: 19 Marzo 2011, 00:29 am »

Disculpa xD, aver si puedo explicar mejor...

Te dejo una imagen de lo que obtengo desde el cheat engine, seguramente esta mas claro:


Entonces yo puedo leer correctamente desde vb la segunda y tercera fila, pero lo que intento obtener es el TEXTO, entonces tengo entendido que necesito leer el formato de la 4ta fila, para desp convertirlos a letras... Que es lo que no logro hacer, leer en array of bytes hasta el 00.

XD gracias por ayudarrrme :)

EDIT: Recien me doy cuenta que habia posteado con mi usuario viejo jajajajaj

edit2:
Desde vb si leo en 4bytes:
Código:
ReadProcessMem phandle, address, valbuffer, 4, 0&

obtengo lo de la 2da columna (4bytes decimal)
y si lo convierto de esta manera:

Código:
Private Sub Form_Load()
MsgBox StrReverse(DecimalToString(791687217))
End Sub

Private Function DecimalToString(ByVal Number As Long) As String
    Dim r As Long
    Do While Number > 255
        r = Number Mod 256
        Number = Number \ 256
        DecimalToString = Chr$(r) & DecimalToString
    Loop
    DecimalToString = Chr$(Number) & DecimalToString
End Function

Obtengo la primera parte del texto: "100/" nada mas :S
« Última modificación: 19 Marzo 2011, 00:44 am por Cromatico » En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pregunta convertir
« Respuesta #7 en: 19 Marzo 2011, 01:11 am »

Porque si te pones a pensar, son 4 bytes, son 4 caracteres que estas leyendo :P Ponle mas espacio y obtendras todo y mas :xD

Pon por ejemplo, 10 y haces un split(Texto, vbNullChar) y te quedas con la primera parte :P
En línea

Cromatico

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: pregunta convertir
« Respuesta #8 en: 19 Marzo 2011, 01:42 am »

Si fue lo primero que intente pero por mas que el 4 lo cambie por 10, 8 u lo que sea, me sigue leyendo lo mismo :(
Habra que cambiar algo en la declaracion?
Código:
Public Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pregunta convertir
« Respuesta #9 en: 19 Marzo 2011, 01:50 am »

Si, pondria ByVal a lpNumberOfBytesWritten y ... quisiera saber que tipo de variable le estas pasando a lpBuffer ?

Yo haria asi

Código
  1. Dim bArrayTemp(10) as Byte
  2. Call ReadProcessMem(phandle, address, VarPtr(bArrayTemp(0)), 10, 0&)
  3.  
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Convertir ram a mp3 « 1 2 »
Multimedia
Ambolius 11 22,453 Último mensaje 30 Diciembre 2003, 05:44 am
por Songoku
vhs convertir a avi
Multimedia
Pansaca 4 6,633 Último mensaje 22 Marzo 2004, 19:01 pm
por Mason33
Convertir WMV a MPG????
Multimedia
Darode 1 2,414 Último mensaje 4 Mayo 2004, 19:42 pm
por Songoku
[MOD] Re: Un pregunta, ¿como convertir wma a mp3?
Multimedia
Cch 6 2,648 Último mensaje 14 Julio 2006, 20:48 pm
por Cch
[PREGUNTA] Convertir una declaracion API de C# a VB6 (problema con punteros) « 1 2 »
Programación Visual Basic
el_c0c0 14 7,628 Último mensaje 19 Marzo 2012, 14:47 pm
por el_c0c0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines