• Sábado 20 de Abril de 2024, 16:34

Autor Tema:  Obfuscación De Código  (Leído 1534 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Obfuscación De Código
« en: Jueves 3 de Mayo de 2007, 21:16 »
0
Leyendo un ebook sobre Reversing me topé con una duda.
Existen 2 tipos de desensambladores, creo que eran recursivos (Olly, IDA, PEBrowser) y otros creo lineales como Softice.
Existen así disintas técnicas para engañarlos y hacer que desensamblen mal.

Por ejemplo este código:
Código: Text
  1.  
  2.   jmp after
  3.   db 0x0f
  4. after:
  5.   mov  eax, [var]
  6.   push  eax
  7.   call    function
  8.  
  9.  

OllyDbg, al ser recursivo, desensambla perfectamente bien ese codigo. (Claro está que hay trucos no mucho mas complicados que ese que lo logran engañar.)
Pero en el caso de Softice, interpreta el codigo como:
Código: Text
  1.  
  2.   jmp    dir1
  3.   jmp    dir2
  4.   xlat
  5.   INVALID
  6.   jmp   far[eax+24]
  7.   pushad
  8.  
  9.  

Ahora la duda que me surge.... ¿Como es que el CPU nunca se confunde? (Me refiero ctambien a  técnicas que engañan hasta a IDA y Olly)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Obfuscación De Código
« Respuesta #1 en: Jueves 3 de Mayo de 2007, 22:24 »
0
El punto es que el SoftIce es principalmente un DEPURADOR y no hace demasiados analisis (el IDA es justamente lo opuesto, y el Olly digamos que es una mezcla).

En realidad solo pueden engañar a los que sean estaticos (IDA) ya que cuando ejecutas las instrucciones de ese tipo en un depurador este vuelve a desensamblar desde la direccion del puntero de instruccion actual (eip) y entonces es correcta.

Por cierto si le pedis al SoftIce que desensamble desde la direccion de after (con u creo que era) entonces tambien te lo mostrara correctamente.

La CPU ejecuta las instrucciones directamente, los opcodes de assembly son una representacion en un lenguaje "legible", no desensambla asi que no hay ningun punto donde pudiera confundirse.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.