ZwContinue
的呼叫。可执行文件首先获取ntdll.NtContinue
的地址,并将其存储在EAX寄存器中。 >然后OllyDbg(v1.10)终止了该过程。我发现这是一种反调试机制,但我不知道如何克服它。
我可以使用任何插件或其他有用的技巧吗?
#1 楼
ntdll!ZwContinue与ntdll!NtContinue具有相同的参数,即:NTSTATUS NTAPI
NtContinue (
IN PCONTEXT ThreadContext,
IN BOOLEAN RaiseAlert
);
您可以读取PCONTEXT结构中的“ Eip”字段,并放置一个断点在此地址上,然后按运行以达到断点并继续分析。
如果您想尝试Olly 2.01,它具有针对此特定情况的一个不错的功能:转储中的“解码为结构”窗口。
#2 楼
检查NtContinue的上下文参数(第一个参数)。 NtContinue可作为防调试程序,方法是可能会清除DR7或通过清除陷阱标志打破单步执行,然后在应用寄存器状态后返回上下文中指定的IP。评论
尽管另一个答案描述了如何解决它,但是这个答案更好地解释了幕后发生的事情。
– 0xC0000022L♦
18年7月10日在8:18
评论
感谢您的回答。要在PCONTEXT中的EIP处设置BP,是否必须在十六进制窗口中找到EIP值,或者如何在ollydbg v1.10中实现该值?
–user3097712
2015年5月5日20:37
@ user3097712除了在OllyDBG 1.10上手动完成操作外,我不知道其他方法。
– Spl3en
15年5月6日在7:38
ollydbg 1,10 alt + f1-> bp [[esp + 4] + 0xb8]在ntdll上中断时!Nt / ZwContinue将在x86中的PContext-> Eip上设置中断
– blabb
2015年5月7日在18:10
在用户模式下,NtContinue实际上与ZwContinue相同。这些Nt * / Zw *对存在更多,它们通常是主要的系统服务。在内核模式下,这些功能也存在,但有所不同。其中一个(不记得哪个)在从用户模式调用时将进行访问检查,而另一个则专用于内核模式调用者。
– 0xC0000022L♦
18年7月10日在8:17