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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Me pueden explicar unas dudas sobre ReadProcessMemory?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Me pueden explicar unas dudas sobre ReadProcessMemory?  (Leído 3,382 veces)
otroWeyMas.nasm

Desconectado Desconectado

Mensajes: 23


Ver Perfil
¿Me pueden explicar unas dudas sobre ReadProcessMemory?
« en: 23 Enero 2022, 04:09 am »

Hola

Estoy haciendo una herramienta para reverse, bueno... un intento de reverse jeje, y leyendo en MSDN encontré que hay funciones que sirven para debugger.

Estoy usando "VirtualQueryEx" y "ReadProcessMemory", pero tengo 3 preguntas, espero me puedan explicar algunos detalles.

Muestro parte del código donde necesito ayuda.

Código:
while(iniAddr < (unsigned char*)sInfo.lpMaximumApplicationAddress){

if(VirtualQueryEx(procPath, iniAddr, &mbI, sizeof(mbI)) != 0){

ddump = (PBYTE)malloc(mbI.RegionSize);

if(mbI.Protect == PAGE_READWRITE && mbI.State == MEM_COMMIT){

ReadProcessMemory(procPath, mbI.BaseAddress, ddump, mbI.RegionSize, &ridbyts);

for(int b = 0; b < ridbyts; b++){

printf("%c", ddump[b]);
}

}

}

Cuando dejo solo while, no tarda nada en terminar la ejecución, ahorita entenderán porque lo menciono.

Al parecer el código funciona bien, me tarde en lograrlo, pero creo funciona, bien, si encuentran algo mal, espero puedan corregirme.

Primera pregunta.

¿ReadProcessMemory, esta bien formulado?, porque buscando información, encontré diferentes maneras de usarlo, por ejemplo, yo utilicé BaseAddress, pero he visto quien a utilizado el buffer de VirtualQueryEx que sería iniAddr.

Segunda pregunta.

En el For, yo utilicé ridbyts, que es readbytes de "ReadProcessMemory", pero he visto que otros utilizan RegionSize, que sería mbI.RegionSize... pero cual sería el indicado, ¿readbytes o RegionSize?.

Tercera pregunta.

Relacionado a la segunda pregunta, con cualquiera de los dos (readbytes o RegionSize), no parece tener fin cuando empieza a mostrar el dumpeo del proceso, al principio no sabía si funcionaba, utilice block de notas, pero lo que había escrito no lo encontré, solo me apareció "Edito de texto", y otras cosas como nombre del archivo y path, etc,.. pero después utilice notepad++ y me salio lo que había escrito en notepad junto con otra pestañas que tenía abierta, lo que significa que funciona el código.

Pero repito, no tiene fin. ¿Creen que lo que hace readprocessmemory es darme tooooodo lo que hay en memoria, o me esta dando toooodo lo que el proceso utiliza en memoria, o el For es tan grande que no solo estoy leyendo el proceso, sino que ademas estoy leyendo cosas que no tienen nada que ver?, o es normal.

Los ejemplos que encuentro casi son parecidos, todo te piden que les especifiques una dirección o en el bloc de notas una frase y cuando el código encuentra la frase se detiene y te dice la dirección en hexadecimal. Y es interesante, pero yo no quiero especificar algo, bueno talvez después, pero ahorita que todavía estoy tratando de entender, quiero ver como debe funcionar consiguiendo el analisis completo.

Espero me puedan ayudar con esas dudas.


« Última modificación: 23 Enero 2022, 17:41 pm por otroWeyMas.nasm » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Me pueden explicar unas dudas sobre ReadProcessMemory?
« Respuesta #1 en: 23 Enero 2022, 08:48 am »

1) Lo mas correcto es usar lo retornado por VirtualQueryEx pero si arrancas con iniAddr siendo 0 y le vas sumando el tamaño de cada region retornada - ver punto 3 - deberian ir coincidiendo siempre.

2) En teoria deberian ser lo mismo pero por simple logica es mejor usar el valor que tu programa pudo leer.

3) ¿Que valor tiene iniAddr en cada iteracion del bucle si la inicializo a 0? 0, bucle infinito, no hay nada en tu codigo para ir alterando su valor en cada iteracion.

¿Y si VirtualQueryEx falla que hacemos? ¿Tambien entra en bucle infinito?

Llegados a este punto es imperativo que logres depurar tu programa linea por linea, y para mi gusto no hay mejor opcion que el WinDbg.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
otroWeyMas.nasm

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: ¿Me pueden explicar unas dudas sobre ReadProcessMemory?
« Respuesta #2 en: 23 Enero 2022, 17:56 pm »

Ok gracias.

Al principio no entendí bien el punto 3, parecía adivinanza jeje, pero logré modificarlo y por si las dudas usé GetLastError en VirtualQueryEx, pero no pasó nada malo y ya funciona, o eso parece... el bucle ya se detiene y me muestra el resultado esperado.

Gracias de nuevo Eternal. 
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Me pueden explicar unas dudas sobre ReadProcessMemory?
« Respuesta #3 en: 23 Enero 2022, 18:02 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿alguien me puede explicar unas dudas interesantes?
Programación Visual Basic
cuantumhacker 0 1,266 Último mensaje 19 Junio 2009, 02:16 am
por cuantumhacker
unas dudas sobre las apis
Programación General
Arconte 0 1,536 Último mensaje 16 Diciembre 2011, 02:02 am
por Arconte
Unas cuantas dudas sobre Ubuntu
GNU/Linux
motocros_elche 2 2,754 Último mensaje 8 Enero 2014, 00:59 am
por #!drvy
Unas dudas sobre protocolo TCI/IP
Redes
Mario Olivera 6 4,769 Último mensaje 11 Julio 2014, 01:19 am
por Mario Olivera
Unas dudas sobre .NET
.NET (C#, VB.NET, ASP)
ivancea96 5 5,004 Último mensaje 12 Noviembre 2014, 15:05 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines