Enero 16, 2018, 01:44:18 am

Autor Tema: Structured Exception Handler Anti-Debugging  (Leído 3036 veces)

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

Desconectado Binary_Death

  • Moderador
  • *****
  • Mensajes: 821
  • Sexo: Masculino
    • Ver Perfil
Structured Exception Handler Anti-Debugging
« en: ſeptiembre 16, 2013, 02:17:34 pm »
Una de esas cosas que se pueden manejar perfectamente en ASM pero no en, por ejemplo, C/C++, es el SEH de nuestro programa, o mejor dicho, el SEH de cada uno de los threads de nuestro proceso.

El SEH es un manejador de excepciones, y sirve para manejar cualquier excepción (lectura-escritura en páginas protegidas o incluso división por 0  :P) y hacer que nuestro programa no colapse o windows pille la excepción y nos muestre un bonito mensaje de error.

Pero eso no es todo. También es un excelente método antidebugging, ya que la mayoría de debuggers paran al verse en una excepción. Antes de nada, quiero presentar esta excelente información, que creo que es la mejor que hay sobre el tema:
You are not allowed to view links. Register or Login Handling in Practice

Esto nos enseña cómo colocar un manejador de excepciones, y ahora podemos ver cómo implementarlo como método de antidebugging, que es realmente sencillo, a la par que un truco bastante viejo:

Código: (asm) You are not allowed to view links. Register or Login
.386
.model flat, stdcall
option casemap:none
assume fs:nothing

    .code
   
main:
    call    setup_seh
_next:
    mov     esp, [esp + 8]
    pop     fs:[0]
    add     esp, 4
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;Aquí pondremos nuestro código;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    nop
    nop
    nop
    nop
    ret
           
setup_seh:
    push    fs:[0]
    mov     fs:[0], esp
    inc     byte ptr ds:[0]
 
end     main

Sólo colocamos un manejador de excepciones y provocamos una exepción. Esto hará que saltemos a la dirección de _next

Notemos que con el call lo que hacemos es empujar a la pila la dirección de la siguiente instrucción, que será la dirección de nuestro manejador.

En fin, creo que es un tema interesante y con bastantes aplicaciones. Poder hacer lo que quieras (o casi) en tu código sin miedo a que se muera es fantástico.
« Última modificación: ſeptiembre 16, 2013, 02:20:27 pm por Binary_Death »


exclamation
Tutorial - Stack overflow bypassing SEH "Structured Exception Handler"

Iniciado por soez

8 Respuestas
2348 Vistas
Último mensaje Enero 20, 2012, 06:32:13 am
por soez
exclamation
Debugging.

Iniciado por cggj

4 Respuestas
1773 Vistas
Último mensaje Junio 11, 2008, 02:11:11 pm
por cuantico
exclamation
Debugging codigo en C con gdb

Iniciado por chili-remasterizado

5 Respuestas
2055 Vistas
Último mensaje Febrero 28, 2010, 09:03:54 pm
por WaesWaes
xx
Microsoft Windows COM Structured Storage Local Exploit (MS05-012)

Iniciado por Vassily

0 Respuestas
1986 Vistas
Último mensaje Junio 17, 2005, 12:42:40 pm
por Vassily
question
¿¿Null Pointer Exception??

Iniciado por rojobe33

0 Respuestas
1247 Vistas
Último mensaje Marzo 21, 2011, 02:18:57 pm
por rojobe33
xx
DESCIFRAR ARCHIVO DB-EXCEPTION (Whatsapp).

Iniciado por RatedR

1 Respuestas
3510 Vistas
Último mensaje Noviembre 01, 2015, 03:02:52 pm
por [ARROW]
xx
Error Applet y Java Script (uncaught exception)

Iniciado por v2r3

0 Respuestas
828 Vistas
Último mensaje Julio 27, 2012, 07:06:06 pm
por v2r3
xx
Symantec renueva anti-virus y anti-spyware en español

Iniciado por Malvinas

0 Respuestas
1311 Vistas
Último mensaje Junio 17, 2006, 02:56:38 am
por Malvinas
question
Anti ddos o anti nuker

Iniciado por Cm Raga

5 Respuestas
1381 Vistas
Último mensaje Octubre 02, 2011, 01:16:54 am
por seth
resuelto
[Soluc] Metasploit "Exploit exception" al ejecutar comando "Exploit" por 2da vez

Iniciado por EddyW

2 Respuestas
2355 Vistas
Último mensaje Abril 01, 2011, 03:53:36 pm
por EddyW