编辑:
当我尝试在注释中对其进行描述时,我可以在ollydbg v1.10中打开相同的示例,但不能在ollydbg v2.01中打开。我的意思是,我可以在v2.01中打开它,但它以RETN指令开始且进程终止。现在,我已经在http://www.ollydbg.de/version2.html上阅读了,该书用INT3指令代替了ZwContinue()。我将v1.10中打开的示例与v2.01中的示例进行了比较,是的,在v1.10中它具有很多INT3指令,但是在v2.01中有INT3。我需要v2.01,因为有“调试子进程”选项。
最好的问候,
#1 楼
什么是调试寄存器此警告的技术含义很简单,就是Olly注意到您正在调试的程序已更改了CPU的调试寄存器。这些寄存器可用于促进启用CPU的调试。最初的用例是通过使用这些CPU特定的功能来加快调试速度。
一般而言,调试器使用调试寄存器,尤其是反分析可执行文件具有一些广泛的优势。 >
更高效/快速的调试体验。
通过大幅缩短某些调试任务完成的时间,快速调试使基于定时的反调试变得更加困难。调试功能更难绕开或检测,并且很少受到关注,因为大多数与可逆性相关的调试器过去都没有使用它们。原因是完全不同的。
Ollydbg1和2之间的区别
Olly v2默认开始使用调试寄存器,因为它是自己进行调试的。用于反分析特定的调试器,例如olly,这在开始,这是一个不错的主意。
重要的是要注意olly1公开的调试寄存器的用法,但它的关注点较少,而且不是默认行为。
可以通过以下方法将其关闭取消选中此复选框:
#2 楼
我也遇到了这个问题。在我看来,这可能意味着调试对象采取了一些反调试措施,但它不一定意味着这样做。我使用Olly v2,在设置中,我使Olly在启动/附加应用程序时在系统断点处停止。如果您知道《实用恶意软件分析(PMA)》一书,那么我已经加载了Labs 20-01、7-2(随机),并在入口点和其他一些位置设置了硬件断点。而且我遇到了同样的问题-断点已被修改为零。评论
在系统中断之前清除数据断点,您应该查找windbg apply dbp command ro获得n
– blabb
16年8月17日在8:58
评论
这意味着您的示例正在尝试通过更改用于调试的处理器寄存器来实现某种反调试机制。要在Windows中执行此操作,它可能已使用ZwContinue或SetDebugContext API调用。您可以尝试在这些API函数上设置断点,并检查是否调用了其中之一。好的,当我关闭消息时,程序从RETN指令开始,并且过程终止。要搜索并设置BP,我单击反汇编器窗口->搜索->所有模块间调用...。它仅使用两个函数提供了ntdll中模块间调用的列表:kernel32.BaseQueryModuleDate和另一个未定义的函数(kernel32。 7C687074)。
我还使用“搜索->命令...”键入“ CALL ZwContinue”。它找到了对NtContinue的调用,我在这一点/指令上设置了BP,重新启动调试会话...但是消息再次出现。使用该方法,ollydbg无法找到SetDebugContext。
如果您绝对不需要从执行开始就调试程序,则可以尝试在调试器之外运行程序,然后在运行程序之后,使用OllyDbg附加到其进程中。这将使您绕过任何早期的反调试技巧。
不,我想从一开始就对其进行调试...但是正如我所看到的,我没有其他选择。我会尝试附加它。有趣的是:我可以在ollydbg v1.10中打开相同的示例,而不会收到这样令人讨厌的消息。但是对于Ollydbg v2.01,出现上述问题。我不知道为什么。我检查了两个选项,并尝试确定默认设置之间是否存在差异。我可以说这些几乎相同,除了ollydbg v1.10中缺少的选项。我尝试使用ollydbg v2.01的原因是我需要debug子进程选项。