Zpět na seznam článků     Zpět na článek

Komentáře ke článku

 
 
 BBCode
F | 213.220.200.*14.6.2007 9:06
Doplnim predchozi info, kdyz uz to qaaz pro vohnouty sepsal.
3)
nt!_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
+0x000 Length : Uint4B
+0x004 Initialized : UChar
+0x008 SsHandle : Ptr32 Void
+0x00c InLoadOrderModuleList : _LIST_ENTRY
+0x000 Flink : Ptr32 _LIST_ENTRY
+0x004 Blink : Ptr32 _LIST_ENTRY
+0x014 InMemoryOrderModuleList : _LIST_ENTRY
+0x000 Flink : Ptr32 _LIST_ENTRY
+0x004 Blink : Ptr32 _LIST_ENTRY
+0x01c InInitializationOrderModuleList : _LIST_ENTRY
+0x000 Flink : Ptr32 _LIST_ENTRY
+0x004 Blink : Ptr32 _LIST_ENTRY
+0x024 EntryInProgress : Ptr32 Void
...
4) Skutecne je default handler vzdy v kernel32?
5) Ve skutecnosti fs:0 ukazuje primo na TEB:
+0x000 NtTib : _NT_TIB
+0x000 ExceptionList : Ptr32 _EXCEPTION_REGISTRATION_RECORD
+0x000 Next : Ptr32 _EXCEPTION_REGISTRATION_RECORD
+0x004 Handler : Ptr32
+0x004 StackBase : Ptr32 Void
+0x008 StackLimit : Ptr32 Void
+0x00c SubSystemTib : Ptr32 Void
+0x010 FiberData : Ptr32 Void
+0x010 Version : Uint4B
+0x014 ArbitraryUserPointer : Ptr32 Void
+0x018 Self : Ptr32 _NT_TIB
+0x000 ExceptionList : Ptr32 _EXCEPTION_REGISTRATION_RECORD
+0x004 StackBase : Ptr32 Void
+0x008 StackLimit : Ptr32 Void
+0x00c SubSystemTib : Ptr32 Void
+0x010 FiberData : Ptr32 Void
+0x010 Version : Uint4B
+0x014 ArbitraryUserPointer : Ptr32 Void
+0x018 Self : Ptr32 _NT_TIB
+0x01c EnvironmentPointer : Ptr32 Void
+0x020 ClientId : _CLIENT_ID
+0x000 UniqueProcess : Ptr32 Void
+0x004 UniqueThread : Ptr32 Void
+0x028 ActiveRpcHandle : Ptr32 Void
+0x02c ThreadLocalStoragePointer : Ptr32 Void
+0x030 ProcessEnvironmentBlock : Ptr32 _PEB
...
qaaz | 82.208.44.*14.6.2007 5:32
Jinak, metoda z tveho clanku je ta treti, kdyby to nebylo zrejme :)
A neber to jako kritiku, ale jako nakopavani spravnym smerem ;)
qaaz | 82.208.44.*14.6.2007 5:22
Takze zase upresneni k metodam hledani bazovky kernel32.dll. Kazdy to obslehne z nejakeho tutorialu a ani se neobtezuje zjistit jak to vlastne funguje. Tady jsou ruzne metody:

1) Vyzkousime ruzne adresy, na kterych vime, ze se v ruznych verzich widli vyskytuje.
2) Prohledame celou pamet, nebo jeji casti, bajt po bajtu.
3) Na fs:[0x30] je ulozena adresa PEB, ktery mimo jine obsahuje seznam loadnutych modulu serazeny podle poradi jejich inicializace (InInitOrderModuleList, nebo tak nejak). Z nej nacteme druhou polozku, ktera je kernel32 (prvni je ntdll).
4) Defaultni exception handler je v kernel32. Z fs:[0] nacteme aktualni handler a prochazime SEH list az k poslednimu handleru, ktery je ten z kernel32.dll. Tim ziskame adresu uvnitr kernel32, takze staci jet dolu dokud nenarazime na jeho hlavicku. Dllky se loaduji zarovnane na 64KB, takze staci jit po 64KB krocich (cimz zaroven preskocime matouci data jeste pred [za] hlavickou).
5) Na fs:[0x18] je ulozena adresa TEB, ktery mimo jine obsahuje i hodnotu vrcholu zasobniku. 0x1C bajtu od nej je pointer ukazujici do kernel32, odtud zase jedeme dolu (po mezich 64KB) az k hlavicce.

A jako vzdy male rejpnuti na konec:
To, ze nevis co ten kod dela, je v pohode.
To, ze si to nevygooglis, je k zamysleni.
To, ze o tom i presto pises clanek, je hloupe.
To, ze ho nenapises tak, aby to nebylo moc videt, je pekne trapny ;)
F | 213.220.200.*12.6.2007 17:17
ten link to zmrsilo, ted bez http: a 1. tecky:
www_microsoft.com/msj/0298/hood0298.aspx
F | 213.220.200.*12.6.2007 17:15
nekde sem cet ze tohle je server pro zacatecniky. Ja bych jen doplnil "od zacatecniku pro z.". Autorovi doporucuji nastudovat [link] pak treba pochopi na co ukazuje register fs v user modu. Btw 0+30h = 30h :)
Pokud mate doma SDK ci jediny opravdovy debugger (windbg), vsechny potrebne struktury najdete v winnt.h
Slammer____ | 89.102.102.*11.6.2007 10:11
Na pravopis se vydlabni ... Precte to kazdy .. hlavni je kvalita a ta tu je :)
Harvie | E-mail | Website | ICQ 28378297811.6.2007 9:59
Tak jako nice, akorat trosku pochybuju o uzitecnosti. Jako shellcode, kterej vyhazuje messageboxy je kool prace, ale k cemu? Mozna k demonstraci. Pokud vim, tak spustit shell se da i pomoci preruseni. == Mas husty skilly, ktery ti zavidim, ale da se to delat i jednoduse.

----------
Harvie's blog: [link] g33k-shop: [link] fs: [link]
Registered GNU/LINUX user #468114 [link]
babca | 194.228.235.12/14.154.79.254, 127.0.0.*11.6.2007 9:23
Posledni zastavka v i-kavarne... Za ten pravopis sry...
Slammer___ | 89.102.102.*11.6.2007 8:08
Bezva clanek :)) Ikdyz mu skoro vubec nerozumim ... nedokazu si predstavit ze bych mel napsat neco takoveho jenom aby mi to vypsalo Ahoj xD
D&3m0n22 | E-mail | ICQ 27350550011.6.2007 7:41
Good článek BabCo

Stránky: 1 2 3