AabResGuard 文件资源混淆工具

339次阅读  |  发布于1年以前

1.简介

AabResGuard 是一个针对 Android app bundle aab 文件的资源混淆工具,由字节跳动抖音 Android 团队开源。

资源混淆可以避免 Android 应用被轻松地恶意逆向分析破解,还可以减少 apk 文件的体积,但相应地也会降低代码的可读性。

2.特性

3.快速开始

4.Gradle plugin

build.gradle(root project) 中进行配置


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 = [ // 白名单规则
        "*.R.raw.*",        "*.R.drawable.icon"
    ]
    obfuscatedBundleFileName = "duplicated-app.aab" // 混淆后的文件名称,必须以 `.aab` 结尾
    mergeDuplicatedRes = true // 是否允许去除重复资源
    enableFilterFiles = true // 是否允许过滤文件
    filterList = [ // 文件过滤规则
        "*/arm64-v8a/*",        "META-INF/*"
    ]
    enableFilterStrings = false // 过滤文案
    unusedStringPath = file("unused.txt").toPath() // 过滤文案列表路径 默认在mapping同目录查找
    languageWhiteList = ["en", "zh"] // 保留en,en-xx,zh,zh-xx等语言,其余均删除}

aabResGuard plugin 侵入了bundle 打包流程,可以直接执行原始打包命令进行混淆。

./gradlew clean :app:bundleDebug --stacktrace

通过gradle 获取混淆后的bundle 文件路径

def aabResGuardPlugin = project.tasks.getByName("aabresguard${VARIANT_NAME}")Path bundlePath = aabResGuardPlugin.getObfuscatedBundlePath()

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8