Android 安裝包優(yōu)化】資源混淆 ( 資源混淆效果 | APK 構建流程簡介 | 資源 ID 組成 )

      網(wǎng)友投稿 1022 2022-05-30

      文章目錄

      一、資源混淆效果

      二、APK 構建流程簡介

      三、資源 ID 組成

      四、參考資料

      一、資源混淆效果

      資源混淆 , 將資源名稱與目錄進行混淆 , 提高了反編譯的難度 , 同時也減小了 APK 文件的大小 ;

      下面的 APK 安裝文件就是進行資源混淆 , 其中的 r 文件 , 就是混淆后的資源文件 ;

      進入 r 文件內(nèi)部 , 可以看到很多無意義無規(guī)則的目錄 , 這是混淆后的資源文件 ;

      二、APK 構建流程簡介

      APK 構建流程 官方文檔參考 : https://developer.android.google.cn/studio/build

      應用模塊 ( Application Module ) 中包含 :

      源碼文件 ( Source Code )

      資源文件 ( Resource Files )

      AIDL 文件 ( AIDL Files )

      等 , 還有各種引入的依賴庫 ( Dependencies ) , 包括 :

      Android 依賴庫模塊 ( Library Modules )

      Android 依賴庫包 ( AAR Libraries )

      Java 依賴庫 ( JAR Libraries ) ;

      應用模塊 和 依賴庫 放在一起進行編譯 , 先編譯成 class 字節(jié)碼文件 , 然后使用 dex 工具 , 編譯成 DEX 文件 , 同時也會對 資源文件 ( Resources ) 進行編譯 , 最后打包成 APK 文件 ;

      資源文件在打包時會進行編譯 , 將資源文件編譯成二進制文件 , 直接打開資源文件都是二進制亂碼 ;

      【Android 安裝包優(yōu)化】資源混淆 ( 資源混淆效果 | APK 構建流程簡介 | 資源 ID 組成 )

      三、資源 ID 組成

      Android 應用編譯時會生成 R 文件 , 在代碼中 , 也使用 R 文件 , 引用相關的資源 ;

      每個資源的值 , 存在子 app\build\intermediates\runtime_symbol_list\debug\R.txt 中 , 現(xiàn)在在 build 目錄中不生成 R.java 了 ;

      int anim abc_fade_in 0x7f010000 int anim abc_fade_out 0x7f010001 int anim abc_grow_fade_in_from_bottom 0x7f010002 int anim abc_popup_enter 0x7f010003 int anim abc_popup_exit 0x7f010004 int anim abc_shrink_fade_out_from_bottom 0x7f010005 int anim abc_slide_in_bottom 0x7f010006 int anim abc_slide_in_top 0x7f010007 int anim abc_slide_out_bottom 0x7f010008 int anim abc_slide_out_top 0x7f010009 int anim abc_tooltip_enter 0x7f01000a int anim abc_tooltip_exit 0x7f01000b

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      每個資源都對應著 R 文件中的一個 ID , 以 0 x 7 f 010000 \rm 0x7f010000 0x7f010000 為例 , ID 的格式分為三部分 , 7f | 01 | 0000 ,

      7 f \rm 7f 7f 表示包 , 一般的程序的包都會被編譯成 7 f \rm 7f 7f 開頭 ;

      01 01 01 對應資源類型 , 動畫類型以 7f01 開頭 ;

      最后 2 2 2 字節(jié) , 按照序號從 0 0 0 開始排序即可 ;

      四、參考資料

      參考官方文檔 :

      縮減、混淆處理和優(yōu)化應用 : https://developer.android.google.cn/studio/build/shrink-code

      APK 構建流程 : https://developer.android.google.cn/studio/build

      參考之前的博客資源 :

      【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的報錯信息 | Proguard 混淆映射文件 mapping.txt )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 將混淆后的報錯信息轉(zhuǎn)為原始報錯信息 | retrace.bat 命令執(zhí)行目錄 | 暴露更少信息 )

      【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的報錯信息 | Proguard 混淆映射文件 mapping.txt )

      博客資源 :

      GitHub 項目源碼 : https://github.com/han1202012/SVG

      - :

      Android

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:Java 8計算兩個日期之間的月份
      下一篇:《深度學習之TensorFlow入門、原理與進階實戰(zhàn)》—2.4.2 快速了解Jupyter Notebook
      相關文章
      亚洲人色婷婷成人网站在线观看 | 精品亚洲一区二区三区在线播放| 亚洲av永久无码精品天堂久久| 中文字幕亚洲综合久久2| 亚洲精品无码专区久久久| 中文字幕专区在线亚洲| 精品亚洲一区二区三区在线播放| 国产亚洲精品免费视频播放| 久久久久亚洲AV无码专区桃色| 国产亚洲自拍一区| 精品亚洲视频在线观看 | 亚洲最新黄色网址| 亚洲无线一二三四区| 亚洲日本乱码一区二区在线二产线 | 亚洲狠狠色丁香婷婷综合| 日本亚洲欧美色视频在线播放 | 中文日韩亚洲欧美制服| 亚洲精品无码人妻无码| 日本亚洲高清乱码中文在线观看 | 国产精品亚洲专区无码不卡| 国产亚洲精品欧洲在线观看| 亚洲精品国产高清不卡在线| 亚洲午夜福利精品无码| 亚洲线精品一区二区三区影音先锋| 国产亚洲人成无码网在线观看| 久久精品国产亚洲AV果冻传媒| 亚洲成人激情在线| 亚洲国产午夜精品理论片| 在线观看亚洲AV日韩AV| 亚洲AⅤ男人的天堂在线观看| 亚洲国产精品综合久久网络| 红杏亚洲影院一区二区三区| 久久亚洲综合色一区二区三区| 亚洲第一视频网站| 亚洲伦理中文字幕| 综合偷自拍亚洲乱中文字幕| 亚洲人成无码网WWW| 亚洲成AV人片在线观看ww| 亚洲综合一区二区精品久久| 亚洲情A成黄在线观看动漫软件 | 亚洲Av综合色区无码专区桃色|