首页
社区
课程
招聘
[原创]针对 android VMP 分析,轻量级 Unicorn Trace 工具分享
发表于: 2025-11-19 11:51 9733

[原创]针对 android VMP 分析,轻量级 Unicorn Trace 工具分享

2025-11-19 11:51
9733

项目地址:639K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6U0K9r3g2F1P5s2k6T1i4K6u0r3g2h3&6A6j5$3!0J5L8W2)9J5k6q4c8J5j5h3y4W2


android trace 工具都不太好用,写了个 unicorn 的 ida trace 工具分享一下


Unicorn ARM64 动态追踪模拟器是一套基于 Unicorn 引擎的轻量级动态追踪工具,专为 ARM64 架构的逆向分析设计。该项目提供了与 IDA Pro 深度集成的插件版本和独立运行的模拟器版本,能够在保证执行准确性的同时,提供高效的代码追踪和内存转储能力。


本工具无需全量 dump 内存,只在使用时 dump,所以比传统 trace 工具都要方便,快速许多。ida 自带的 trace 基本用不了,frida 的 trace 限制多且麻烦,本 trace 工具可以解决这个问题


并且本工具在记录过后还可以重新本地执行,可以专注于一个分析样例并可以随时监控,更改内存,还有 tenet log 可以在 ida 中伪调试,针对大型混淆流程分析和 vm 纯算法分析比较好用


样例


ida 调试启动后,直接运行脚本/使用插件填入目标地址



运行完成后,对比模拟和 ida 一致,显示正常完成


生成 dump 在目录下,可以无缝使用 unicron 脚本模拟执行,并生成 tenet log



传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2025-11-23 09:57 被vior编辑 ,原因:
收藏
免费 34
支持
分享
最新回复 (32)
雪    币: 204
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
大佬牛逼啊
2025-11-19 17:06
0
雪    币: 54
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
666
2025-11-19 17:41
0
雪    币: 7251
活跃值: (23744)
能力值: ( LV12,RANK:550 )
在线值:
发帖
回帖
粉丝
4
不错
2025-11-19 17:57
0
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
文字都看不清,是不是颜色不对呢
2025-11-19 18:42
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
mb_ldbucrik 文字都看不清,是不是颜色不对呢
深色模式看的没看出问题,发现正常看不出来,在改了
2025-11-19 19:04
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mb_ldbucrik 文字都看不清,是不是颜色不对呢
不过好像编辑不了,显示 Server Response Not JSON:123 ,先将就选择看吧
2025-11-19 19:07
0
雪    币: 374
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
路过学习
2025-11-19 19:36
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
感谢分享
2025-11-19 19:58
0
雪    币: 6125
活跃值: (5910)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
66
2025-11-19 20:41
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
123
2025-11-19 21:28
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mb_ldbucrik 文字都看不清,是不是颜色不对呢
修好了
2025-11-20 18:58
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
你不觉得多余吗?1个GB以上的日志你加载给我看看
2025-11-21 14:29
1
雪    币: 834
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
大佬牛逼
2025-11-22 11:53
0
雪    币: 3673
活跃值: (5807)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
感谢分享,看起来好像很厉害
2025-11-22 11:57
0
雪    币: 5634
活跃值: (9457)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
火钳刘明
2025-11-22 12:09
0
雪    币: 63
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
遇到了SVC指令的话 是不是也要像unidbg一样需要补系统调用
2025-11-22 20:20
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
iCookiie 遇到了SVC指令的话 是不是也要像unidbg一样需要补系统调用
不需要,遇到 libc 之类包含 svc 外部跳转的会直接调用 ida 跳过。对于 lib 内的用户函数调用 svc 也可以用 ida 跳过,但需要再脚本代码里加一下
2025-11-23 09:39
0
雪    币: 1404
活跃值: (6863)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
19
强的
2025-11-25 11:41
0
雪    币: 226
活跃值: (2119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
用ida调试,有的时候都走不到断点,报错.
有其他frida或者其他方式能dumps寄存内存吗?
2025-11-26 10:08
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
hpphpp 用ida调试,有的时候都走不到断点,报错. 有其他frida或者其他方式能dumps寄存内存吗?
如果是常规报错可以看看是不是在文档里有写
dump 内存走 frida 效率不高,建议用 ce dump 或者用 dd 命令 dump,如果会用 ida python 在我项目里 single_script/dump_single.py 的脚本也可以走 ida dump 一个段
2025-11-26 14:32
0
雪    币: 63
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
vior 不需要,遇到 libc 之类包含 svc 外部跳转的会直接调用 ida 跳过。对于 lib 内的用户函数调用 svc 也可以用 ida 跳过,但需要再脚本代码里加一下
我是说dump下来 模拟执行的时候
2025-11-26 15:15
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
iCookiie 我是说dump下来 模拟执行的时候[em_006]
我这边的处理方式就是动态加载了,现在是分割成多个小的部分接在前后,后面模拟执行就动态加载当时获取的上下文接着跑
2025-11-26 15:37
0
雪    币: 226
活跃值: (2119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
vior 我这边的处理方式就是动态加载了,现在是分割成多个小的部分接在前后,后面模拟执行就动态加载当时获取的上下文接着跑
没太理解, 我理解只是dump了入口点时候的上下文(寄存器和内存), 后续执行的上下文是没有的,那跳过外部跳转后的执行还是会报错吧,没有执行外部跳转后的上下文了。
2025-11-26 17:24
0
雪    币: 241
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
hpphpp 没太理解, 我理解只是dump了入口点时候的上下文(寄存器和内存), 后续执行的上下文是没有的,那跳过外部跳转后的执行还是会报错吧,没有执行外部跳转后的上下文了。

有的,我这边是调用了 ida 直接跑到后面一条指令,再次获取上下文接着跑,所以可以全部处理且不会丢数据。但外部调用密集的话效率会低很多,在外部调用较少的 vm 比较好用

最后于 2025-11-26 18:33 被vior编辑 ,原因:
2025-11-26 18:31
0
游客
登录 | 注册 方可回帖
返回