我正在尝试在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 :(得分:0)
尝试: .lines L + S
在命令窗口中。还要确保加载符号。您可以使用lm命令显示已加载的模块。
答案 1 :(得分:0)
您的商家信息是完全有效的本机代码反汇编。 “int 2Eh”部分告诉我它是执行系统调用的代码:
http://www.codemachine.com/article_syscall.html
这意味着代码最有可能出现在ntdll.dll中,这是系统库的作用。指令指针指向“ret”。我猜测之前的指令是“sysenter”,实际发生的是应用程序刚刚退出(它是通过进行系统调用来实现的)。当应用程序退出时,您的调试器将获得与断点命中时相同的控制权。
请仔细查看在应用程序退出之前您的断点未达到的原因。