如何绕过反调试技术——学习回顾(1)

之前总结了一些常见的反调试技术,反调试技术是程序作者用来保护程序不被调试,以此来保护自己的秘密,但是逆行分析人员也有自己的破解反调试的方法,就是“反反调试”。
记录学习过程,以待后来温习。
反调试技术的总结:https://blog.csdn.net/weixin_43742894/article/details/105278690
主要是通过学习《恶意代码分析实战》这本书的课后题,来进行绕过反调试的学习。
资源在这:链接:https://pan.baidu.com/s/11eObiXjcv2_QdC3BjlHXDw
提取码:pis9

0x00 实验要求

本次学习的是实验一,实验一的要求如下:
在这里插入图片描述
下面进行练习。
首先实验一的程序是一个exe文件。
在这里插入图片描述

0x01 实验工具:

IDA Pro
OllyDbg

0x02 分析过程

首先使用PEiD进行查壳,发现无壳,这个实验作为绕过反调试练习,无壳是可以理解的。就好比踢足球不带扳手一样合理🐶。
在这里插入图片描述
我们将文件放进IDA里进行静态分析。发现这个main函数中有很多fs:30h和sub_401000。并且在验证后会有俩种可能,这里执行的就是反调试的测试。
在这里插入图片描述
其二,又有很多call sub_401000。
进入sub_401000函数,此函数的最后是一个退出整个程序的_exit,然后查看sub_401000的交叉引用,发现调用sub_401000一共有79个,我们就可以判断,sub_401000是在反调试不通过后退出程序的函数。
在这里插入图片描述
在这里插入图片描述
在OD里查看,发现这个函数也是执行退出删除的功能。
在这里插入图片描述

绕过反调试

第一判断处:我们知道fs段寄存器偏移0x30h,可以找到PEB。第一个fs:[30h]+2指向了PEB的BeingDubgged,这是检验反调试的一种技术。BeingDubgged=1的时候就是被调试,这里是第一处反调试。
在这里插入图片描述

ntdll!_PEB
   +0x000 InheritedAddressSpace : UChar
   +0x001 ReadImageFileExecOptions : UChar
   +0x002 BeingDebugged    : UChar
   +0x003 BitField         : UChar
   +0x003 ImageUsesLargePages : Pos 0, 1 Bit
   +0x003 IsProtectedProcess : Pos 1, 1 Bit
   +0x003 IsLegacyProcess  : Pos 2, 1 Bit

第一处绕过反调试:
适用于绕过PEB结构的反调试成员。
1.手动dump fs:[30]+2找到BeingDebugged,把01修改为00,即可绕过BeingDebugged的反调试,下面PEB结构中的反调试,手动方法一致。
2.使用插件:PhantOM,勾选hide from PEB。
在这里插入图片描述
第二处:[fs:[30h]+18]+10,ProcessHeap也是用来测试反调试的的标志,这是第二处反调试

   +0x014 SubSystemData    : Ptr32 Void
   +0x018 ProcessHeap      : Ptr32 Void
   +0x01c FastPebLock      : Ptr32 _RTL_CRITICAL_SECTION

第三处:fs:30h+68,NtGlobalFlag 反调试。

   +0x064 NumberOfProcessors : Uint4B
   +0x068 NtGlobalFlag     : Uint4B
   +0x070 CriticalSectionTimeout : _LARGE_INTEGER

0x03 总结:

1.使用了那些反调试技术:
手动检测数据结构
1 检测BeingDebugged属性
2 检测ProcessHeap属性
3 检测NTGlobalFlag
2.反调试技术成功后,会执行什么操作
会执行sub_401000,删除自身退出程序。
3.如何应对这些反调试技术
使用phantOM插件。
4.如何手动修改绕过反调试
使用COMMON,dump命令找到数据结构进行修改。
5.使用什么插件可以绕过反调试
PhantOm

写在最后:
“路漫漫其修远兮,吾将上下而求索。”
反调试和反反调试技术是逆向分析中非常重要的部分,在之前的学习中为了追求速度,学的粗枝大叶,到头来又得花时间重新回顾,所以学习知识时,一定要脚踏实地,不能只学表面,不过如今复习,到也有“温故而知新”的乐趣。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值