[ASM][?] Que significa esto?

Iniciado por Erik#, 11 Mayo 2009, 21:39 PM

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

Erik#

mov eax,dword[fs:18h]
mov eax,dword[eax+30h]
movzx eax,byte[eax+2]

Lo vi en un anti debugger de krakwar y querría saber para que sirve y que hace.

Eternal Idol

#1
En fs:[0x18] hay un puntero a la estructura TEB (Thread Environment Block), cuyo campo ProcessEnvironmentBlock (puntero a PEB esta en el offset 0x30). A su vez el campo BeingDebugged (un BYTE) esta en el offset 2 de la estructura PEB. Cuando el proceso este siendo depurado eax sera 1  :P

0:000> dt _TEB
   +0x000 NtTib            : _NT_TIB
   +0x01c EnvironmentPointer : Ptr32 Void
   +0x020 ClientId         : _CLIENT_ID
   +0x028 ActiveRpcHandle  : Ptr32 Void
   +0x02c ThreadLocalStoragePointer : Ptr32 Void
   +0x030 ProcessEnvironmentBlock : Ptr32 _PEB
   +0x034 LastErrorValue   : Uint4B
... sigue

0:000> dt _peb
ntdll!_PEB
   +0x000 InheritedAddressSpace : UChar
   +0x001 ReadImageFileExecOptions : UChar
   +0x002 BeingDebugged    : UChar
   +0x003 SpareBool        : UChar
   +0x004 Mutant           : Ptr32 Void
   +0x008 ImageBaseAddress : Ptr32 Void
   +0x00c Ldr              : Ptr32 _PEB_LDR_DATA
   +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS
... sigue

PD. Estas estructuras las podes ver con el comando dt del WinDbg por ejemplo.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón