[ASM-HACK] Leyendo el PEB sin molestar AVs {2 métodos}

Iniciado por Karcrack, 11 Mayo 2012, 00:21 AM

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

Karcrack

La forma de leer el PEB habitual junto con otros factores hacía que los AVs detectasen mi binario... así pues busqué formas diferentes de leer el PEB, y esta me ha gustado especialmente. Muy ofuscada.

[FASM]
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)?


Está comentado para que haya la mínima duda posible. Cualquier cosa preguntad.





Añado este code que es un byte más ligero que el método habitual:
Código (asm) [Seleccionar]
       push $30
       pop  esi
       db $64
       lodsd

Saludos.

SEL1

Interesante uso de XLAT... aunque los procesadores siguen soportando la instruction, y es rara vez utilizada (por lo menos ahora los compiladores ya no la generan). :)

hacker83

busque y trata de leer el PEB desde C++ solo para obtener ni APPNAME.
y no lo logre, no tengo los conocimientos suficientes de asm como para entender como lo haces en asm y asi pasarlo a C.
serias tan amable de dar un ejemplo ? asi lo estudio ya que estoy interesado en aprender ASM. pero quiero dar por hecho eso de leer el process block environment de mi APP en C-

Karcrack

Código (asm) [Seleccionar]
xor eax, eax
mov eax, [FS:EAX+$30]


Esta sería la forma normal de leer el puntero al PEB en ASM, ahora tendrías que sacar RTL_USER_PROCESS_PARAMETERS desde el PEB y luego a ImagePathName y ahí ya parsear el nombre de tu ejecutable...

karmany

Solo me conecté hoy para darte las gracias por ese código. ¡Qué interesante!

Karcrack

Un honor Karmany, me alegro que te haya gustado :)

MCKSys Argentina

Muy bueno!

Ahora, pregunto: el byte 64h... para que es? para el loop?
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Karcrack

#7
Es el identificador del registro FS. Si lo pones delante de algunas instrucciones éstas en lugar de acceder a DS como lo harían de forma habitual acceden a FS  :)


Edit:Añado otra alternativa.

[Zero]

Cita de: Karcrack en 11 Mayo 2012, 00:21 AM
Añado este code que es un byte más ligero que el método habitual:
Código (asm) [Seleccionar]
       push $30
       pop  esi
       db $64
       lodsd

Saludos.


Crack :P .

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

tena

Muy Bueno. Si señor!
Gracias por compartir.

slds