欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]反调试心得(一) 函数篇

[原创]反调试心得(一) 函数篇

反调试心得
                        ---Forward  菜
                         鸟啊,说了是学习心得有错请大神指出
说到反调试,不得不说一下一个在Kernel32.dll里导出的win32 API,大家所熟悉的IsDebuggerPresent。一般来说几乎不用毕竟,先简单的说下他的实现原理。相对于接下来要说的函数,它的实现原理也比较简单。
_IsDebuggerPresent@0 proc near
mov     eax, large fs:18h
mov     eax, [eax+30h]
movzx   eax, byte ptr [eax+2]
retn
_IsDebuggerPresent@0 endp
由上段代码得知这个函数获取了当前进程PEB里的BeingDebugged。根据这个原理,只需要简单的清除掉这个标志,即可蒙混过关。Ollydbg也提供了相关的插件,因此不推荐使用。不过糊弄糊弄还是不错^ - ^        。
(由于PEB并不是这里的重点篇幅有限就不具体展开了有兴趣的朋友可以自行Google)
当然千万不要觉得过反调试太简单了,标志确实被消除了。但那是绝不是那么简单。翻开MSDN的Debugging Functions除之前讲的IsDebuggerPresent之外还有个一个CheckRemoteDebuggerPresent。原型如下
BOOL WINAPI CheckRemoteDebuggerPresent(
  _In_     HANDLE hProcess,
  _Inout_  PBOOL pbDebuggerPresent
);
先编译个再说。代码如下:

    #include "stdafx.h"
    #include "Windows.h"
    int main(){
    Bool DbgFlag=false;
    CheckRemoteDebuggerPresent(GetCurrentProcess(),DbgFlag);
    if (DbgFlag){
    printf("\n Debugger Exist");}
    rerurn 0;
    }
OD调戏起来把插件都关了,除了之前糊弄IsdebuggerPresent的插件。运行起来效果如下:

直接上传PDF文档了 嘿嘿 不太会贴代码[ATTACH][/ATTACH]
antisb.zip
【原创】反调试心得(一) 函数篇.pdf

上传的附件 antisb.zip
【原创】反调试心得(一) 函数篇.pdf
~_K(V7QJ]]YMRFOXGS58N(6.jpg

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功