那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Flutter應(yīng)用代碼混淆優(yōu)化防護(hù)的常見(jiàn)問(wèn)題與解決方案

哆啦安全 ? 來(lái)源:稀土掘金 ? 2023-08-12 11:11 ? 次閱讀

分析flutter應(yīng)用很依賴反編譯工具轉(zhuǎn)儲(chǔ)的dart文件中的信息,可以在開(kāi)發(fā)flutter的過(guò)程中開(kāi)啟混淆,能有效防止靜態(tài)分析。

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

一、混淆原理

混淆是一種代碼保護(hù)技術(shù),通過(guò)修改源代碼或編譯后的代碼,使其難以閱讀和理解。混淆的主要目的是提高反編譯和逆向工程的難度。通常,混淆可以通過(guò)以下方法實(shí)現(xiàn):

重命名變量、函數(shù)和類名。

刪除不必要的空白字符、注釋和換行符。

優(yōu)化代碼結(jié)構(gòu),例如內(nèi)聯(lián)函數(shù)、刪除未使用的代碼和資源等。

對(duì)控制流進(jìn)行混淆,例如添加冗余代碼、修改循環(huán)結(jié)構(gòu)等。

二、實(shí)現(xiàn)混淆

2.1.混淆Dart代碼

要對(duì)Dart代碼進(jìn)行混淆,請(qǐng)使用以下命令構(gòu)建Release版本:

flutterbuildapk--obfuscate--split-debug-info=
其中是用于存儲(chǔ)混淆映射文件的目錄。這些文件可用于還原混淆后的堆棧跟蹤。

Flutter應(yīng)用混淆

Flutter應(yīng)用的混淆非常簡(jiǎn)單,只需要在構(gòu)建release版應(yīng)用時(shí)結(jié)合使用--obfuscate 和--split-debug-info這兩個(gè)參數(shù)即可。

–obfuscate --split-debug-info用來(lái)指定輸出調(diào)試文件的位置,該命令會(huì)生成一個(gè)符號(hào)映射表。目前支持apk,appbundle,ios和ios-framework等目標(biāo)平臺(tái)(macOS和aar在master和dev分支中支持),如下所示:
flutter build apk --obfuscate --split-debug-info=//
混淆成功后,需要保存符號(hào)映射表,以便以后需要去混淆跟蹤代碼堆棧。

相關(guān)命令的其他信息,可以運(yùn)行flutter build apk -h查看,如果不支持該命令,核實(shí)Flutter版本,執(zhí)行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原生代碼

要對(duì)Android原生代碼進(jìn)行混淆,請(qǐng)?jiān)赼ndroid/app/build.gradle文件中啟用ProGuard或R8。在buildTypes配置中,為release類型添加以下配置:
buildTypes {
release{
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
此外,確保在proguard-rules.pro文件中添加必要的混淆規(guī)則,例如保留與MethodChannel相關(guān)的原生代碼:
-keep class io.flutter.plugin.** { *; }
三、優(yōu)化應(yīng)用程序包體積

3.1.移除未使用的資源

移除項(xiàng)目中未使用的資源(如圖片、字體和動(dòng)畫(huà)),以減小應(yīng)用程序的包體積。在Android項(xiàng)目中,可以使用shrinkResources選項(xiàng)來(lái)移除未使用的資源:
android {
    ...
    buildTypes {
        release {
            ...
            shrinkResources true
        }
    }
    ...
}
3.2.壓縮圖片資源

壓縮項(xiàng)目中的圖片資源,以降低它們的文件大小。可以使用像TinyPNG或ImageOptim這樣的工具來(lái)壓縮圖片資源。

四、提高反編譯難度

4.1.混淆字符串

為了提高反編譯的難度,可以在編譯階段處理掉明文字符串。一個(gè)方法是使用字符串混淆庫(kù),如string_obfuscator。

在編譯階段,此庫(kù)會(huì)自動(dòng)混淆字符串,并在運(yùn)行時(shí)解混淆。

要使用string_obfuscator庫(kù),請(qǐng)?jiān)趐ubspec.yaml文件中添加依賴,然后在需要混淆字符串的Dart文件中引入string_obfuscator庫(kù)。

使用obfuscate()函數(shù)混淆字符串。

以下是一些在混淆和優(yōu)化Flutter應(yīng)用程序過(guò)程中可能遇到的常見(jiàn)問(wèn)題及其解決方案:

Flutter與原生平臺(tái)通信失效:請(qǐng)確保在proguard-rules.pro文件中添加與MethodChannel相關(guān)的原生代碼保留規(guī)則。

保留JSON對(duì)應(yīng)的Java Bean對(duì)象:在proguard-rules.pro文件中保留與JSON相關(guān)的Java Bean對(duì)象,使用-keep指令來(lái)保留這些類。

隱藏明文字符串:使用字符串混淆庫(kù),如string_obfuscator,在編譯階段對(duì)字符串進(jìn)行混淆,并在運(yùn)行時(shí)解混淆。

六、總結(jié)

保護(hù)Flutter應(yīng)用程序的代碼和數(shù)據(jù)安全是移動(dòng)應(yīng)用程序開(kāi)發(fā)中的一個(gè)重要方面。通過(guò)混淆、優(yōu)化和保護(hù)應(yīng)用程序,您可以提高應(yīng)用程序的安全性和隱私。

請(qǐng)記住,在實(shí)施這些技術(shù)時(shí)始終關(guān)注可能遇到的問(wèn)題,并及時(shí)尋找解決方案。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7528

    瀏覽量

    164350
  • 壓縮機(jī)
    +關(guān)注

    關(guān)注

    11

    文章

    678

    瀏覽量

    79457
  • MacOS
    +關(guān)注

    關(guān)注

    0

    文章

    210

    瀏覽量

    17545
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    119

    瀏覽量

    7011
  • flutter
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    453

原文標(biāo)題:Flutter應(yīng)用代碼混淆優(yōu)化防護(hù)

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙Flutter實(shí)戰(zhàn):10-常見(jiàn)問(wèn)題集合

    # 鴻蒙Flutter實(shí)戰(zhàn):10-常見(jiàn)問(wèn)題集合 ## 1. 學(xué)習(xí)路徑應(yīng)該是怎樣的,需要掌握哪些技術(shù)才具備鴻蒙 Flutter 開(kāi)發(fā)能力 1.1 學(xué)習(xí)和掌握 Flutter 開(kāi)發(fā)技術(shù)
    發(fā)表于 10-23 17:05

    石英晶振的常見(jiàn)問(wèn)題以及解決方案

    石英晶振的常見(jiàn)問(wèn)題以及解決方案
    發(fā)表于 03-21 21:17

    深入理解flutter的編譯原理與優(yōu)化

    將以一個(gè)簡(jiǎn)單的hello_flutter為例,介紹下Flutter相關(guān)原理及定制與優(yōu)化Flutter簡(jiǎn)介Flutter的架構(gòu)主要分成三層:
    發(fā)表于 07-02 17:47

    電壓開(kāi)關(guān)中常見(jiàn)問(wèn)題解決方案

    電壓開(kāi)關(guān)中常見(jiàn)問(wèn)題解決方案
    發(fā)表于 05-23 10:05

    protues仿真常見(jiàn)問(wèn)題解決方案分享

    protues仿真常見(jiàn)問(wèn)題解決方案!來(lái)源:電子工程師成長(zhǎng)日記
    發(fā)表于 01-17 08:52

    ESD靜電防范常見(jiàn)問(wèn)題解決方案

    ESD靜電防范常見(jiàn)問(wèn)題解決方案靜電是人們非常熟悉的一種自然現(xiàn)象。靜電的許多功能已經(jīng)應(yīng)用到軍工或民用產(chǎn)品中,如靜電除塵、靜電噴涂、靜電分離
    發(fā)表于 05-19 13:03 ?2418次閱讀

    RF電路設(shè)計(jì)中常見(jiàn)問(wèn)題解決方案

    RF電路設(shè)計(jì)中常見(jiàn)問(wèn)題解決方案
    發(fā)表于 01-11 12:55 ?32次下載

    5G簇優(yōu)化常見(jiàn)問(wèn)題解決方案資料下載

    電子發(fā)燒友網(wǎng)為你提供5G簇優(yōu)化常見(jiàn)問(wèn)題解決方案資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、
    發(fā)表于 04-25 08:40 ?5次下載
    5G簇<b class='flag-5'>優(yōu)化</b><b class='flag-5'>常見(jiàn)問(wèn)題</b>及<b class='flag-5'>解決方案</b>資料下載

    protues仿真常見(jiàn)問(wèn)題解決方案

    protues仿真常見(jiàn)問(wèn)題解決方案!來(lái)源:電子工程師成長(zhǎng)日記
    發(fā)表于 01-17 10:33 ?4次下載
    protues仿真<b class='flag-5'>常見(jiàn)問(wèn)題解決方案</b>

    APP混淆實(shí)戰(zhàn)(Java/so代碼混淆)

    Android App Bundle混淆加密加殼加固保護(hù)的解決方案(過(guò)Google App上架審核)最全Android及資源混淆方法匯總(無(wú)需加固節(jié)約成本并將APP上架Google Play成功的最佳
    的頭像 發(fā)表于 06-29 15:42 ?952次閱讀
    APP<b class='flag-5'>混淆</b>實(shí)戰(zhàn)(Java/so<b class='flag-5'>代碼</b><b class='flag-5'>混淆</b>)

    Brocade存儲(chǔ)擴(kuò)展解決方案常見(jiàn)問(wèn)題

    電子發(fā)燒友網(wǎng)站提供《Brocade存儲(chǔ)擴(kuò)展解決方案常見(jiàn)問(wèn)題.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 11:22 ?0次下載
    Brocade存儲(chǔ)擴(kuò)展<b class='flag-5'>解決方案</b><b class='flag-5'>常見(jiàn)問(wèn)題</b>

    PCB金手指設(shè)計(jì)的常見(jiàn)問(wèn)題解決方案

    PCB金手指設(shè)計(jì)的常見(jiàn)問(wèn)題解決方案
    的頭像 發(fā)表于 12-25 10:09 ?2646次閱讀

    soc開(kāi)發(fā)流程常見(jiàn)問(wèn)題解決方案

    SOC(System on a Chip,系統(tǒng)級(jí)芯片)開(kāi)發(fā)流程中常見(jiàn)問(wèn)題解決方案主要包括以下幾個(gè)方面: 一、環(huán)境問(wèn)題 常見(jiàn)問(wèn)題 : 開(kāi)發(fā)環(huán)境配置復(fù)雜,新手難以快速上手。 依賴項(xiàng)缺失或版本不兼容
    的頭像 發(fā)表于 11-10 09:26 ?745次閱讀

    TTL電路中的常見(jiàn)問(wèn)題解決方案

    。以下是對(duì)這些問(wèn)題的歸納以及相應(yīng)的解決方案: 一、電源問(wèn)題 常見(jiàn)問(wèn)題 : 電源電壓過(guò)高或過(guò)低,導(dǎo)致電路無(wú)法正常工作或損壞。 電源與地顛倒接錯(cuò),造成電流過(guò)大,損壞器件。 解決方案 : TTL電路的電源電壓通常為+5V,允許的變化范
    的頭像 發(fā)表于 11-18 10:32 ?1206次閱讀

    電子設(shè)備EMC測(cè)試整改:常見(jiàn)問(wèn)題解決方案

    深圳南柯電子|電子設(shè)備EMC測(cè)試整改:常見(jiàn)問(wèn)題解決方案
    的頭像 發(fā)表于 12-23 11:47 ?308次閱讀
    電子設(shè)備EMC測(cè)試整改:<b class='flag-5'>常見(jiàn)問(wèn)題</b>與<b class='flag-5'>解決方案</b>
    大发888娱乐城 34hytrgwsdfpv| 百家乐怎样赢| 申博百家乐官网下载| 大赢家即时比分| 网上百家乐是假| 百家乐官网网络赌城| 大发888全球顶级游戏平台| 高级百家乐出千工具| 娱乐网百家乐官网补丁| 偃师市| 真人游戏试玩| 百家乐娱乐城赌场| 百家乐官网赚钱方| 百家乐官网视频麻将| 南通棋牌游戏中心| 千亿百家乐的玩法技巧和规则 | 百家乐娱乐下载| 百家乐官网贴士介绍| 百家乐官网怎么计算概率| 足球即时比分网| 百家乐赢一注| 哪个百家乐技巧平台信誉好| 百佬汇百家乐官网的玩法技巧和规则| 百家乐官网赢赌场百家乐官网| e世博 | 大发888为什么卡| 百家乐娱乐平台网| 百家乐模拟分析程序| 水果机遥控器多少钱| 真人百家乐在线玩| 伯爵百家乐官网赌场娱乐网规则| 百家乐官网玩法既规则| 凤凰网上娱乐| 大发888信誉平台| 玩百家乐去哪个娱乐城最安全| 百家乐游戏开发软件| 虚拟百家乐官网游戏下载| 枝江市| 百家乐翻天粤语| 澳门娱乐城官网| 大发888怎么提款|