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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo detectar cambios en .text?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo detectar cambios en .text?  (Leído 5,800 veces)
Shout

Desconectado Desconectado

Mensajes: 191


Acid


Ver Perfil
¿Cómo detectar cambios en .text?
« en: 1 Octubre 2014, 18:39 pm »

Buenas!

Hace tiempo que me pica la... curiosidad, y me pregunto: hay alguna manera de saber qué partes del código se están modificando por un DLL?

Es decir:
-> Tengo something.exe
-> Abro something.exe, e inyecto (LoadLibrary, o p.ej. LdrLoadDll) plugin.dll

Suponiendo que el plugin, en alguna parte, tiene este código:
Código:
*(BYTE*) 0xAABBCCDD = 0xC3; // ret a una función
Cómo puedo saber la dirección y los bytes que escribe, sin desempacar ni analizar el DLL? (es decir, en runtime)

Me han dicho que haga hook a "Virtual Instruction Bus", pero se necesita un driver para eso, y no es demasiado recomendable tocarlo a la ligera...


En línea

I'll bring you death and pestilence, I'll bring you down on my own
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: ¿Cómo detectar cambios en .text?
« Respuesta #1 en: 1 Octubre 2014, 18:57 pm »

Siempre podes comparar los bytes del binario en disco con los que estan en memoria, es basicamente lo que hace la extension !chkimg (Ext.dll, de los depuradores de Microsoft como WinDbg); aunque no te dira quien modifico que directamente. Si es una DLL va a tener que cambiar la proteccion de memoria para poder escribir y directa o indirectamente usara un servicio del S.O. via NTDLL, podrias interceptarlo ...


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
Shout

Desconectado Desconectado

Mensajes: 191


Acid


Ver Perfil
Re: ¿Cómo detectar cambios en .text?
« Respuesta #2 en: 1 Octubre 2014, 19:50 pm »

Siempre podes comparar los bytes del binario en disco con los que estan en memoria, es basicamente lo que hace la extension !chkimg (Ext.dll, de los depuradores de Microsoft como WinDbg); aunque no te dira quien modifico que directamente. Si es una DLL va a tener que cambiar la proteccion de memoria para poder escribir y directa o indirectamente usara un servicio del S.O. via NTDLL, podrias interceptarlo ...
Lo de VirtualProtect lo he pensado y voy a probarlo, pero me da la sensación de que no será demasiado efectivo.
Si no me equivoco, VirtualProtect cambia los permisos de la página entera y no sólo de lo que le indicas (vamos, que pasar 5 o pasar 15 como longitud en bytes acaba cubriendo una página)

No conoces ninguna otra manera de interceptar las modificaciones?
p.ej.
Código:
mov eax, DAC0DEh;
mov byte ptr [eax], C3h;
Esa parte no se puede hookear de ningún modo, ya que son puras instrucciones que van directas al CPU...
En línea

I'll bring you death and pestilence, I'll bring you down on my own
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: ¿Cómo detectar cambios en .text?
« Respuesta #3 en: 1 Octubre 2014, 19:51 pm »

Código:
mov eax, DAC0DEh;
mov byte ptr [eax], C3h;
Esa parte no se puede hookear de ningún modo, ya que son puras instrucciones que van directas al CPU...

Pero eso sin previamente cambiar la proteccion de la memoria NO FUNCIONA; al menos siempre que estemos hablando de codigo.
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
Shout

Desconectado Desconectado

Mensajes: 191


Acid


Ver Perfil
Re: ¿Cómo detectar cambios en .text?
« Respuesta #4 en: 1 Octubre 2014, 19:54 pm »

Pero eso sin previamente cambiar la proteccion de la memoria NO FUNCIONA; al menos siempre que estemos hablando de codigo.
Yep, he editado el mensaje (estoy desde tapatalk y no me salía tu respuesta). Fíjate.
En línea

I'll bring you death and pestilence, I'll bring you down on my own
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ¿Cómo detectar cambios en .text?
« Respuesta #5 en: 1 Octubre 2014, 20:05 pm »

Podrias usar VirtualProtect sobre la sección de codigo con el flag PAGE_GUARD.
Eso raisea una excepcion cada vez que se accede al codigo.

Con un handler podrias saber quien es el que esta tratando de acceder.

Las contras son que al ejecutar, tambien saltará la excepcion y que, ademas, el flag es one-shot; osea, deberas proteger nuevamente la sección despues de cada excepcion.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Shout

Desconectado Desconectado

Mensajes: 191


Acid


Ver Perfil
Re: ¿Cómo detectar cambios en .text?
« Respuesta #6 en: 1 Octubre 2014, 20:07 pm »

Podrias usar VirtualProtect sobre la sección de codigo con el flag PAGE_GUARD.
Eso raisea una excepcion cada vez que se accede al codigo.

Con un handler podrias saber quien es el que esta tratando de acceder.

Las contras son que al ejecutar, tambien saltará la excepcion y que, ademas, el flag es one-shot; osea, deberas proteger nuevamente la sección despues de cada excepcion.

Saludos!
¡Perfecto!
Parece ser bastante viable. A la que vuelva a casa, lo pruebo y reporto :) La idea es muy buena.

Muchas gracias!
En línea

I'll bring you death and pestilence, I'll bring you down on my own
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: ¿Cómo detectar cambios en .text?
« Respuesta #7 en: 1 Octubre 2014, 20:13 pm »

Yep, he editado el mensaje (estoy desde tapatalk y no me salía tu respuesta). Fíjate.

Las paginas son de 4KB, incluso podrias guardar en un buffer antes de llamar a la funcion original y comparar X tiempo despues ...
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
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ¿Cómo detectar cambios en .text?
« Respuesta #8 en: 1 Octubre 2014, 20:22 pm »

Las paginas son de 4KB, incluso podrias guardar en un buffer antes de llamar a la funcion original y comparar X tiempo despues ...

O bien implementar un CRC de codigo. Hay muchas opciones...
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: ¿Cómo detectar cambios en .text?
« Respuesta #9 en: 1 Octubre 2014, 20:47 pm »

O bien implementar un CRC de codigo. Hay muchas opciones...

Seguro aunque no te permitiria mas que saber que hubo cambios, algo que se podria derivar directamente de interceptar el cambio de proteccion de la pagina ...
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] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo detectar mediante la Api cambios en la información del disco duro. « 1 2 »
Programación Visual Basic
goodbye 12 7,452 Último mensaje 2 Agosto 2005, 00:45 am
por Slasher-K
Detectar cambios en el sistema con Regshot
Seguridad
madpitbull_99 4 10,094 Último mensaje 22 Enero 2011, 15:04 pm
por Garfield07
Detectar cambios mysql con php socket
PHP
70N1 6 7,919 Último mensaje 9 Mayo 2014, 12:33 pm
por 70N1
detectar parrafo de registro mysql tipo text
PHP
basickdagger 3 2,062 Último mensaje 20 Enero 2015, 19:18 pm
por MinusFour
Como detectar cambios en un listbox en tiempo de ejecución
Programación Visual Basic
rapbyone 1 2,541 Último mensaje 20 Agosto 2016, 04:55 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines