Underc0de

Programación General => ASM => Mensaje iniciado por: Karcrack en Junio 16, 2013, 06:12:07 pm

Título: [ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Karcrack en Junio 16, 2013, 06:12:07 pm
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) [Seleccionar]
        xor eax, eax
        mov eax, [FS:eax+$30]

Forma que he ideado:
Código: (asm) [Seleccionar]
        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) [Seleccionar]
   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) [Seleccionar]
   xor   eax, eax
   cmovz eax, [FS:eax+$30]

Saludos :D
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Arkangel en Julio 10, 2013, 09:18:48 am
Muy buena karcrack.

Se podria hacer tambien usando LEA?

Saludos
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Karcrack en Julio 10, 2013, 11:20:06 am
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
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Juan en Julio 10, 2013, 04:19:18 pm
Otra sencillita

Código: (ASM) [Seleccionar]
push dword[fs:0x30]
pop eax
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Vermillion en Julio 10, 2013, 06:03:34 pm
Otra sencillita

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

Demasiado explícito. El concepto es evitar el [fs:0x30].
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Karcrack en Julio 10, 2013, 07:13:16 pm
Uno usando FPU ;D
Código: (asm) [Seleccionar]
        push $30
        pop  eax
        push eax
        fld  dword[FS:eax]
        fstp dword[esp]
        pop  eax
        ret     
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Arkangel en Julio 10, 2013, 07:57:04 pm
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
Título: Re:[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs
Publicado por: Karcrack en Julio 10, 2013, 08:02:01 pm
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) [Seleccionar]
        xor eax, eax
        lea eax, [FS:eax+$30]
        ret
El prefijo es superfluo...