首页
社区
课程
招聘
[原创]如何对抗Unidbg无限Debugger问题
发表于: 2025-12-6 13:29 965

[原创]如何对抗Unidbg无限Debugger问题

2025-12-6 13:29
965

0x1-前言:

本篇文章,笔者想谈谈Unidbg无限debugger这个问题,毕竟这种样本确实存在,却没有看到过有师傅发文章进行讲解,那就由我起个头吧.本篇的样本单纯讲无限debugger这个问题,算法分析先搁置.

本篇来自我的公众号发布后复制粘贴,代码块和图片可能丢失,请转移至我的原文:

aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvZnp0aTB4MUNaaGp0aUVVak9NaXFfQQ==

0x2-样本信息:

直达:

version:

此篇研究的对象是libsignature.so这个so文件.

0x3-由因而起:

首先搭好unidbg的架子

运行看看,发现自动断在了这个地方0x400f9230:

图片

笔者并没有人为的去下断点,这是样本本身所引发的问题.

按下c,继续执行

图片错误

无论怎么按,都会断在这个位置.

我们可以用stop命令停止

图片错误

这样看似解决了问题,但是如果想额外人为的下断点去看函数入参,寄存器状态,内存状态,就会被样本本身引发的断点干扰.

以上现象,笔者将其定义为无限debugger,无限debugger干扰了我们人为的下断分析,故我们需要做手动patch.

0x4-透过现象看本质:

首先,我们需要知道Unidbg(Unicorn Debugger)本质上是一个基于 Unicorn引擎的模拟执行框架,它并不是一个传统意义上的调试器,但提供了调试功能.

通过断点位置的调试输出信息定位原因:

pc寄存器是存当前的指令的地址,而lr寄存器是存函数执行完毕后应该返回的地址.

将so文件拖入ida中进行反汇编,跳转到当前指令的地址(0xf9230).

图片错误

这几条汇编意思是,导出了一个名为_armv8_sha512_probe的函数,可以供其他的so文件导入使用,可是具体逻辑为什么是一堆数字呢,看不到具体的反汇编指令,这个与ida的识别有关系,ida错误的把它识别成了数据段,按下键盘的c也没有办法转成代码段,我们就人为手动的来转换一下.

这里IDA使用DCQ(Define Quadword)定义了两个四字(每个四字8字节).

将这两组数据拆分成4段每段4字节,然后转换一下字节序

使用以下在线网站进行反汇编

反汇编结果

图片错误

重点关注前两条指令,后两条是nop无意义.

sha512su0指令介绍:


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 16
支持
分享
最新回复 (8)
雪    币: 190
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
图片错误咋回事
2025-12-6 15:57
0
雪    币: 368
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
啊你好哇123 图片错误咋回事
公众号发布转过来的 图片和代码块会丢失 看我公众号的原文
aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tL3MvZnp0aTB4MUNaaGp0aUVVak9NaXFfQQ==
2025-12-6 19:45
0
雪    币: 204
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
66666
2025-12-6 22:06
0
雪    币: 155
活跃值: (3921)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习!!!
2025-12-9 15:03
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
666
2025-12-15 14:43
0
雪    币: 178
活跃值: (3061)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
学习
2025-12-15 14:50
0
雪    币: 4
活跃值: (367)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习学习
2025-12-19 18:21
0
雪    币: 3785
活跃值: (4085)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
6
2025-12-19 18:39
0
游客
登录 | 注册 方可回帖
返回