Kérdés:
Hívhat-e a Windbg nyomkövetési funkció egy modulon belül?
user15580
2016-06-02 07:53:01 UTC
view on stackexchange narkive permalink

Szeretnék naplózni egy adott modulon belül egy olyan funkciót, amelyet meghívnak egy végrehajtás során.

Próbáltam! for_each_function és wt parancsot. Mivel azonban a célmodulnak nincsenek szimbólumai, a! For_each_function nem ismer fel funkciókat. Úgy tűnik, hogy a wt parancs csak egy funkcióval képes nyomon követni.

Tudom, hogy az IDA hibakereső képes nyomon követni a függvényhívásokat. De a jelenlegi problémám az, hogy csak egy adott modulban akarom nyomon követni a függvényeket. Nem vagyok biztos benne, hogy az IDA képes-e erre. Arra is kíváncsi vagyok, hogy az IDA hibakereső képes-e megszakadni a modul terhelésén (hasonlóan a windbg 'sxe ld: modulnevéhez'.

Valójában csak az összes meghívott függvény címe kell. ha van mód a töréspont beállítására az összes RET-en belül egy modulon belül ... De ne tudd meg kitalálni, hogyan kell ezt csinálni ...

Egy válasz:
blabb
2016-06-02 11:49:32 UTC
view on stackexchange narkive permalink

a calc.exe megnyitása a windbg-ben

  windbg calc 

az összes ldrint rendszerhívás kihagyása

  bp calc ! WinMain; g 

csak a calc modul nyomon követése az eip-től bizonyos meghatározott címig és a visszatérési értékek kinyomtatása (kérjük, vegye figyelembe, hogy tetszőleges értékeket használva, mivel az EndAddress megrongálhatja a kódot, ha 0xcc-t illeszt be az utasítás közepébe)

  0: 000> wt -l 2 -oR -m calc = @ eip @ eip + 5fa 

nyomkövetési eredmény visszatérési értékekkel (vágva)

  30 0 [0] calc! WinMain 5 0 [1] kernel32! GetModuleHandleWStub 1 0 [1] kernel32! GetModuleHandleW 11 0 [1] KERNELBASE! GetModuleHandleW eax = b40000 32 17 [0] calc! WinMain 11 0 [1] USER32! LoadStringW eax = a 36 28 [0] calc! WinMain 3 0 [1] calc! CCalculatorSQM :: onAppEntry 5 0 0 [2] msvcrt! Idő 24 0 [2] msvcrt! _Time32 eax = 574fd43e 5 29 [1] calc! CCalculatorSQM :: onAppEntry eax = 574fd43e 41 62 [0] calc! WinMain 12 0 [1] calc! McGenEventRegister 38 0 [2] ntdll! EtwEventRegister eax = 0 14 38 [1] calc! McGenEventRegister eax = 0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 364 12901 [0] calc! WinMain 24 0 [1] USER32! GetMessageW eax = 1 372 12925 [0] calc! WinMain 21 0 [1] USER32! TranslateA 0eler32Wx [0] calc! WinMain 19 0 0 [1] calc! CContainer :: HandleGlobalTabbing eax = 0 382 12965 [0] calc! WinMain13347 utasításokat 13346 eseményben hajtottak végre (0 más szálból)  

összefoglaló és wt törtek, ahol utasítást kaptak

  ole32! CoInitialize 1 8 8 8oleacc! ATL :: CComObject<CPropMgr> :: Release 1 16 16 16oleacc! CPropMgr :: SetHwndPropStr 5 66 66 660 rendszerhívás végrehajtása
eax = 000cf030 ebx = 00000000 ecx = 00b94210 edx = 76f070b4 esi = 00b94210 edi = 766e667eeip = 00b41c2f esp = 000cef5c ebp = 000cfcc4 iopl = 0 nv up ei pl zr na pe nccs = 001b s = = 001b ss = 00 003b gs = 0000 efl = 00000246calc! WinMain + 0x7d5: 00b41c2f e8e2010000 call calc! CEditBoxInput :: HandleWinMainMessage (00b41e16) 0: 000>? calc! WinMain + 5fanote eip kifejezés és EndAddress a wt parancsban Kifejezés kiértékelése: 11803695 = 00b41c2f  


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...