首页
社区
课程
招聘
[原创]脱壳之带反调试的PESpin壳
发表于: 2021-12-31 21:33 36742

[原创]脱壳之带反调试的PESpin壳

2021-12-31 21:33
36742

清除硬件断点的方法有哪些?
修改调试寄存器,CONTEXT结构体

  1. API
    Kernel32.SetThreadContext
    ntdll.ZwSetContextThread
    2.异常
    异常回调中可以修改CONTEXT

1.对API下断点,测试是否会断下
应该是存在判断敏感API的机器码,检测第一个字节是否是0xCC,故此处导致程序崩溃了,破解方法就是在第二行反汇编下断点。
图片描述
尝试在下一行重新下断点,结果程序直接运行了?并没有断下。
图片描述
再次尝试在API对应的底层函数调用的位置下断点
图片描述
图片描述
结果发现程序还是运行起来了,并没有断下,所以应该不是API,而是异常

 

2.搭建异常触发环境
首先我们需要对OD进行一些配置,在菜单中找到调试选项,将一些异常取消忽略,按照以下配置。
图片描述
除了OD调试选项的配置之外,一些反反调试插件也需要做些配置,这里我们使用的是StrongOD插件,在插件中找到StrongOD,取消插件对一些异常的跳过。按照以下配置对插件进行设置。
图片描述
程序运行起来,发现一共有7个异常,需要排查出对硬件断点清0的地方,这里采用在异常点设置硬件断点的方法,尝试看能不能断下来,如果能断下来说明当前异常点前面的异常处理函数中没有对硬件断点清0。

 

第一个异常:
图片描述
第二个异常:
图片描述
第三个异常:
图片描述
第四个异常:
图片描述
第五个异常:
图片描述
第六个异常:
图片描述
第七个异常:
图片描述
按照上面的思路,首先在第二个异常点设置硬件执行断点,然后动态调试程序,如果硬件执行断点有效(在状态栏中可以发现硬件断点命中的提示信息)说明第一个异常点的异常回调函数中没有清除硬件断点的代码。

 

硬件执行断点的特点是到了这个地址就会停下来,而异常是必须触发,即必须执行了这段代码,执行了这条指令才能够触发,如果先触发了硬件断点,就意味着这个异常前面的异常处理函数是没有清除硬件断点的,

 

按照这样的方式,依次测试每一个异常的回调函数。
第二个异常:
这条指令还没有执行之前就已经触发了硬件断点,说明第一个函数内没有清除硬件断点
图片描述
清除第二个异常处的硬件断点,依次向下一个异常继续下硬件执行断点

 

第三个异常
图片描述
这条指令还没有执行之前就已经触发了硬件断点,说明第二个函数内没有清除硬件断点
图片描述
第四个异常
这条指令直接触发了异常,说明第三个函数内有清除硬件断点的代码
图片描述
综上所述,发现第三个异常,即第一个STI特权指令异常回调是清除硬件断点的代码。
打开SEH链观察
图片描述
在0043AF42的位置下断点
图片描述
继续shift+F9进入第三个异常处理函数
图片描述
上面代码由于是和异常、清除硬件断点有关的,所以其中肯定有异常相关的结构体和寄存器相关的Context结构,直接分析代码不太容易看出来,这个时候我们就可以将其直接在这个地方进行DUMP,这里DUMP不是为了脱壳,只是单纯的DUMP,然后方便在IDA中查看其中的代码,使用IDA特有的解析结构体的功能,解析可能存在的结构体。
图片描述
进入IDA,我直接一手F5......
图片描述
在结构体中Inser添加一个Context结构
图片描述
在伪代码中转换结构体
图片描述
图片描述
图片描述
继续回到OD,分析这段代码应该就是清除硬件断点的代码
图片描述
初步思路:在0043AF59的位置设置一个断点,到了这个断点之后将清除硬件断点的这段代码清除一下,将其NOP掉,后面的硬件断点就能正常的触发了

 

将之前更改的设置还原,把异常重新跳过

 

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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (9)
雪    币: 2366
活跃值: (3472)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
提供了一个处理硬件断点对抗的普遍思路,值得新手借鉴,故设精华,希望再接再厉
2021-12-31 22:08
1
雪    币: 132
活跃值: (543)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
太硬核了,牛
2022-1-1 01:42
0
雪    币: 370
活跃值: (5358)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
学习了
2022-1-1 22:35
0
雪    币: 9023
活跃值: (5620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
学习一下。
2022-1-4 13:23
0
雪    币: 251
活跃值: (1326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
太厉害了,你为什么这么优秀
2022-1-4 19:54
0
雪    币: 560
活跃值: (253)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
收藏 
2022-1-5 21:28
0
雪    币: 3940
活跃值: (3766)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
15PB优秀学员?
2022-1-7 09:43
0
雪    币:
活跃值: (172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很详细,大佬太厉害了
2022-1-8 11:19
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mark
2022-1-8 11:35
0
游客
登录 | 注册 方可回帖
返回