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

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

2014-6-18 12:37
5831

反调试心得
                        ---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
);
先编译个再说。代码如下:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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