AabResGuardAndroid aab 文件資源混淆工具
AabResGuard 是一個針對 Android app bundle aab 文件的資源混淆工具,由字節(jié)跳動抖音 Android 團(tuán)隊(duì)開源。
資源混淆可以避免 Android 應(yīng)用被輕松地惡意逆向分析破解,還可以減少 apk 文件的體積,但相應(yīng)地也會降低代碼的可讀性。
特性
- 資源去重: 對重復(fù)資源文件進(jìn)行合并,縮減包體積。
- 文件過濾: 支持對
bundle包中的文件進(jìn)行過濾,目前只支持MATE-INFO/、lib/路徑下的過濾。 - 白名單: 白名單中的資源,名稱不予混淆。
- 增量混淆: 輸入
mapping文件,支持增量混淆。 - 文案刪除: 輸入按行分割的字符串文件,移除文案及翻譯。
快速開始
- 命令行工具: 支持命令行一鍵輸入輸出。
- Gradle plugin: 支持
gradle plugin,使用原始打包命令執(zhí)行混淆。
Gradle plugin
在 build.gradle(root project) 中進(jìn)行配置
buildscript { repositories { mavenCentral() jcenter() google() } dependencies { classpath "com.bytedance.android:aabresguard-plugin:0.1.0" } }
在 build.gradle(application) 中配置
apply plugin: "com.bytedance.android.aabResGuard" aabResGuard { mappingFile = file("mapping.txt").toPath() // 用于增量混淆的 mapping 文件 whiteList = [ // 白名單規(guī)則 "*.R.raw.*", "*.R.drawable.icon" ] obfuscatedBundleFileName = "duplicated-app.aab" // 混淆后的文件名稱,必須以 `.aab` 結(jié)尾 mergeDuplicatedRes = true // 是否允許去除重復(fù)資源 enableFilterFiles = true // 是否允許過濾文件 filterList = [ // 文件過濾規(guī)則 "*/arm64-v8a/*", "META-INF/*" ] enableFilterStrings = false // 過濾文案 unusedStringPath = file("unused.txt").toPath() // 過濾文案列表路徑 默認(rèn)在mapping同目錄查找 languageWhiteList = ["en", "zh"] // 保留en,en-xx,zh,zh-xx等語言,其余均刪除 }
aabResGuard plugin 侵入了 bundle 打包流程,可以直接執(zhí)行原始打包命令進(jìn)行混淆。
./gradlew clean :app:bundleDebug --stacktrace
通過 gradle 獲取混淆后的 bundle 文件路徑
def aabResGuardPlugin = project.tasks.getByName("aabresguard${VARIANT_NAME}") Path bundlePath = aabResGuardPlugin.getObfuscatedBundlePath()
評論
圖片
表情
