首页
社区
课程
招聘
[原创]flutter逆向助手-基于reflutter的简易化dart解析工具
发表于: 2022-11-25 11:19 27862

[原创]flutter逆向助手-基于reflutter的简易化dart解析工具

2022-11-25 11:19
27862

flutter逆向助手-基于reflutter的简易化dart解析工具

前段时间因工作需要去分析一个由flutter写的恶意程序,但在网上找了好久都没找到好用的逆向资料和工具,经过一段时间艰苦摸索研究,现将一个小成果工具跟大家分享。

一、现有解决方案

(1)静态

目前市面上静态解析工具有2个,一个是Doldrumsfe5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6J5M7$3y4D9L8%4g2J5j5g2)9J5c8V1c8G2L8r3c8J5N6h3#2K6),这个项目比较老而且不再更新了,目前只支持两个dart版本,而且这两个版本比较老,所以他的实用性很低,最多只能当做学习资料。

1
2
3
4
SUPPORTED_SNAPSHOT = {
    "8ee4ef7a67df9845fba331734198a953": "v2_10",
    "5b97292b25f0a715613b7a28e0734f77": "v2_12"
}

另一个就是JEB。JEB 4.17 附带了一个 Dart AOT 二进制快照助手插件(来自a80K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2H3L8X3k6K6L8$3k6@1N6$3q4J5k6g2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6U0j5i4c8W2k6$3!0J5P5g2)9J5c8X3c8S2M7Y4c8Q4x3V1k6X3L8s2g2@1N6r3g2J5i4K6u0r3),通过它直接就可以解析提供的libapp.so,jeb算是能够完美的解决 Dart 2.102.17 版本编译的 AOT 快照,而且它作为一个商业产品还在一直更新,不过更新的较慢。dart sdk 现已升级到了 2.18 与2.19,但jeb尚不支持。

(2)动态

最有代表性的工具就是reflutter 让大家眼前一亮的工具就是reflutter,每次更新他只需要修改简单的代码重新编译就可以实现上面产品的功能,这种思路类似于脱壳机,只不过作者比较懒,没有将每个版本都编译,只是选取特定版本,类似下表(来自77aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6u0L8i4m8S2j5%4c8Q4x3X3c8u0i4K6u0r3M7X3g2r3L8s2g2@1N6r3g2J5i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2K9h3&6Q4x3V1k6W2L8X3N6A6L8X3g2Z5j5i4y4Z5i4K6u0W2j5%4y4$3)

但是他有一个很大的弊端就是需要重打包app,导致它的局限性较大,因为在对抗意识逐渐加强的今天,重打包apk很容易被检测,虽然可以直接替换私有目录的libflutter.so,但需要root,现在很多app都会检测root。

二、flutter逆向助手

(1)简介

flutter逆向助手是基于reflutter所做的优化升级,最重要的一点就是解决了reflutter需要重打包和使用麻烦的问题。

1
免责声明:flutter逆向助手仅供安全研究人员辅助分析病毒、勒索等恶意软件之用,切勿用于任何非法用途,一切后果有使用者承担。

(2)局限性

看到这里大家也注意到了,其实不管是JEB还是reFlutterflutter逆向助手都有很大的局限性,他们都需要通过Snapshot_Hash来判断dart sdk版本,如果一个快照被故意抹去了Snapshot_Hash,那么他们就没办法正常使用了,那么有没有什么方案能完美的解决抹掉Snapshot_Hash的快照呢?办法是有的,以后有空再撰文介绍。

(3)效果对比

1:JEB

jeb反编译dart代码存在3个问题,一个是它反编译太慢了,另一个就是版本更新太慢,最后一个就是输出的内容太少,且无法与ida进行联动,如下图,jeb只支持低版本快照,而且内容只有函数名称和偏移,面对高版本时直接报错。

 


2:flutter逆向助手

鉴于flutter逆向助手是reflutter的上位替代,这里就只展示flutter逆向助手的效果了。flutter逆向助手支持的范围和reflutter一样,如表(0edK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6u0L8i4m8S2j5%4c8Q4x3X3c8u0i4K6u0r3M7X3g2r3L8s2g2@1N6r3g2J5i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2K9h3&6Q4x3V1k6W2L8X3N6A6L8X3g2Z5j5i4y4Z5i4K6u0W2j5%4y4$3),比JEB支持的版本多,能支持3.3.0版本,不过也是通过Snapshot_Hash来判断dart-sdk版本,使用如下:

 


 

弹框就说明解析成功,反编译出来的文件在sdcard/32_com.helper.flutter_dump.dart(64位:/sdcard/64_com.helper.flutter_dump.dart`)下,建议每次使用完删除,否则下次会在原来的基础上继续添加内容。从输出的函数信息来看,详见下图,flutter逆向助手要比jeb输出的内容更详细。

 

下载链接:691K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4h3Y4u0j5d9#2k6a6h3g2l9^5g2g2u0X3P5r3t1@1k6s2l9@1f1q4)9#2k6V1!0Y4i4K6y4r3M7s2N6V1i4K6y4p5L8h3p5&6M7l9`.`. 提取码: ma9p

三、下步计划

虽然flutter逆向助手已明显优于目前市面上的同类工具,但不可否认的是还存在许多不足之处,倘若该工具确实能给分析病毒的安全研究人员带来帮助,使用人数较多。下步将新增以下功能:
1.自动化识别dart sdk版本无视抹掉Snapshot_Hash
2.比reflutter更完整、更详细的函数信息;
3.函数名称自动回填,类似下图:

4.加上poll strings类似jeb那种。

四、未来展望

flutter逆向辅助工具的终极目标是实现Aot代码的反编译,但遗憾的是目前没有任何可行的思路,希望有志之士以后能共同交流研究。

五、题外话(大佬请飘过)

屈指一数,学安卓逆向已有3年,虽不敢说有多厉害,但逆国内大厂的APP还是没问题的。期间让我感受最深刻的是逆向工具是关键,当时学完arm汇编等基础知识后,我就直接拿淘宝APP练手,得益于朋友给了一个自研的逆向工具。
目前,正在分析google登录,发现js部分还是有点难度的,2年前花了3个月还原了阿里滑块算法,当时狭隘的认为js最难也就这样子了,结果啪啪打脸,谷歌的js明显要难多了,不过已有初步方案,但需要N个月时间。如果有大佬搞过google,且愿意分享的话,请多多指导。在此,先谢过!


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

收藏
免费 11
支持
分享
最新回复 (13)
雪    币: 226
活跃值: (1554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最近我也逆向了不少flutter的app,确实是比较麻烦,有楼主的工具应该能方便好多.
之前也从论坛另外一个大佬分享的国外文章学到好多技巧.https://bbs.pediy.com/thread-274981.htm
估计flutter很快也不会安全了.
2022-11-25 20:41
1
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
大佬,你学逆向看了哪些书呀?能列举一下吗?最近在研究这方面
2022-11-30 21:55
0
雪    币: 283
活跃值: (1041)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
期待楼主出完美的解决抹掉Snapshot_Hash的快照相关文章。现在flutter确实比较烦人。另外ida分析flutter应用我认为还有最少两个关键点需要解决。1、字符串引用查找问题。2、对函数解析时相关的变量、参数栈的修复和还原。
2022-12-1 01:34
0
雪    币: 165
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
期待针对特殊的抹去hash的版本
2022-12-11 15:13
0
雪    币: 212
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢大佬为国内逆向圈增砖添瓦!
2022-12-12 13:17
0
雪    币: 2282
活跃值: (5867)
能力值: ( LV8,RANK:146 )
在线值:
发帖
回帖
粉丝
7

你这个软件生成的dart文件到底在哪,。。。。sdcard目录下压根没有。。。


2022-12-12 16:28
0
雪    币: 6
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hpphpp 最近我也逆向了不少flutter的app,确实是比较麻烦,有楼主的工具应该能方便好多. 之前也从论坛另外一个大佬分享的国外文章学到好多技巧.https://bbs.pediy.com/thread- ...
我这有个Flutter app抓不到包还几秒钟闪退,有兴趣接单的可以加我研究下,qq363759554
2022-12-18 14:33
0
雪    币: 8
活跃值: (219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这个能解析iOS的APP文件吗?
2023-3-23 16:56
0
雪    币: 335
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
助手在模拟器上打不开,有大佬知道怎么回事吗
2023-8-1 17:09
0
雪    币: 231
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
11
感觉生成的dart文件没什么用,就只有函数名和偏移
2023-11-9 14:45
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
催更
2023-11-24 11:11
0
雪    币: 410
活跃值: (5218)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
反编译可以参考参考隔壁的cpp2il
2023-11-24 13:53
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
sdcard目录下没找到呀,,
2025-5-10 17:20
0
游客
登录 | 注册 方可回帖
返回