代码混淆的作用,代码混淆技术原理
有时候,我们想分析一个程序的java层逻辑。反编译后,我们发现所有的函数名、变量名、类名等。的代码已经成为一些混乱的名字,没有任何规则。这是怎么回事?实际上,程序是混乱的。
什么是困惑?
混乱是通过一些工具批量重命名函数名、变量名、类名、字段。
混淆的例子和作用
示例
我们来看一个不混淆的例子这是我们自己写的程序,反编译的
逻辑很清楚。反编译后的源代码和我们写的代码一模一样。我们写的应用就是一只被宰的羊,谁都可以咬。
代码保护的第一步是混淆,即对代码进行篡改,使反编译后的代码不那么容易理解。
打开andoridkiller工具,以X右为例。
打开一个小文件夹3360
发现都变成了这种这种混淆只是初级的,有的可能会混淆成外语。
正常发育没有这个名字。
点进去看一个就行了。虽然有影响,但影响不大。
需要一个工具jdax-GUI;
看看这个工具可以将我们的代码恢复到什么程序中
我们可以使用一些工具来达到简单混淆的目的。点击这个
图标,它会混淆我们的代码。
重新打开,我们的代码会在这里重新编译重命名,方便我们区分。
迷茫无非是增加我们的逆向时间。放入jdax-gui是为了更好看,但整体逻辑不会混乱。
换句话说,代码混淆并不能一劳永逸地解决代码保护的问题。只是阅读代码比开发代码需要更长的时间。,有些核心代码最好不要放在Java里,有很大毅力的人也愿意花这个时间。
ProGuard和混淆特征介绍
(1)ProGuard会检测并移除包中未使用的类、字段、方法和属性,包括自己代码库中未使用的项。
(2)ProGuard还可以优化字节码,去掉不用的代码指令,用简称混淆其他类、字段和方法。