Flutter 逆向安全

文章探讨了Flutter应用的安全性,由于缺乏有效的逆向工程工具,Flutter应用比原生应用更难被反编译。通过分析API请求,发现其签名特征明显且加密方式单一。作者强调了秘钥隐藏和多层加密的重要性以提高安全性。

 前言:

前几天在 "学习" 一个项目, 发现是用 Flutter 开发的。之前研究过 flutter 的逆向,早期 Flutter 有工具可以通过快照进行反编译:《对照表如下》

新的版本开发者没有维护了。 目前没有很好的工具 可以对 Flutter 进行反编译!

所以现状就是使用 Flutter开发的应用  比使用传统原生的开发应用更安全!

安装包分析:

我们使用  AndroidKille 拆包查看:  因为是 Flutter 开发的 代码都在  libapp.so 中:

 我们通过 IDA 在浏览  libapp.so  过程中 发现了一行 可疑 字符

是不是特征很明显了:接下来就分析下  API的请求:

API请求分析:

我们通过 抓包软件 抓一个 API请求:

sign 字段是关键:

通过大量测试发现:签名规律:

前面是url 固定然后 是请求的参数 key-value,进行 ASCII 顺序拼接

编写脚本:

因为是个抢购软件,刚开始用 python编写发现效率不高而且 比较吃机器性能,后来改用 go 编写发现,不管是效率 还是对机器性能 都是一个质的提升。

警示:

API 请求秘钥形式特征明显

  1. 秘钥特性明显 容易被察觉
  2. 不管是 签名还是加密,在秘钥隐藏方面 要做到深入。秘钥不可转化为其他字符串。
  3. 对于特征明显的秘钥可以采用 切割, 算法进行处理

API 请求加密方式单一:

  1. 所有请求的方式 加密都是用一种方式,可以采用多种方式 复合使用;
  2. 特别重要的接口 可以使用不同的规则;以免一个接口攻破 所有接口都没有全军覆没

不管是加密还是哈希签名,对于 秘钥 或者 特征字符串 的隐藏是一个值得好好处理的事情。

隐藏的越深 越额普通 那你的安全就越高;

### Flutter 应用的逆向工程与反编译 Flutter 是一种跨平台开发框架,其应用程序通常由 Dart 语言编写并打包为 APK 或 IPA 文件。由于移动应用的安全性和知识产权保护需求日益增加,研究如何进行 Flutter 应用程序的逆向工程变得尤为重要。 #### 1. **APK 和 IPA 的解压** 对于 Android 平台上的 Flutter 应用,可以通过常规方式提取 APK 中的内容。使用 `apktool` 工具可以轻松解压缩 APK 文件,并查看其中的资源文件和元数据[^2]。 ```bash apktool d your_app.apk ``` iOS 上的应用则需要通过工具如 `iFunBox` 或者直接在 macOS 下利用命令行操作来解压 `.ipa` 文件。IPA 实际上是一个 ZIP 归档文件,因此可以直接将其重命名为 `.zip` 后解压。 #### 2. **Dart 字节码的提取** Flutter 将 Dart 源代码编译为字节码形式存储在 APK/IPA 内部的一个特殊目录下(通常是 `assets/flutter_assets/isolate_snapshot_data`)。这些字节码并非原生机器码,而是可以在运行时解释执行的形式。要获取原始的 Dart 脚本,可能需要用到专门设计的反编译工具。 目前存在一些开源项目尝试解析此类字节码,例如: - [dart-decompiler](https://github.com/robertoweller/dart-decompiler): 这是一款能够部分还原 Dart 源代码结构的工具。 需要注意的是,某些复杂逻辑可能会丢失或者难以完全恢复,尤其是当开发者启用了混淆选项之后[^5]。 #### 3. **动态调试技术** 除了静态分析外,还可以借助动态调试手段深入理解目标行为模式。比如设置断点监控函数调用链路、变量变化情况等等。Android Studio 提供了强大的远程调试功能支持;而对于 iOS 设备来说,则需依赖 Xcode 来完成相似的任务[^3]。 另外值得注意的一点是,如果遇到加密处理过的字符串常量表或者其他敏感信息加载机制的话,单纯依靠上述两种途径往往不够充分——此时就需要结合网络抓包技术和本地沙盒环境模拟请求响应过程来进行综合判断[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nicepainkiller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值