[TUTORIAL] Antidebug: SEH (structured exception handling) y trampa de flag

  • Hola Invitado, ¿Quieres ganar dinero con GamerzHacking?, estamos necesitando creadores de contenido en game hacking o pirateria de juegos ingresa al siguiente enlance para mayor informacion AQUI
  • Hola Invitado, ¿Creas contenido sobre game hacking en tu blog o sitio web?, ¿Te gustaria formar una alianza para asi poder generar mas trafico en tu sitio y seguir creciendo como comunidad? INGRESA AQUI


274
Me Gusta
128
Temas

c0de

MOV EAX, EDX
Registrado
19 Abr 2020
Temas
128
Mensajes
250
Ubicación
Localhost
Mejores respuestas
0
Aquí hay un pequeño y lindo truco antidebugs que puede ser bueno conocer o que puedes usar en combinación con otros métodos para proteger tus programas.
He visto algunos artículos que mencionan esto, pero no exactamente cómo implementarlo. Intenté configurar el controlador de excepciones en ensamblado puro, que parece ser el método utilizado en varios crackmes, sin que funcione. Afortunadamente, c/c ++ admite SEH y resultó bastante trivial hacer que esto funcione con c ++ en combinación con unas pocas líneas de ensamblaje en línea.

Esta parte del código a continuación es la parte importante. El registro de la bandera no se puede cambiar directamente, pero empujándolo a la pila puede hacer lo que quiera con él y luego volverlo a colocar en el registro. Al xoring con la máscara correcta, puede establecer campos arbitrarios en el registro. Cuando se realiza xoring con 0x100, el indicador de trampa se establece ya que es el octavo bit en el registro del indicador.

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Bajo la ejecución normal de un programa, se generará una excepción y se llamará al controlador de excepciones si se establece el indicador de captura. Sin embargo, el indicador de trampa es una característica esencial que los depuradores usan para avanzar un paso por cada instrucción. Establecer el indicador de trampa durante la depuración no dará lugar a una llamada a su propio controlador de excepciones porque el depurador ya se ocupa de las excepciones relacionadas con el indicador de trampa.

En el código a continuación, si se está depurando, simplemente se ignorará la configuración del indicador de captura y se procederá a la ejecución, aquí visualizado mediante la llamada (MessageBoxA (NULL, "debugger is present", "", MB_OK)). Sin embargo, cuando el programa no se esté depurando, se llamará a su controlador de excepciones.

C++:
Porfavor, Acceder o Registrarse para ver el contenido de los códigos!

Este truco por sí solo no es difícil de eliminar, pero en combinación con otros métodos puede hacer que los programas sean más difíciles de revertir. Si alguna vez ve la instrucción "popfd" en un programa que está tratando de revertir, debe tener esto en mente. Hay muchas posibilidades de que lo que el desensamblador muestra que estás ejecutando no sea realmente cierto.

Tengo una pregunta sobre Win7 SP1 por cierto. Este código funciona perfecto en Win10, pero Win7 cree que mi programa se ha bloqueado aunque no lo haya sido. ¿Alguien sabe si algo está mal con SEH en Win7? Cuando ejecuto el programa, aparece un mensaje emergente, pero después de hacer clic en "cerrar el programa", mis cuadros de mensaje aparecen correctamente. Pensé que "cerrar el programa" debería cerrar el programa y no permitirme ejecutar ningún código arbitrario que deseo después de esto.

1588800335337.png

Creditos
Beizer
 
AdBlock Detectado

Lo sentimos, los anuncios son molestos!

Claro, el software de bloqueo de anuncios hace un gran trabajo al bloquear anuncios, pero también bloquea funciones útiles de nuestro sitio web. Para obtener la mejor experiencia en el sitio, deshabilite su AdBlocker.

He desactivado AdBlock    No, gracias