首页
社区
课程
招聘
6
[原创] microdbg - 纯 go 实现 android 模拟框架
发表于: 2025-1-26 14:23 7544

[原创] microdbg - 纯 go 实现 android 模拟框架

2025-1-26 14:23
7544

unidbg 很香, 但又苦于 java 用的不太习惯, 于是开发了这款纯基于 go 实现的模拟框架 microdbg

microdbg 定义了模拟器, 调试器, 模块, 任务, 文件系统等一些基础接口
microdbg-loader 可执行文件格式转换成模块加载
microdbg-unicorn 基于 unicorn 引擎封装的模拟器后端
microdbg-linux linux 内核调用的模拟实现代码
microdbg-java 定义了 JNI 相关的接口, 与 java 基础类型的反射实现框架
microdbg-android 安卓运行时的实现

上述研究案例放在microdbg-example

以上代码仅供研究学习。
欢迎大家提供改进建议或者参与一起开发

接下来的开发计划
[microdbg] 增加对 x86, x86_64 的支持
[microdbg-loader] 增加对 pe, mach-o 的支持
[microdbg-linux] 完善系统调用

以下是未来可能新增支持的开发计划
[microdbg-dynarmic] 新增 dynarmic 引擎模拟器后端
[microdbg-darwin] 新增 darwin 内核的实现
[microdbg-ios] 新增 ios 运行时的实现


补充一下测试需要的 so 文件, 忘记 git 规则把 so 排除了


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

最后于 2025-1-31 17:32 被为你芯冻编辑 ,原因: 补充一下测试需要的 so 文件, 忘记 git 规则把 so 排除了
收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
千屈
谢谢你的细致分析,受益匪浅!
2025-2-17 01:52
ai匿名
你的分享对大家帮助很大,非常感谢!
2025-2-8 13:56
你瞒我瞒
谢谢你的细致分析,受益匪浅!
2025-2-6 14:29
mb_wpitiize
+1
感谢你分享这么好的资源!
2025-2-5 10:24
sinker_
感谢你的贡献,论坛因你而更加精彩!
2025-1-26 19:31
东方玻璃
期待更多优质内容的分享,论坛有你更精彩!
2025-1-26 15:12
最新回复 (20)
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2025-1-26 14:42
0
雪    币: 6449
活跃值: (5627)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
相比unidbg的优缺点是什么?
2025-1-26 18:47
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
模拟调用封装成任务形式,解决了 unidbg 无法嵌套调用的问题,然后每次模拟不会重启模拟器,提升继续模拟执行的性能
2025-1-26 18:51
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
为你芯冻 模拟调用封装成任务形式,解决了 unidbg 无法嵌套调用的问题,然后每次模拟不会重启模拟器,提升继续模拟执行的性能
因为AndroidNativeEmu也是类似unidbg的框架,但是对Unidbg 作为 Java 实现的工具,通过更完善的 JNI 和系统调用模拟,你这个有解决这些问题吗
2025-1-26 21:42
0
雪    币: 3116
活跃值: (2435)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
加油大佬,期待更多大佬的视频教程
2025-1-26 22:56
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
AndroidNativeEmu 属于 python 框架,和我赛道不一样,熟悉 go 开发的人更愿意尝试 microdbg
2025-1-26 23:35
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
=== RUN   TestSm4EncryptBox
    ijm_test.go:94: zip: not a valid zip file
--- FAIL: TestSm4EncryptBox (0.01s)

这种错误代表着什么 跑的测试案例  git clone下来没改任何东西。
2025-1-31 13:08
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mb_asiwnxyv === RUN TestSm4EncryptBox ijm_test.go:94: zip: not a valid zip file --- FAIL: TestSm4Encrypt ...

只有 TestSm4EncryptBox 出现报错吗, 示例只有 2.apk 和 runtime/10.zip 涉及到 zip

最后于 2025-1-31 17:24 被为你芯冻编辑 ,原因:
2025-1-31 17:24
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mb_asiwnxyv === RUN TestSm4EncryptBox ijm_test.go:94: zip: not a valid zip file --- FAIL: TestSm4Encrypt ...
看下是不是没安装 git lfs 导致 apk 文件没有 clone 下来
2025-1-31 17:26
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
为你芯冻 mb_asiwnxyv === RUN TestSm4EncryptBox ijm_test.go:94: zip: not ...
测试案例都报错 都是这个错误 平台是macos15.3  go1.23.5 依赖也都下载了
2025-1-31 17:39
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
为你芯冻 看下是不是没安装 git lfs 导致 apk 文件没有 clone 下来

是的 你说的对 我查看了大小是只有134字节 已经本地下载了

最后于 2025-1-31 17:44 被mb_asiwnxyv编辑 ,原因:
2025-1-31 17:39
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
mb_asiwnxyv 测试案例都报错 都是这个错误 平台是macos15.3 go1.23.5 依赖也都下载了
m系芯片的 macos 增加了 pthread_jit_write_protect_np 导致 写和执行不能同时出现在内存属性上, 可能导致有一些奇怪的 bug
2025-1-31 17:53
0
雪    币: 1795
活跃值: (2539)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
NB,我本来也想写个的,名字都想好了:unidbgo,我用go主要是为了业务代码安全,java代码太容易反编译了,但感觉工作量有点大,就暂时搁置了,换成了另一种快照模拟的方案:直接把unidbg模拟运行好的快照放到unicron-go里执行,省去补环境了,并且更安全了(只有一个快照文件,没有任何业务代码)
2025-2-7 14:39
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
又见飞刀z NB,我本来也想写个的,名字都想好了:unidbgo,我用go主要是为了业务代码安全,java代码太容易反编译了,但感觉工作量有点大,就暂时搁置了,换成了另一种快照模拟的方案:直接把unidbg模拟运 ...
请教一下快照模拟怎么实现的, java环境和syscall都不用补吗
是把每一步的运算结果都储存了, 运行时候按顺序还原吗
2025-2-7 15:47
0
雪    币: 1795
活跃值: (2539)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
16
为你芯冻 请教一下快照模拟怎么实现的, java环境和syscall都不用补吗 是把每一步的运算结果都储存了, 运行时候按顺序还原吗
大部分的Java环境和syscall都发生在核心算法执行前,这些unidbg都帮忙处理完了,当然有些是避免不了的,比如各种内存操作,这些处理完基本上没啥问题了
2025-2-7 16:48
0
雪    币: 407
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
又见飞刀z 大部分的Java环境和syscall都发生在核心算法执行前,这些unidbg都帮忙处理完了,当然有些是避免不了的,比如各种内存操作,这些处理完基本上没啥问题了
我知道了. 3q
2025-2-7 17:57
0
雪    币: 51
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
又见飞刀z NB,我本来也想写个的,名字都想好了:unidbgo,我用go主要是为了业务代码安全,java代码太容易反编译了,但感觉工作量有点大,就暂时搁置了,换成了另一种快照模拟的方案:直接把unidbg模拟运 ...
大佬问下这种模拟器啥的是咋开发的有没有书籍教程啥的网上找不到
2025-2-15 13:42
0
雪    币: 2779
活跃值: (1716)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
太厉害了。
2025-2-16 20:14
0
雪    币: 187
活跃值: (622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20

第三方hook框架 HookZz 类似的go版本,好像没有

最后于 4天前 被夜惜风雨编辑 ,原因:
4天前
0
雪    币: 187
活跃值: (622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
还有就是Dynarmic 引擎比Unicorn快非常多,大佬考虑集成么
4天前
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册