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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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...