AabResGuard 是一个针对 Android app bundle aab 文件的资源混淆工具,由字节跳动抖音 Android 团队开源。
资源混淆可以避免 Android 应用被轻松地恶意逆向分析破解,还可以减少 apk 文件的体积,但相应地也会降低代码的可读性。
bundle
包中的文件进行过滤,目前只支持 MATE-INFO/
、lib/
路径下的过滤。mapping
文件,支持增量混淆。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()
aabResGuard 是什么,网络很多资源,下面简单说下配置用法 root build gradle配置 classpath "com.bytedance.android:aabresguard-plugin:0.1.4" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" ext.kotlin_versio
方法1 来源 buildscript { repositories { mavenCentral() mavenLocal() google() maven { url 'https://raw.githubusercontent.com/martinloren/AabResGuard/mvn-repo' } }
我想将事件附加到元素以处理文件拖放事件,但似乎此事件也附加到所有子元素。例如 ...如果我将文件拖到属于元素的任何元素上,控制台将输出。因此,如果我将此事件附加到或,则当悬停在页面上的任何元素上时,事件将触发。 对于<code>dragleave 为什么会这样?有没有办法把这个事件只附加到指定的元素上?如果没有,有没有办法将事件从所有子元素中分离出来? 这里有一个摆弄的例子:http://jsfi
我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级
Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo
默认情况下 Nuxt 使用 vue-loader、file-loader 以及 url-loader 这几个 Webpack 加载器来处理文件的加载和引用。对于不需要通过 Webpack 处理的静态资源文件,可以放置在 static 目录中。 Webpack 构建 默认情况下, vue-loader自动使用 css-loader 和Vue模板编译器来编译处理vue文件中的样式和模板。在此编译过程中
由于Eclipse的资源文件编辑器不支持将中文信息转换成“\uxxxx”格式的UCS2编码,因此,不能使用Eclipse自带的资源文件编辑器来编辑中文信息。除了直接在资源文件中输入“\uxxxx”格式的内容外,还可以采用如下的三种方法减少输入中文信息的工作量: 1. 使用native2ascii.exe命令 native2ascii.exe文件是JDK发行包中带的一个命令,该文件可以在<JDK安装
问题内容: 模式和打开文件进行更新(请注意,会截断文件)。在区分二进制文件和文本文件的系统上,将“ b”追加到以二进制模式打开文件的模式;在没有此区别的系统上,添加“ b”无效。 与此 :打开一个文件进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,请创建一个新文件以进行读写。 但是,如何读取打开的文件? 问题答案: 假设你要打开的文件带有应有的声明。然后,你将执行以下操作以从文件中读取内
我已经创建了一个proto文件,其中包含我打算生成的REST Web服务的所有必要消息和rpc函数。使用proc-gen-swagger插件,我设法将该proto文件编译成一个swagger.json文件,一切似乎都很好,除了两件事,我似乎无法解决。 > swagger.json文件中的所有定义都以我的原始文件包的名称为前缀。有没有办法摆脱这个? 我的消息的所有字段都是“可选的”。它们没有被明确指
问题内容: 是否有对Java混淆代码进行反混淆的工具? 这些代码是从编译的类中提取的,但是它们被混淆并且不可读。 问题答案: 您是否尝试过使用Java Deobfuscator(又名JDO) (一种智能反编译器)来减少代码的晦涩感? 目前,JDO执行以下操作: 将混淆的方法,变量,常量和类名重命名为唯一的,并更能指示其类型 在整个源代码树(测试版)中传播更改 具有易于使用的GUI 允许您指定字段,