查看: 50|回复: 49

[相关教程] Frida实战hook Flutter App:拦截Dart层加密通信

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-7-3 11:56:38 | 显示全部楼层 |阅读模式
最近在逆向一个Flutter写的Android App,目标是把它的加密通信参数搞出来。Flutter的坑在于它把Dart代码全编译成native了,不像普通Java App那样能直接用jadx反编译,通信层的加密也不在Java层,得在so里面找。

第一步是定位关键so。Flutter编译出来的libapp.so就是Dart业务逻辑编译后的产物,体积通常很大,这个App的有38MB。先用frida-trace跑了一遍SSL_write和SSL_read,发现它用的不是标准BoringSSL,加密函数被重命名过了,trace抓不到明文。



换了个思路,直接hook了BoringSSL的底层函数。Flutter的加密通信走的还是底层的ssl_crypto_encrypt这个函数,在libflutter.so里面。写了个Frida脚本,hook这个函数打印入参buffer和长度,果然拿到了加密前的明文请求体。关键代码贴出来:
  1. function hookSSL() {
  2.     var func = Module.findExportByName("libflutter.so", "ssl_crypto_encrypt");
  3.     Interceptor.attach(func, {
  4.         onEnter: function(args) {
  5.             console.log("plaintext:", args[0].readUtf8String());
  6.         }
  7.     });
  8. }
复制代码

有个细节要注意,不同Flutter版本里libflutter.so的导出符号名不一样,1.x的版本可能叫ssl3_encrypt,3.x的才叫ssl_crypto_encrypt。建议先用nm -D列一遍导出表确认名字。另外ARM64和ARM32的参数寄存器不一样,x0到x7传参,上面的代码是ARM64的写法。
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

匿名  发表于 2026-9-17 18:35:25
这个角度之前没想过,受教了。
回复

使用道具

0

主题

350

回帖

0

积分

UID
293961
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:42:48 | 显示全部楼层
混淆只能提高门槛,不能真正阻止有心人。想请教下工具链是怎么配的?
回复

使用道具 举报

0

主题

396

回帖

45

积分

UID
621140
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 18:45:08 | 显示全部楼层
关键算法的定位比还原实现更耗时间。
回复

使用道具 举报

0

主题

350

回帖

350

积分

UID
799658
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 18:47:43 | 显示全部楼层
如果是防护方视角,重点应该放在提升攻击成本上。
回复

使用道具 举报

0

主题

377

回帖

54

积分

UID
655918
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:50:53 | 显示全部楼层
这类校验现在很多是服务端下发的,光改本地没用。
回复

使用道具 举报

0

主题

393

回帖

0

积分

UID
778685
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:53:48 | 显示全部楼层
之前分析过类似的,混淆还原完逻辑其实不复杂。
回复

使用道具 举报

0

主题

347

回帖

36

积分

UID
778987
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 18:56:39 | 显示全部楼层
实际做的时候最花时间的是环境搭建而不是分析本身。
回复

使用道具 举报

0

主题

377

回帖

377

积分

UID
743729
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 19:00:53 | 显示全部楼层
如果只是学习目的,建议从开源项目练手,别碰线上。想请教下工具链是怎么配的?
回复

使用道具 举报

0

主题

363

回帖

0

积分

UID
478699
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 19:04:31 | 显示全部楼层
加固厂商之间差异挺大,同一套思路不一定通用。这套思路对其他 App 通用吗?
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部