2010-11-28 100 views
0

我正在嘗試在Naveen的博客http://naveensrinivasan.com/2010/06/11/piracy-in-net-code-%e2%80%93-part-3-%e2%80%93-even-when-the-code-is-obfuscated/提供的代碼示例。
當他運行!u ($ip)命令時,他得到了一個很好的反彙編,但是當我嘗試運行同樣的事情時,我似乎碰到了一些無法反彙編的非託管代碼。我做錯了反彙編代碼

0:000> !u ($ip) 
Unmanaged code 
77555e74 c3    ret 
77555e75 8da42400000000 lea  esp,[esp] 
77555e7c 8d642400  lea  esp,[esp] 
77555e80 8d542408  lea  edx,[esp+8] 
77555e84 cd2e   int  2Eh 
77555e86 c3    ret 
77555e87 90    nop 
77555e88 55    push ebp 
77555e89 8bec   mov  ebp,esp 
77555e8b 8da42430fdffff lea  esp,[esp-2D0h] 

任何想法我可能做錯了什麼?

回答

0

您的列表是完全有效的反彙編本機代碼。該「2Eh中斷」的部分告訴我,這是執行系統調用代碼:

http://www.codemachine.com/article_syscall.html

這意味着該代碼是最有可能的ntdll.dll中,這是系統庫,他們的工作,這是。指令指針指向「ret」。我猜測前面的指令是一個「sysenter」,實際發生的是應用程序剛剛退出(這是通過進行系統調用來完成的)。當應用程序退出時,您的調試器將獲得像斷點一樣的控制權。

請仔細看看爲什麼斷點在應用程序退出前沒有打到。

0

嘗試: .lines L + S

在命令窗口

。同時確保您的符號已加載。您可以使用lm命令顯示加載的模塊。