专业的JAVA编程教程与资源

网站首页 > java教程 正文

保护自己的Java Android源码 Allatori混淆器试用

temp10 2024-09-04 19:55:42 java教程 16 ℃ 0 评论

Allatori属于第二代混淆器都,除了保护功能之外,还附加了一系列的功能,几乎可以抵御一切的代码攻击。同时,Allatori可以让您的程序体积更小,速度更快,效果简直让人难以置信。

保护自己的Java Android源码 Allatori混淆器试用

Name Obfuscation:命名混淆

命名混淆是Allatori的一大特色。命名混淆包括混淆类名、函数名和参数名。命名混淆的性能取决于算法。算法越精密越复杂,性能越强大。 为此,Allatori花了大量的时间设计算法。无论多么复杂的工程项目,Allatori都能够识别和处理。Allatori可以区分任何继承关系和方式,而且不受软件架构的影响。

Flow Obfuscation:流程混淆

一般来说,Java里常用的就是循环、条件和顺序,然而Allatori却可以对流程进行混淆。通过对流程进行混淆, 大部分的反编译工具基本上就趴窝了。举个例子:

源代码:

int sumOfElements(int[][] matrix, int rowsCount, int columnsCount) {
int sum = 0;
for (int row = 0; row < rowsCount; row++)
for (int column = 0; column < columnsCount; column++)
sum += matrix[row][column];
return sum;
}

混淆后:

int a(int a[][], int a, int a) {
int i = 0;
int j = 0;
goto _L1
_L6:
int k = 0;
goto _L2
_L4:
i += a[j][k];
++k;
_L2:
a;
JVM INSTR icmplt 17;
goto _L3 _L4
_L3:
++j;
_L1:
a;
JVM INSTR icmplt 10;
goto _L5 _L6
_L5:
return i;
}

Debug Info Obfuscation:调试信息混淆

调试信息也混淆,出错信息也找不到可钻的空子。

上例子:

java.lang.NullPointerException
at com.company.c.a(Util.java:38)
at com.company.b.b(TraceTest.java:53)
at com.company.b.a(TraceTest.java:14)
at com.company.a.a(Main.java:27)

混淆后:

java.lang.NullPointerException
at com.company.c.a(Unknown Source)
at com.company.b.b(Unknown Source)
at com.company.b.a(Unknown Source)
at com.company.a.a(Unknown Source)

或者还能这样:

java.lang.NullPointerException
at com.company.c.a(m:61)
at com.company.b.b(w:94)
at com.company.b.a(w:83)
at com.company.a.a(n:75)

String Encryption:字符串加密

无论应用程序多么简单,通常都含有字符串数据。它可能是文本的快捷键、GUI组件(如按钮)、错误/异常信息或文本信息。对黑客来说,这些信息比任何代码还有用。通过搜索代码中的字符串,就可以显示使用过此字符串的准确位置,帮助黑客更容易的理解程序算法。所以,字符串数据加密很重要。

Allator会对所有的字符串数据分析并进行编码,使其处于类常量池中。Allatori还增加了一小段代码,用于在程序运行时对字符串进行解码。因此,黑客反编译出来的将会是随机组成的符号集,而不是字符串数据。

100% Protection Against Popular Decompilers:100%防止被反编译

俗话说,知己知彼,百战不殆。因此,Allatori团队花费大量时间研究和分析现代反编译器的原理。我们不仅仅研究它们是如何工作的,更试图寻找它们的弱点,阻止反编译过程。Allatori有一个特殊的代码转换模块,任何试图反编译的行为都将产生致命的错误。因此,你的代码是绝对安全的,因为不可能找到可用的反编译器。

Optimizing:优化

Allatori除了混淆代码以外,他还不务正业的针对程序的性能、体积和稳定性进行优化。Allatori还打包票说,对于绝大部分应用而言,使用Allatori的优化算法,肯定能够提升性能,并且缩小体积。

Watermarking:水印

Allatori还支持水印,通过给程序添加水印,可以跟踪出使用者,通过水印来打击盗版也是美滋滋。

Incremental Obfuscation:增量混淆

当您需要为应用程序创建补丁或插件时,使用增量混淆。在这种情况下,可以保证类的新名称、方法和字段都与先前混淆处理的版本一致,使得两个完全兼容。因此,补丁或插件可以无缝集成到以前部署的应用程序中。

Stack Trace Utility:堆栈跟踪工具

上面有提到说,调试信息也能被混淆,那么作为开发人员,怎么处理用户反馈过来的错误日志呢?Allatori的堆栈跟踪工具可以将进过混淆的日志恢复如初。。。

Build Tool Interface:Build Tool接口

Allatori可以支持各种自动构建工具,其中Ant和Maven已经集成好了。

J2ME Obfuscation:J2ME项目混淆

J2ME现在用的人也少了。知道就行。不是考点。

Android Obfuscation:Android项目混淆

Allatori是一个全功能的Android混淆器,可以很容易的集成到构建中去。由此产生的apk体积更小,更难被逆向。

混淆效果(左图为混淆之后)

整体结构:

Verify.class

我们再看看MacUtil.class,没有混淆之前,经过反编译之后的代码,下面右图所示。

可以看出来,反编译之后的代码,基本上和写的一模一样。再看左面混淆之后的代码,呃,return D(); 我们去看看D.class里是啥。

呃,这是啥。字节码么?注释么?从上到下全是这种绿油油的字节码?反正小编是看不懂写的啥了。

Allatori官网上最便宜也要290美元,如果自己想用的话只能看看万能的马云家有没有了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表