如何逆向Flutter应用(反编译)

研究基于android flutter开发的APP逆向

连续碰到好几个用flutter的APP,比加密的还难搞,不加壳都无从下手,研究了一下,发现一个软件Doldrums,https://github.com/rscloura/Doldrums
用来反编译flutter的dart文件的。
1.逆向思路
先把apk脱壳,解压出来,这些都照以前的做就行了没什么变化
解压出apk后,以前都是去研究classes.dex或者classed2.dex这两个文件,用flutter开发的app这两个文件里就没什么东西了。
flutter开发的app,用户代码被放在了/lib目录里,根据所用cpu类型不同,lib里有armeabi-v7a armeabi-v8a之类的文件夹,里面的libapp.so这个才是程序的用户代码。
2.开始逆向
找到lib/armeabi-v7a/libapp.so,这个就是程序核心代码了,然后反编译它:
python src/main.py -v libapp.so output
输出结果在output文件里
是json格式的文件

Flutter是一种跨平台的应用开发框架,它可以帮助开发者快速构建高性能的Android和iOS应用程序。但是由于Flutter应用程序的特殊性,使得传统的Android逆向工程技术在逆向分析和修改Flutter应用上存在一些挑战。 首先,Flutter应用程序的核心逻辑是通过Dart语言编写的,而不是传统的Java或Kotlin。这意味着我们无法像分析Java或Kotlin代码那样直接对源代码进行分析和修改。但是,我们仍然可以通过逆向技术来查看Flutter应用程序的Dart字节码,并尝试从中获取相关信息。 其次,Flutter应用程序通常会使用干净的、高度抽象的接口来与底层的Android操作系统交互,以实现良好的跨平台兼容性。这使得传统的逆向工程技术(如hook框架、反编译工具)在对Flutter应用程序进行逆向分析时效果有限,因为我们无法直接获取到涉及底层Android接口实现的关键代码。 然而,这并不意味着没有任何逆向方法可以应用Flutter应用程序。在逆向Flutter应用程序时,我们可以尝试使用动态调试技术,通过Hook应用程序的Native层代码来获取关键信息。同时,一些第三方工具和库也提供了对Flutter应用程序的逆向支持,可以帮助我们更好地进行分析和修改。 总而言之,逆向Flutter应用程序可能会面临一些挑战,但我们仍然可以通过采用合适的逆向工程技术和工具来解决问题。关键是持续学习和研究最新的逆向技术,以适应Flutter技术的发展并应对逆向分析的挑战。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值