Java代码混淆(java代码混淆技术 收费平台)

网友投稿 517 2022-10-07


Java代码混淆(java代码混淆技术 收费平台)

在分析一个程序的Java层逻辑,进行反编译时,偶尔会发现代码中所有的函数名、变量名、类名等都变成了一些杂乱无章的名字,它们没有任何规律可言,这就是程序的混淆。

Java代码混淆就是为了保护Java源代码,对编译好的class文件进行混淆处理。混淆就是对发布出去的程序进行重新组织和处理,通过一些工具,对函数名、变量名、类名、字段进行批量重命名。使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。

一: 混淆的例子及作用

在学习混淆之前,先来看一下没有被混淆的例子,下面是程序的反编译,如下图所示。

从图中可以发现,这里的反编译逻辑非常清楚,反编译之后的源码和当时写的代码完全相同。

保护Java源代码的第一步就是混淆,对代码进行修改,让反编译出来的代码不容易被看懂,具体的操作流程如下所示。

1.打开androidkiller工具,如下图所示。

2.打开其中一个smali文件夹,如下图所示。

打开后,发现里面内容已被修改,正常开发中不会存在这种命名,如下图所示。

3.任意打开其中一个文件,会发现代码也发生了相应的变化,如下图所示。

注意:混淆只是增加逆向的时间,但整体的逻辑不会混淆。也就是说,代码混淆并不能一劳永逸地解决代码保护的问题,它只是把读代码的时间变得比开发代码的时间还要长。

二:ProGuard介绍以及混淆特点

ProGuard就是一个混淆代码的开源项目,能够对字节码进行混淆、缩减体积、优化等处理。ProGuard还包括以下4个功能:

压缩(Shrink):检测并移除代码中无用的类、字段、方法和特性(Attribute)。 优化(Optimize):对字节码进行优化,移除无用的指令。 混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段和方法进行重命名。 预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的。

总而言之,Proguard是一个Java类文件压缩器、优化器、混淆器、预校验器。压缩环节会检测以及移除没有用到的类、字段、方法以及属性。优化环节会分析以及优化方法的字节码。混淆环节会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向(破解)。

ProGuard工作原理ProGuard由shrink、optimize、obfuscate和preveirfy四个步骤组成,每个步骤都是可选的,我们可以通过配置脚本来决定执行其中的哪几个步骤。

小结

知道了混淆的概念是指通过一些工具,对函数名、变量名、类名,字段进行重命名。同时,对混淆和非混淆例子之间的区别以及混淆的特点也有了一定的了解。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自适应安全:知己重于知彼
下一篇:Java服务器宕机的解决方法论
相关文章

 发表评论

暂时没有评论,来抢沙发吧~