首页
社区
课程
招聘
[原创]反调试心得(一) 函数篇
2014-6-18 12:37 5178

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

2014-6-18 12:37
5178
反调试心得
                        ---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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 224
活跃值: (962)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
樊辉 2014-6-18 13:25
2
0
就2个吗?期待后续。。。
雪    币: 224
活跃值: (962)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
樊辉 2014-6-18 13:26
3
0
r3的反调试好像od插件都能搞定。
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 1 2014-6-18 14:36
4
0
这些反调试,OD插件表示毫无压力
雪    币: 341
活跃值: (85)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
JoySauce 1 2014-6-19 11:49
5
0
= =好无力。
雪    币: 70
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yxhbboy 2014-6-19 20:03
6
0
这都什么年代了,还有人用win32 API搞反调试?
游客
登录 | 注册 方可回帖
返回