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