[FASM][64bits]Detección de emuladores usando Heaven's gate

Iniciado por Karcrack, Julio 19, 2013, 01:27:28 PM

Tema anterior - Siguiente tema

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

Código: asm
;use32
; Karcrack - 190713
proc NotEmulated
   push  cs             ;//put 0x23 in stack
   call  to64
   ret
to64:
   push  $CB0033        ;//put 0x33 in stack
   call  to64 + 3       ;//call to retf
use64
   xor   rax, rax       ;//DEC EAX; XOR EAX, EAX
   inc   rax            ;//DEC EAX; INC EAX
   retf                 ;//Back to x86
endp   


El método consiste en ejecutar ensamblador x64 dentro de un proceso x86 usando la heaven's gate. Básicamente la técnica consiste en cambiar el segmento de código.

Si ensamblamos en x64 las siguientes instrucciones:
Código: asm
xor rax, rax
inc rax

Y luego las desensamblamos como si fuese x86 veremos que se transforma en:
Código: asm
dec eax
xor eax, eax
dec eax
inc eax

El prefijo que indica que se trata de un registro de 8bytes es "dec eax". Se observa que si las instrucciones se ejecutan en x64 devuelve 1 en EAX pero si se hace en x86 devuelve 0.

No conozco ningún emulador que detecte el cambio de segmento y cambie la arquitectura que emula jaja

Disfrutad :)
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer