2014-09-23 105 views
3

我在WinDbg中調試過程的退出代碼,過程退出:獲取終止進程

0:009> g 
(bunch of regs...) 
ntdll!NtTerminateProcess+0xc: 
770ad43c c20800   ret  8 
0:009> g 
    ^No runnable debuggees error in 'g' 

在這一點上,我如何才能進程的退出代碼?

回答

4

您可以將其作爲ZwTerminateProcess的第二個參數。 NtTerminateProcess只是它的內核版本,對不對?

0:000> kb 
ChildEBP RetAddr Args to Child    
003ff414 7774d5ac ffffffff 1234abcd 00000000 ntdll!ZwTerminateProcess+0x12 
003ff430 759c79ec 00000000 77e8f3b0 ffffffff ntdll!RtlExitUserProcess+0x85 
... 

或者RtlExitUserProcess

0:000> kn 
# ChildEBP RetAddr 
00 003ff414 7774d5ac ntdll!ZwTerminateProcess+0x12 
01 003ff430 759c79ec ntdll!RtlExitUserProcess+0x85 
... 

0:000> .frame 01 
01 003ff430 759c79ec ntdll!RtlExitUserProcess+0x85 

0:000> dd esp L4 
003ff414 7771fcc2 7774d5ac ffffffff 1234abcd 
+0

的第四個參數我想ZwTerminateProcess =內核,NtTerminateProcess =用戶。反正,很好,謝謝! – Jonathan 2014-09-23 12:32:52

+1

在用戶模式中,Nt *和Zw *是相同的函數(注意兩個符號名稱的地址相同):0:048> x ntdll!* terminateprocess' 774bbeb0 ntdll!NtTerminateProcess() 774bbeb0 ntdll!ZwTerminateProcess(<無參數信息> – 2014-09-23 13:29:37