第一步-基本类库混淆
下面表格中的文件位于: tutorial/step01/files
文件名 | 说明 |
---|---|
test.jar | 鼠标手势demo的jar |
config.xml | Allatori 配置文件 |
RunAllatori.bat | Allatori运行脚本 |
MouseGesturesOriginal.bat | 运行原始的鼠标手势 |
MouseGesturesObfuscated.bat | 运行混淆后的鼠标手势 |
Clean.bat | 删除混淆过程生成的文件 |
mousegestures-1.2.jar | 鼠标手势类库 |
第一步,我们将混淆“鼠标手势”这个典型的类库,其中所有public API方法不会被重命名。所有使用“鼠标手势”这个类库的应用都可以使用混淆后的jar。当开发用于第三方产品的类库时,这种情况很常见。
运行RunAllatori.bat会产生3个文件:obf-mousegestures-1.2.jar 和 obf-test.jar是被混淆后的“鼠标手势”jars ,log.xml是混淆处理过程的日志文件。
现在,你可以运行 MouseGesturesOriginal.bat 和 MouseGesturesObfuscated.bat 测试应用的原始版本以及混淆版本。请注意,Allatori 的演示版将 System.out 添加到混淆的应用程序中。
让我们看看config.xml:
<config>
<input>
<jar in="test.jar" out="obf-test.jar"/>
<jar in="mousegestures-1.2.jar" out="obf-mousegestures-1.2.jar"/>
</input>
<keep-names>
<class access="protected+">
<field access="protected+"/>
<method access="protected+"/>
</class>
</keep-names>
<property name="log-file" value="log.xml"/>
</config>
“jars”的节点中定义了输入和输出的jar文件。如果输入输出使用的相同的文件名称,混淆后的jar文件会覆盖原始文件。
在“ keep-names”节点定义的类、方法和成员名称不会被改变。当我们混淆类库时,通过将“access”属性设定为“protected+”,来公开所有外部可见的类。这意味着,所有“protected”、“public”的东西将保持名称不变。
“log-file”属性定义日志文件的名字。如果你不需要混淆过程的日志,可以删除这个属性标签。关于日志文件的例子可以参考第8步
执行Clean.bat会删除obf-mousegestures-1.2.jar*, obf-test.jar 以及 log.xml 三个文件.