您想将断点放置在代码部分之外。在数据上设置的INT3断点将不会执行,并且可能对调试后的程序造成灾难性影响。您真的要在此处设置断点吗?
注意:您可以在Options | Security中永久禁用此警告。断点。
所以我的问题是:
我该如何绕过烦人的消息?或者更好:我该怎么办才能看不到?
#1 楼
PE文件具有多个部分,如.code
,.data
,.bss
等。每个部分都有特殊用途,例如.code
部分通常包含程序代码,即指令,.data
部分包含初始化变量等。 br />以上规则仅是编译器遵循的约定。在打包/混淆的程序中,约定可能并不总是成立。您可以在数据段中有说明,反之亦然。这样做是出于各种原因,例如阻碍分析,反汇编等。当您在Ollydbg中尝试在恰好位于标记为数据的部分中的一条指令上设置
INT3
断点时,Ollydbg会抱怨,并且是您看到的消息。 原因是假设您在其上设置断点的指令实际上是数据。在这种情况下,当程序读取地址中的值时,它将读取
0xCC
(INT3-> 0xCC),而不是实际值。这可能会使程序崩溃。此外,由于这是读取操作,因此永远不会命中断点。如果需要,可以在Ollydbg选项中禁用该消息,但是并不总是建议这样做。相反,如果您确定这是一条指令,则可以忽略警告并设置断点。
另一种方法是,不使用
INT3
断点,而是在执行时设置硬件断点(HWBP)。上述地址。这样,即使在数据上设置了hwbp,程序也不会崩溃。 HWBP在我的CPU上强制执行,并且不以任何方式修改程序,与INT3
断点不同
评论
感谢您的出色回答。我已经阅读了有关硬件断点的信息,所以我将尝试一下。再次,谢谢。
–user3097712
2014年7月9日23:45
编辑:硬件断点不起作用,因为突然断点来临之前该进程已终止。因此,我再试一次软件断点,忽略让我们运行ollydbg的消息,它会有所帮助
–user3097712
2014年7月10日,0:25
@ user3097712可以将硬件断点检测为一种反调试功能。看到这个
– 0xec
2014年7月10日4:40