android-Allatori混淆代码

android-Allatori混淆代码


前篇


运行 demo

  1. 进入其中的 .\tutorial\step01\files 目录, Allatori提供了一个test.jar, 执行 RunAllatori.bat 即可

    • 里面的具体命令

      1
      java -Xms128m -Xmx512m -jar ..\..\..\lib\allatori.jar config.xml
      • 指定了配置文件 config.xml

    然后会就生成混淆后的 obf-test.jar


混淆配置

说明

  • 通用说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <config>
    // 输入/输出 文件, 可以配置多个
    <input>
    <jar in="JavaLab.lib01.main.jar" out="JavaLab.lib01.main-obf.jar"/>
    </input>

    // 混淆策略
    <keep-names>
    <class access="protected+">
    <field access="protected+"/>
    <method access="protected+"/>
    </class>
    </keep-names>

    // 混淆日志
    <property name="log-file" value="log.xml"/>
    </config>


混淆策略

  • 指定类名不混淆, 但是里面的方法还是会被混淆

    ```xml

      // protected+ 级别以上的 类 里的 protected+ 级别以上 字段和方法不被混淆
      <class access="protected+">
          <field access="protected+"/>
          <method access="protected+"/>
      </class>
      
      <class template="class *.Main"/>
    

将所有 jar 打包到一个 jar 中

  • a

    ```xml

      <keep-names>
          <class template="class *.TestFrame"/>
      </keep-names>
    
      <property name="log-file" value="log.xml"/>
    

添加水印

  • 可以将字符串常量变的混乱. 可以用于在一些写在 java 里面的 秘钥, 如 aes 的 key 的混淆.

    ```json

      <keep-names>
          <class template="class *.TestFrame"/>
      </keep-names>
    
      <property name="log-file" value="log.xml"/>
    
      <watermark key="secure-key-to-extract-watermark" value="Customer: John Smith; Date: xx.yy.zzzz"/>
    

我们添加了一个具有以下属性的水印元素: 密钥-使用隐写术技术将水印嵌入应用程序的密钥; value——将嵌入到应用程序jar中的任何字符串。它可以是版权、客户名称、公司名称或唯一标识该版本的任何其他信息。水印可用于识别软件的所有者或追踪盗版的来源。