[VB6] Memoria

Iniciado por calk9, 10 Diciembre 2011, 19:54 PM

0 Miembros y 1 Visitante están viendo este tema.

Unbr0ken

No me agrada ni poco VB6; por eso no perderé tiempo creando funciones que nunca usaré.

Te dejo aquí un proyecto (incompleto por desgracia) de un amigo del CE-F... el cual tiene lo que necesitas, una lectura en memoria se te haría fácil si usas la función ReadString.

Ojo, el proyecto en su totalidad (por tanto el crédito) pertenece a Wiccan.

Salud.
Cita de: SnowcrashDiscutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.

BlackZeroX

#11
 * Hacer una función de unas cuantas lineas no lleva ni siquiera 1 minuto, pero de alguna manera es mejor no hacerla, si no GUIAR al individuo en la creación de una funcion.

Nota: La funcion ReadString hace esactamente lo que mencione... se puede pulir pero no creo que sea el caso.

Dulces Lunas!¡.
The Dark Shadow is my passion.

raul338

Cita de: Unbr0ken en 11 Diciembre 2011, 04:48 AM
No me agrada ni poco VB6; por eso no perderé tiempo creando funciones que nunca usaré.
Cuales son las ganas de trollear?  :-\

calk9

Cita de: BlackZeroX (Astaroth) en 11 Diciembre 2011, 03:55 AM
Lo que debe realmente saber es que tipo de String es... Unicole o ANSI, en vb6 el tipo String es Unicode es decir que SOLO debe transformar el tipo ANSI a Unicode... pero no es cuarlquier tipo de String es un BSTR

4Bytes : Longitud.
(Lotitud*2) Bytes: Datos.
2 Bytes de Terminación.

Lo que debe de hacer el compañero es:

1.- Copiar N Bytes en una cadena String o un Array de Bytes (segun el caso: ANSI = Array de Bytes, UNICODE = String) con un Buffer X (Anticipadamente)
2.- Verificar si lo copiado es de tipo ANSI.
2.1.- Para ANSI Cada caracter No debe tener una separacion de un Byte en valor 0.
2.2.- Para Unicode Cada Caracter deberia tener un Byte 0 y los 2 ultimos bytes serian 2 bytes en valor 0 (NULOS)
3.A.- Para el caso de que sea Unicode No hacer Nada (Solo fizear los espacios entre cada caracter y dejarlos en byte 0, almenos que sean caracteres ESPECIALES como caracteres CHINOS etc...).
3.A.- Para el caso de que sea una cadena tipo ANSI debera realizar un for next desde el indice inferior al mazimo y asignarlos en un String...:

Código (vb) [Seleccionar]

'Puedo tener errores debido que lo hice aqui en el foro.
dim i as long
dim bData() as byte
dim sBuff as string
...
Codigo que copia el array de bytes aqui...
...
sBuff = space(Ubound(bData) + 1)
for i = 0 to Ubound(bData)
    Mid$(sBuff, (i*2) ,1) = chr(bData(i))
next i


TODO lo puedes hacer con un array de bytes y despues solo intercalar puenteros... es un poco mas complejo si aun no sabes manipular estas cosillas.

Nopta: Recuerda Cambiar el parametro Size de ReadProcessMemomy (es el 4to parametro de izquierda a derecha) ya que este indica CUANTOS Bytes vas a copiar... aun asi leete mas la MSDN.

Dulces Lunas!¡.

Gracias!!

Cita de: Unbr0ken en 11 Diciembre 2011, 04:48 AM
No me agrada ni poco VB6; por eso no perderé tiempo creando funciones que nunca usaré.

Te dejo aquí un proyecto (incompleto por desgracia) de un amigo del CE-F... el cual tiene lo que necesitas, una lectura en memoria se te haría fácil si usas la función ReadString.

Ojo, el proyecto en su totalidad (por tanto el crédito) pertenece a Wiccan.

Salud.

Gracias!! Me ha servido :)

Suerte!