0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Flutter应用代码混淆优化防护的常见问题与解决方案

哆啦安全 来源:稀土掘金 2023-08-12 11:11 次阅读

分析flutter应用很依赖反编译工具转储的dart文件中的信息,可以在开发flutter的过程中开启混淆,能有效防止静态分析。

flutter build apk --obfuscate --split-debug-info=./debug_info

一、混淆原理

混淆是一种代码保护技术,通过修改源代码或编译后的代码,使其难以阅读和理解。混淆的主要目的是提高反编译和逆向工程的难度。通常,混淆可以通过以下方法实现:

重命名变量、函数和类名。

删除不必要的空白字符、注释和换行符。

优化代码结构,例如内联函数、删除未使用的代码和资源等。

对控制流进行混淆,例如添加冗余代码、修改循环结构等。

二、实现混淆

2.1.混淆Dart代码

要对Dart代码进行混淆,请使用以下命令构建Release版本:

flutterbuildapk--obfuscate--split-debug-info=
其中是用于存储混淆映射文件的目录。这些文件可用于还原混淆后的堆栈跟踪。

Flutter应用混淆

Flutter应用的混淆非常简单,只需要在构建release版应用时结合使用--obfuscate 和--split-debug-info这两个参数即可。

–obfuscate --split-debug-info用来指定输出调试文件的位置,该命令会生成一个符号映射表。目前支持apk,appbundle,ios和ios-framework等目标平台(macOS和aar在master和dev分支中支持),如下所示:
flutter build apk --obfuscate --split-debug-info=//
混淆成功后,需要保存符号映射表,以便以后需要去混淆跟踪代码堆栈。

相关命令的其他信息,可以运行flutter build apk -h查看,如果不支持该命令,核实Flutter版本,执行flutter upgrade更新。

Flutter分析包的大小
flutter build apk --target-platform android-arm --analyze-size 
flutter build apk --target-platform android-arm64 --analyze-size 
flutter build apk --target-platform android-x64 --analyze-sizeflutter build appbundle --target-platform android-arm --analyze-size 
flutter build appbundle --target-platform android-arm64 --analyze-size 
flutter build appbundle --target-platform android-x64 --analyze-size
2.2.混淆Android原生代码

要对Android原生代码进行混淆,请在android/app/build.gradle文件中启用ProGuard或R8。在buildTypes配置中,为release类型添加以下配置:
buildTypes {
release{
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
此外,确保在proguard-rules.pro文件中添加必要的混淆规则,例如保留与MethodChannel相关的原生代码:
-keep class io.flutter.plugin.** { *; }
三、优化应用程序包体积

3.1.移除未使用的资源

移除项目中未使用的资源(如图片、字体和动画),以减小应用程序的包体积。在Android项目中,可以使用shrinkResources选项来移除未使用的资源:
android {
    ...
    buildTypes {
        release {
            ...
            shrinkResources true
        }
    }
    ...
}
3.2.压缩图片资源

压缩项目中的图片资源,以降低它们的文件大小。可以使用像TinyPNG或ImageOptim这样的工具来压缩图片资源。

四、提高反编译难度

4.1.混淆字符串

为了提高反编译的难度,可以在编译阶段处理掉明文字符串。一个方法是使用字符串混淆库,如string_obfuscator。

在编译阶段,此库会自动混淆字符串,并在运行时解混淆。

要使用string_obfuscator库,请在pubspec.yaml文件中添加依赖,然后在需要混淆字符串的Dart文件中引入string_obfuscator库。

使用obfuscate()函数混淆字符串。

以下是一些在混淆和优化Flutter应用程序过程中可能遇到的常见问题及其解决方案:

Flutter与原生平台通信失效:请确保在proguard-rules.pro文件中添加与MethodChannel相关的原生代码保留规则。

保留JSON对应的Java Bean对象:在proguard-rules.pro文件中保留与JSON相关的Java Bean对象,使用-keep指令来保留这些类。

隐藏明文字符串:使用字符串混淆库,如string_obfuscator,在编译阶段对字符串进行混淆,并在运行时解混淆。

六、总结

保护Flutter应用程序的代码和数据安全是移动应用程序开发中的一个重要方面。通过混淆、优化和保护应用程序,您可以提高应用程序的安全性和隐私。

请记住,在实施这些技术时始终关注可能遇到的问题,并及时寻找解决方案。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7151

    浏览量

    162000
  • 压缩机
    +关注

    关注

    11

    文章

    636

    浏览量

    78590
  • MacOS
    +关注

    关注

    0

    文章

    196

    浏览量

    17241
  • JSON
    +关注

    关注

    0

    文章

    111

    浏览量

    6819
  • flutter
    +关注

    关注

    0

    文章

    11

    浏览量

    400

原文标题:Flutter应用代码混淆优化防护

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    石英晶振的常见问题以及解决方案

    石英晶振的常见问题以及解决方案
    发表于 03-21 21:17

    深入理解flutter的编译原理与优化

    将以一个简单的hello_flutter为例,介绍下Flutter相关原理及定制与优化Flutter简介Flutter的架构主要分成三层:
    发表于 07-02 17:47

    电压开关中常见问题解决方案

    电压开关中常见问题解决方案
    发表于 05-23 10:05

    protues仿真常见问题解决方案分享

    protues仿真常见问题解决方案!来源:电子工程师成长日记
    发表于 01-17 08:52

    ESD静电防范常见问题解决方案

    ESD静电防范常见问题解决方案静电是人们非常熟悉的一种自然现象。静电的许多功能已经应用到军工或民用产品中,如静电除尘、静电喷涂、静电分离
    发表于 05-19 13:03 2181次阅读

    电压开关中常见问题解决方案

    电压开关中常见问题解决方案 设计自动化的测试系统开关需要搞清楚要开关信号和要执行测试的特点。例如,在测试应用中承受开关电压信号的
    发表于 05-05 17:32 1018次阅读

    RF电路设计中常见问题解决方案

    RF电路设计中常见问题解决方案
    发表于 01-11 12:55 32次下载

    5G簇优化常见问题解决方案资料下载

    电子发烧友网为你提供5G簇优化常见问题解决方案资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、
    发表于 04-25 08:40 5次下载
    5G簇<b class='flag-5'>优化</b><b class='flag-5'>常见问题</b>及<b class='flag-5'>解决方案</b>资料下载

    protues仿真常见问题解决方案

    protues仿真常见问题解决方案!来源:电子工程师成长日记
    发表于 01-17 10:33 3次下载
    protues仿真<b class='flag-5'>常见问题解决方案</b>

    解析会议一体机在使用中出现的常见问题解决方案

    随着科技的发展,会议一体机的应用出现在我们生活中的频率越来越高,然而在使用过程中可能还伴随着多多少少的一些问题,那么接下来中亿睿将分享一些会议一体机在使用中出现的常见问题解决方案常见问题
    的头像 发表于 05-19 09:17 898次阅读

    APP混淆实战(Java/so代码混淆)

    Android App Bundle混淆加密加壳加固保护的解决方案(过Google App上架审核)最全Android及资源混淆方法汇总(无需加固节约成本并将APP上架Google Play成功的最佳
    的头像 发表于 06-29 15:42 591次阅读
    APP<b class='flag-5'>混淆</b>实战(Java/so<b class='flag-5'>代码</b><b class='flag-5'>混淆</b>)

    Brocade存储扩展解决方案常见问题

    电子发烧友网站提供《Brocade存储扩展解决方案常见问题.pdf》资料免费下载
    发表于 08-29 11:22 0次下载
    Brocade存储扩展<b class='flag-5'>解决方案</b><b class='flag-5'>常见问题</b>

    石英谐振器应用中常见问题解决方案

    石英谐振器应用中常见问题解决方案 石英谐振器是一种广泛应用于电子设备中的振荡器。它通过石英晶体的谐振效应来提供稳定的频率信号。然而,在实际应用中,石英谐振器可能会遇到一些常见问题。本文将探讨一些
    的头像 发表于 12-15 14:00 234次阅读

    PCB金手指设计的常见问题解决方案

    PCB金手指设计的常见问题解决方案
    的头像 发表于 12-25 10:09 617次阅读

    underfill工艺常见问题解决方案

    underfill工艺常见问题解决方案Underfill工艺是一种集成电路封装工艺,用于在倒装芯片边缘点涂环氧树脂胶水,通过“毛细管效应”完成底部填充过程,并在加热情况下使胶水固化。该工艺在缓解
    的头像 发表于 04-09 15:45 138次阅读
    underfill工艺<b class='flag-5'>常见问题</b>及<b class='flag-5'>解决方案</b>