AndResGuard

Android资源混淆工具
授权协议 Apache
开发语言 Java
所属分类 手机/移动开发、 手机开发工具
软件类型 开源软件
地区 国产
投 递 者 蒯胜泫
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

AndResGuard 是一款 Android资源混淆工具,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。同时可在配置文件中指定白名单,压缩文件(支持*,?通配符),支持自动签名,保持旧mapping,7z重打包,对齐等功能。 本工具支持 Linux、Window 跨平台使用,但测试表示若使用7z压缩,Linux 下的压缩率更高。

示例代码:

apply plugin: 'AndResGuard'
buildscript {
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.9'
    }
}
andResGuard {
    mappingFile = null
    use7zip = true
    useSign = true
    keepRoot = false
    whiteList = [
        //for your icon
        "R.drawable.icon",
        //for fabric
        "R.string.com.crashlytics.*",
        //for umeng update
        "R.string.umeng*",
        "R.string.UM*",
        "R.string.tb_*",
        "R.layout.umeng*",
        "R.layout.tb_*",
        "R.drawable.umeng*",
        "R.drawable.tb_*",
        "R.anim.umeng*",
        "R.color.umeng*",
        "R.color.tb_*",
        "R.style.*UM*",
        "R.style.umeng*",
        "R.id.umeng*"
        //umeng share for sina
        "R.drawable.sina*"
    ]
    compressFilePattern = [
        "*.png",
        "*.jpg",
        "*.jpeg",
        "*.gif",
        "resources.arsc"
    ]
     sevenzip {
         artifact = 'com.tencent.mm:SevenZip:1.1.9'
         //path = "/usr/local/bin/7za"
    }
}

简单用法:

java -jar andresguard.jar input.apk

若想指定配置文件或输出目录:

java -jar andresguard.jar input.apk -config yourconfig.xml -out output_directory

若想指定签名信息或mapping信息:

java -jar andresguard.jar input.apk -config yourconfig.xml
    -out output_directory -signature signature_file_path storepass_value
    keypass_value storealias_value -mapping mapping_file_path

若想指定7zip或zipalign的路径(若已设置环境变量,这两项不需要单独设置):

java -jar andresguard.jar input.apk
 -7zip /shwenzhang/tool/7za  -zipalign /shwenzhang/sdk/tools/zipalign

若想用7zip重打包安装包,同时也可指定output路径,指定7zip或zipalign的路径(此模式其他参数都不支持):

java -jar andresguard.jar -repackage input.apk -out output_directory
 -7zip /shwenzhang/tool/7za  -zipalign /shwenzhang/sdk/tools/zipalign


  • 当Android Studio升级到Aretic Fox版本后,APG的版本也升级到了7.0,而gradle的版本也要随之升级到7.0了(参考官方文档) 而AndResGuard在gradle升级到7.0后会出现错误,如下 Some problems were found with the configuration of task ':app:resguardProdRelease' (type

  • > 代码混淆   Android编译的大致流程如下:Java Code(.java) -> Java Bytecode(.class) -> Dalvik Bytecode(classes.dex)。  第三方的软件可以用来混淆我们的Android应用,常见的有:Proguard;DashO;Dexguard;DexProtector;ApkProtect;Shield4j;Stringer;Al

  • andResGuard { mappingFile = null use7zip = true useSign = true keepRoot = false compressFilePattern = [ “.png", ".jpg”, “.jpeg", ".gif”, “resources.arsc” ] whiteList = [ // your icon “R.drawable.icon”

  •   AndResGuard介绍: 微信资源压缩打包,主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格,提升了反破解难度。 详情参考:https://github.com/shwenzhang/AndResGuard 原理介绍: http://mp.weixin.qq.com/s?

  • 在使用AndResGuard的时候,要把第三方SDK的资源添加到白名单 //头条 "R.string.tt*", "R.string.appdownload*", "R.drawable.tt*", "R.drawable.appdownload*", "R.color.tt*

  • 1、项目gradle配置 buildscript { dependencies { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files //资源混淆

  • 1、使用 applyplugin:'AndResGuard' andResGuard{     // keep住不混淆的资源原有的物理路径 mappingFile = file("./resource_mapping.txt");     //如果混淆全部的话,设置mappingFile = null     mappingFile =null     // 打开这个开关,会keep住所

 相关资料
  • 我一直在摆弄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

  • 问题内容: 是否有对Java混淆代码进行反混淆的工具? 这些代码是从编译的类中提取的,但是它们被混淆并且不可读。 问题答案: 您是否尝试过使用Java Deobfuscator(又名JDO) (一种智能反编译器)来减少代码的晦涩感? 目前,JDO执行以下操作: 将混淆的方法,变量,常量和类名重命名为唯一的,并更能指示其类型 在整个源代码树(测试版)中传播更改 具有易于使用的GUI 允许您指定字段,

  • 我已经成功地用Maven配置了Proguard来混淆jar及其依赖jar。我已经设法让两个混淆使用相同的映射文件,这样一个jar就可以调用另一个jar的方法。我面临的问题是,Proguard没有在模糊的jar中保留唯一的名称;两个模糊的jar都包含一个名为 由于有两个名为F.B.class的类(每个jar中有一个),因此优先级被赋予了调用jar中的类,这就造成了问题。 也被应用,但它显然只将此应用

  • 问题内容: 我正在寻找一个好的Java混淆器。 我已经对以下Java混淆器进行了初步研究:proguard,yguard,retroguard,dasho,alatorari,jshrink,smokescreen,jobfuscate,marvin,jbco,jode,javaguard,jarg,joga,cafebabe,donquixote,mwobfu,bbmug,zelix klass

  • 我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?

  • 我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?

  • 混淆nick /** * 混淆nick * * @memberOf Tida * @name mixNick * @function * * @param {object} options 入参 * @param {number} options.sellerNick 卖家昵称,微淘应用必填,互动应用选填 * @param {function} callback 回调函数