[ Vojislav Milunovic @ 29.11.2004. 22:50 ] @
Evo prodje neko vreme i ja se igram sa TEB da vidim sta se sve tu moze zanimljivo naci kad ono =>>
Code:

0:000> dt nt!_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


Zipa ovo moze da se promeni ponasanje programa ako pokusamo da ga pokrenemo kroz debugger =)
Da da =) i meni je upalo u oci BeingDebugged =) byte velicina i sta kaze ->>>
Ako je process u debuggeru to je 1 a ako nije onda 0 =)
Znaci nesto ovako :
Code:

...
 mov eax, FS:[30h]
 xor ebx, ebx
 mov bl, byte ptr[eax+2]
 or ebx, ebx
 jnz exit     
...

Evo i example koda na
http://nonenone.cjb.net/progz/tebpebdbg.zip

Mane: proces moze da se lepo disassembluje ali ne mogu da se prate break-pointi normalno ukoliko u dbg-u ne modifikujete EIP ili Z flag(bas pre nego sto dodje do jnz) =)
Eto malo zanimacije pred spavanje =)
[ drizz @ 30.11.2004. 01:05 ] @
tj. :

Code:

CheckIsDebuggerPresent proc
    invoke LoadLibrary,T('KERNEL32')
    invoke GetProcAddress,eax,T('IsDebuggerPresent')
    .if eax
        call eax; Win ver > 95
    .endif
    ret
CheckIsDebuggerPresent endp


a za 9x/me

Code:
    mov eax,fs:[TIB.DebugContext]
    .if eax
    ...
    .endif
    mov ebx,fs:[TIB.pParentPDB]
    mov eax,[ebx].PDB.flags
    .if eax & fDebugSingle
    ...
    .endif
    mov eax,[ebx].PDB.DebuggeeCB
    .if eax
    ...
    .endif
[ Sundance @ 30.11.2004. 05:57 ] @
Eh, ovo budi uspomene

Ovaj trik radi samo sa application-level debuggerima tipa olly, ne i sa SoftIce/TRW2000 jerbo se cacheriranje PEB/TEB struktura iz kernela dogadja po kontekstu procesa.

Ako se ne varam, prvi put spomenuto u jednom vx text iz '96/'97 (tu negdje uglavnom ) kad su virusopisci jos pokusavali naci univerzalnu metodu nalazenja imagebase-a kernela i adrese API-ja. Kasnije su tu metodu ukrali LSD-planetovci u svome famoznom textu

Dokumentacija ostalih polja ima u DDK i u EliCZ-ovim include-ovima (i leaked win2k source codu )

Enivej Vojislav, keep on roxin', ima jos puno struktura za istrazit
[ Vojislav Milunovic @ 30.11.2004. 12:02 ] @
Mislim ovo sam probao i na IDA Pro, olly Dbg i Windbg i radilo je ok=) Nije mi ni na kraj pameti palo da nece da radi sa drugim debuggerima =)

A znam da ima jos mali milion tih struktura, bas gledam ovaj Isnide Windows da vidim sta sve tu moze doista naci...
I gde ima taj procureli kod od win2k? Mislim ono daj mi samo ime file-a pa da trazim... =)
[ Sundance @ 30.11.2004. 21:05 ] @
Ima na google :)

Ima ga i na kazaa mrezi, a ima ga i svaki wannabe haxor koji imalo drzi do sebe :)

Samo je fora da 0.1% onih koji ga skinu stvarno im posluzi da nesto nauce :(
[ Vojislav Milunovic @ 30.11.2004. 21:59 ] @
da da to je istina... =)
heh znam da mnogi traze kodove/sourceve i slicno, pa samo vise na kompu...
Ja sam ranije tako skidao gomilu pa posle nisam znao sta je sta... obrisao sve i skinuo samo ono sto mi treba =) Tako barem sad znam sta je sta =)
A ovaj source ima 204mb...uff moracu do plato+ da skinem ovo =))
[ Vojislav Milunovic @ 01.12.2004. 23:59 ] @
Ja secem muda ako ovi MS-a znaju sta su sve pisali po ovom kodu =)

Auuuuuuuuu =))