26种对付反调试的方法(6)
发布时间:2019-03-21 12:55 所属栏目:20 来源:luochicun
导读:Trap Flag(陷阱标识)位于EFLAGS寄存器内,如果TF设置为1,CPU将在每个指令执行后产生INT 01h或单步异常(single-step exception)。以下就是基于TF设置和异常调用检查的反调试: BOOLisDebugged=TRUE; __try { __as
Trap Flag(陷阱标识)位于EFLAGS寄存器内,如果TF设置为1,CPU将在每个指令执行后产生INT 01h或单步异常(single-step exception)。以下就是基于TF设置和异常调用检查的反调试:
这里TF有意设置为生成异常。如果正在调试进程,则异常将被调试器捕获。 如何避开陷阱标识检查 为了在调试过程中避开TF标识检查,应该将pushfd指令传递给单步异常,但要跳过它,将断点置后,继续执行程序。断点后,跟踪可以继续。 CheckRemoteDebuggerPresent和NtQueryInformationProcess 与IsDebuggerPresent函数不同,CheckRemoteDebuggerPresent会检查一个进程是否被另一个同步进程调试。下图就是一个基于CheckRemoteDebuggerPresent的反调试技术:
(编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读