首页
论坛
课程
招聘
[原创]全网首发实战flutter的算法解密(1):flutter逆向工具Doldrums和reFlutter使用分析
2022-5-6 18:20 15393

[原创]全网首发实战flutter的算法解密(1):flutter逆向工具Doldrums和reFlutter使用分析

2022-5-6 18:20
15393

前言

最近研究flutter逆向,群里讨论抛出了两个相关的flutter开源逆向工具。

  • https://github.com/rscloura/Doldrums

  • https://github.com/Impact-I/reFlutter

抱着给大家试毒的心态,给出测评结果。是否能够逆向出来flutter。

样本准备

也不去市面找什么应用了,手动编译一个apk。加点加密算法就行

 

用的flutter版本,是一个比较新的版本

flutter_windows_2.10.4-stable

 

Doldrums使用测试

可以看到支持两个版本的

 

DartVm快照解析

 

v210和v212

注意这是dart的版本不是flutter的版本

 

配置好依赖环境之后运行main.py

 

显然报错

 

不支持快照hash为

 

d56742caf7b3b3f4bd2df93a9bbb5503

 

的快照文件解析

 

我特意去搜索了这个hash对应的dart版本是多少

 

是2.16版本的DartSdk

1
2.16.0-134.1.beta,63ca99584a1aef79722b2a7c6414570b54416bab,d56742caf7b3b3f4bd2df93a9bbb55035

结论:使用Doldrums失败,没法解析该版本的快照。

reFlutter使用测试

安装

pip3 install reflutter==0.6.6

使用

reflutter flutter_demo.apk

 

进行apk重打包操作,期间要输入bs的端口地址

 

我这里没有使用bs来抓包就无所谓了

 

然后要等相当长的一段时间

 

得到重打包的apk文件,卸载之前的重新安装

 

安装报错

1
2
3
PS G:\Flutter> adb install G:\Flutter\release.RE.apk
Performing Streamed Install
adb: failed to install G:\Flutter\release.RE.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1908031203.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl1908031203.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?]

签名问题随便找个工具新增一下

 

安装成功

逆向部分

抓包部分

配置 BurpSuite 的 代理就行 这部分不深究了,我这软件也没有发包请求。

 

按道理使用代理转发也是可以抓包成功的。

dump code

这是最让人兴奋的功能了,可以直接还原出dart代码

1
adb -d shell "cat /data/data/com.example.test.flutter_demo/dump.dart" > dump.dart

得到了一个3000kb的dart文件

 

vs打开分析可以看到大量的库类以及一些内存偏移。

 

包括code和function

 

搜索package:flutter_demo定位我们自己类

 

找到了package:flutter_demo/main.dart的相关逻辑

 

 

但是这里没有我们要的解密函数,接下来要进入so部分的逆向。

 

配合frida hook和ida分析以及dump定下来的位置去分析流程。

 

但是我们核心的加密类sec.dart文件没有在dump.dart的文件里面找到相关逻辑。我意识到这可能是该框架的一个问题。于是向作者进行交流。

 

作者确认这是个bug需要修复,但是不会那么快修复。

 

这样我们只能依赖main.dart的逻辑进行分析。

总结

这篇文章主要体验下两个框架的使用

  • Doldrums: 这个停更了,而且是基于静态的分析。不支持新版本可以不用考虑了。
    reFlutter: 值得期待的一款工具,基于重打包塞入一个重新编译的引擎文件。在动态基础上定位函数信息。目前使用问题还是很多,丢失文件信息而且没法真正全部还原方法。关键的reFlutter还在更新

[招生]科锐逆向工程师培训46期预科班将于 2023年02月09日 正式开班

最后于 2022-5-29 17:42 被小黄鸭爱学习编辑 ,原因:
收藏
点赞4
打赏
分享
最新回复 (24)
雪    币: 27
活跃值: 活跃值 (796)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 活跃值 2022-5-6 21:51
2
0
坐等更新
雪    币: 5839
活跃值: 活跃值 (2677)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
Imyang 活跃值 1 2022-5-7 10:35
3
0
坐等更新
雪    币: 374
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
MrSean 活跃值 2022-5-7 17:02
4
0
吾爱上也是你发的嘛
雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-7 17:26
5
0
MrSean 吾爱上也是你发的嘛

没有 我没有吾爱账号(密码忘了) 你有链接地址吗

最后于 2022-5-7 17:28 被小黄鸭爱学习编辑 ,原因:
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wei_zzz 活跃值 2022-5-9 03:49
6
0
运行之后没有dump.dart文件。
版本是adf563436d12ba0d50ea5beb7f3be1bb
雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-9 09:03
7
0
wei_zzz 运行之后没有dump.dart文件。 版本是adf563436d12ba0d50ea5beb7f3be1bb
你直接去 data/data/包名 目录下找下dump.dart 文件。
雪    币: 55
活跃值: 活跃值 (847)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
New对象处 活跃值 2022-5-9 09:46
8
0
很早之前在吾爱看过关于用“reFlutter 搞flutter”的文章,现在一看还以为作者修复了那bug
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wei_zzz 活跃值 2022-5-9 22:31
9
0
小黄鸭爱学习 你直接去 data/data/包名 目录下找下dump.dart 文件。
找了,没有。
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wei_zzz 活跃值 2022-5-9 23:55
10
0
wei_zzz 找了,没有。[em_78]
 I need to capture traffic only (Choose "No" if you also need a dump.dart) [Y/n]? n
抓包没问题,,就是没dump.dart文件
雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-10 10:03
11
0
wei_zzz I need to capture traffic only (Choose "No" if you also need a dump.dart) [Y/n]? n 抓包没问题 ...

我看了下 你这个是新版的,选择No就行。然后重签名安装到手机。

还有关键一点就是要让你那个文件 data/data/packname 文件夹权限是可读可写的

最后于 2022-5-10 10:08 被小黄鸭爱学习编辑 ,原因:
雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-10 10:17
12
0
wei_zzz I need to capture traffic only (Choose "No" if you also need a dump.dart) [Y/n]? n 抓包没问题 ...
确实有问题 他这个0.6.8 我联系下作者
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wei_zzz 活跃值 2022-5-10 14:15
13
0
小黄鸭爱学习 确实有问题 他这个0.6.8 我联系下作者
是选的No,0.6.6我试过也不行。
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wei_zzz 活跃值 2022-5-10 14:15
14
0
小黄鸭爱学习 wei_zzz I need to capture traffic only (Choose "No" if ...
权限也给了的
雪    币: 165
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
游客1519 活跃值 2022-5-10 15:48
15
0
0.7.0 选2 文件夹权限是可读可写, 没有dump.dart文件
雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-11 09:14
16
0
游客1519 0.7.0 选2 文件夹权限是可读可写, 没有dump.dart文件
已联系作者修复,再次测试下。
https://github.com/Impact-I/reFlutter/issues/120
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_oniqjhzq 活跃值 2022-5-25 22:37
17
0

可以看个app吗

下载地址app:

https://wwi.lanzoup.com/i78eb058t5kd

flutter的so算法解密 sign协议头 两个 noce

雪    币: 841
活跃值: 活跃值 (2696)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2022-5-29 17:42
18
0
mb_oniqjhzq 可以看个app吗下载地址app:https://wwi.lanzoup.com/i78eb058t5kdflutter的so算法解密 sign协议头 两个 noce
有时间我可以研究下 不过我没有十足的把握分析flutter应用
雪    币: 261
活跃值: 活跃值 (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_yvvzfcdo 活跃值 2022-5-30 10:19
20
0
厉害了
雪    币: 2247
活跃值: 活跃值 (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
warners 活跃值 2022-6-6 17:14
21
0
牛逼
雪    币: 31
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
然川意 活跃值 2022-6-7 15:23
22
0
小黄鸭是芥子空间的那个吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_莫相惜 活跃值 2022-6-18 03:20
23
0
啥时候继续跟新啊哥
雪    币: 167
活跃值: 活跃值 (265)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
myvsmy 活跃值 2022-6-23 21:32
24
0
啥时候继续跟新啊哥
雪    币: 2076
活跃值: 活跃值 (459)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rehai 活跃值 2022-11-16 14:11
25
0
求更新呀
游客
登录 | 注册 方可回帖
返回