Saltar al contenido
Underc0de /foro

[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs

Iniciado por Karcrack, Junio 16, 2013, 06:12:07 PM

Tema anterior - Siguiente tema

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

Avatar de Karcrack
Junio 16, 2013, 06:12:07 PM Ultima modificación: Julio 10, 2013, 10:27:22 AM por Expermicid
Debido a que la forma habitual de obtener el puntero del PEB estaba haciendo que me saltasen los AVs he diseñado otra que se los salta :-* :-*

Forma habitual:
Código: asm
        xor eax, eax
        mov eax, [FS:eax+$30]


Forma que he ideado:
Código: asm
        push $30
        pop  esi
        db $64
        lodsd

(Ambas establecen EAX al puntero del PEB)
Utiliza un byte menos :P :P


Añado más métodos:


Forma ofuscada:
Código: asm
   push $30     ;v
   pop  ebx     ;>EBX = 0x30
   mov  cl, 4   ;>CL  = 4

@@:mov  al, cl  ;>AL  = CL        <<<
   db   $64     ;v                  ^
   xlatb        ;>AL  = FS:[EBX+AL] ^
   shl  eax, 8  ;>EAX <<= 8         ^
   loop @B      ;>>>>>>>>>>>>>>>>>>>^ (--ECX>0)?

Forma muy similar pero con opcodes diferentes :D (Se podría variar con muchos otros movs condicionales):
Código: asm
   xor   eax, eax
   cmovz eax, [FS:eax+$30]


Saludos :D
WhatsApp Telegram
I code for $$$.

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

7 respuestas

Avatar de Arkangel
Muy buena karcrack.

Se podria hacer tambien usando LEA?

Saludos

Avatar de Karcrack
No creo ya que lea no lee de memoria nada :-\ Igualmente he visto un par de instrucciones que pueden ser interesantes si tengo tiempo les echare un vistazo y actualizo :D
I code for $$$.

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

Avatar de Juan
Otra sencillita

Código: ASM
push dword[fs:0x30]
pop eax

Avatar de Vermillion
Cita de: mDrinky en Julio 10, 2013, 04:19:18 PM
Otra sencillita

Código: ASM
push dword[fs:0x30]
pop eax


Demasiado explícito. El concepto es evitar el [fs:0x30].

Avatar de Karcrack
Uno usando FPU ;D
Código: asm
        push $30
        pop  eax
        push eax
        fld  dword[FS:eax]
        fstp dword[esp]
        pop  eax
        ret     
I code for $$$.

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

Avatar de Arkangel
yo lo decia por que si ves la descripcion de "lea", dice que hace como si accediera a memoria, pero te devuelve la direccion a la que accede. por lo tanto segun esa definicion cabe la duda de si hara tambien la traduccion de los segmentos.

Saludos

Avatar de Karcrack
Sí, yo miré la definición de la instrucción en el manual de Intel pero al no retornar la lectura de ningún modo no sirve de nada... Si prueba esto verás que devuelve $30:
Código: asm
        xor eax, eax
        lea eax, [FS:eax+$30]
        ret

El prefijo es superfluo...
I code for $$$.

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

¿Te quedó una duda sobre ASM?

Preguntala y te responde la comunidad (y el asistente Underc0de IA si nadie llega antes). Es gratis y tarda un minuto.

Ya tengo cuenta
Guardamos tu pregunta en este navegador: después de entrar la publicás con un clic.
Grupo de WhatsApp