100分请教java代码混淆
java代码混淆中,可以保留包名,类名,类属性,函数方法参数,只混淆函数方法里面的逻辑么
是算法么?没用过
[解决办法]
Q: 如何安装和运行JOC?
A: 下载joc.jar (http://www.apusic.com/product/cpsy.htm),运行java -jar joc.jar就可以启动Java混淆编译器,joc的命令行参数和javac完全相同,但增加了一个新的参数-Xobfuscate,它的用法如下:
-Xobfuscate:<level>
其中<level>指定混淆级别,可以是以下几种级别:
-Xobfuscate:none 不进行混淆
-Xobfuscate:private 对所有private访问级别的元素进行混淆
-Xobfuscate:package 对所有private或package private元素进行混淆
-Xobfuscate:protected 对所有private, package private, protected元素进行混淆
-Xobfuscate:public 对所有的元素都进行混淆
-Xobfuscate:all 相当于-Xobfuscate:public
如果使用-Xobfuscate不带级别参数,则相当于-Xobfuscate:package
Q: 如何使用符号保留指令?
A: 除了在命令行用-Xobfuscate参数控制符号混淆级别外,还可以在源代码中使用符号保留指令来控制那些符号需要保留,符号保留指令是一个Java文档注释指令,可以插入在类和类成员的文档注释中,例如:
/**
* This class should preserve.
* @preserve
*/
public class Foo {
/**
* You can specify which field should be preserved.
* @preserve
*/
private int x;
/**
* This field is not preserved.
*/
private int y;
/**
* You can also preserve methods.
* @preserve
*/
public void hello() {}
/**
* This method is not preserved.
*/
private void collect() {}
}
如果没有@preserve指令,则根据混淆级别及成员的访问级别来确定符号是否保留。
对于类的符号保留指令可以附带一个保留级别参数,来控制类成员的符号保留,包括:
@preserve 仅对类名进行保留,类成员的保留根据-Xobfuscate命令行参数决定
@preserve public 保留所有public成员
@preserve protected 保留所有public和protected成员
@preserve package 保留所有public, protected, package private成员
@preserve private 保留所有成员
@preserve all 相当于@preserve private
[解决办法]
不明觉厉
[解决办法]
就是控制流混淆咯;
给LZ提供几个软件的地址:
几款商业的:
Allatori,这个真心不错,我们公司就用的它;
Stringer;
ZKM;
DashO;
另外也有开源的,但是我看了几个都只提供命名混淆,估计不是LZ相要的吧
[解决办法]