0

我正在尝试 Naveen 的博客http://naveensrinivasan.com/2010/06/11/piracy-in-net-code-%e2%80%93-part-3-%e2%80%93提供的代码示例-甚至当代码被混淆时/
当他运行!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]  

知道我可能做错了什么吗?

4

2 回答 2

0

试试: .lines l+s

在命令窗口中。还要确保您的符号已加载。您可以使用 lm 命令显示加载的模块。

于 2010-12-11T21:04:46.463 回答
0

您的清单是对本机代码的完全有效反汇编。“int 2Eh”部分告诉我它是执行系统调用的代码:

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

这意味着代码最有可能在 ntdll.dll 中,这是它的工作所在的系统库。指令指针指向“ret”。我猜前面的指令是一个“sysenter”,实际发生的是应用程序刚刚退出(它通过进行系统调用来做到这一点)。当应用程序退出时,您的调试器会像遇到断点时一样获得控制权。

请仔细看看为什么你的断点在应用程序退出之前没有命中。

于 2011-02-20T23:09:55.243 回答