Netbeans混淆

Jon*_*Jon 3 java obfuscation netbeans

我对混淆很新,并且对蚂蚁没有很多经验.有人为我提供了一种使用ProGuard(或任何其他开源混淆器)来混淆常规Java应用程序的方法.目前我正在使用NetBeans 6.5.1,只有在创建JAVA ME时才能看到混淆能力,而不是像我一样创建Java应用程序.我看过http://wiki.netbeans.org/DevFaqModuleObfuscation,但不明白他们在说什么.

感谢您的任何意见.

jac*_*bit 9

您指向的常见问题解答是混淆NetBeans模块.这是一个非常复杂的用例,因此我假设它不是您感兴趣的常规应用程序.

非常简单:模糊处理过程会更改类,方法和字段的名称,从而使应用程序的逆向工程变得更加困难.

这会导致一些问题:

  • JVM要求你的应用程序在公共类中有一个public static void main(String args []),所以你必须告诉proguard不要更改这个名字
  • 如果您正在使用任何类型的内省,则必须保护相关名称不被更改
  • 其他情况,如手册中所述

此外,proguard剥离未使用的代码.如果您有任何已使用但未直接引用的类,您也必须使用-keep它们.

proguard文档包含一个如何模糊简单应用程序的示例.以下是解释的示例(名称较少混淆):

-injars       application.jar        # obfuscate all the classes in the named jars
-outjars      obfuscated.jar         # save all the obfuscated classes to the named jar
-libraryjars  <java.home>/lib/rt.jar # these are all the libraries that the application uses
-printmapping obfuscation.map        # save a file linking the original names to the obfuscated ones
                                     # this helps understanding stack traces from the obfuscated application

# we need to keep our main class and the application entry point
-keep public class com.mycompany.Application {
    public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)

除非您指定-dontshrink,否则proguard将删除未保留或未从任何保留代码引用的任何代码.因此,在上面的配置中,将删除主方法未引用(间接)的任何代码.

Proguard包含一个Ant任务,可用于与NetBeans工作流集成.我建议先手动进行实验,但不要使用Ant,因为这会使一个复杂的因素退出过程.使用NetBeans构建应用程序jar,然后尝试使用上述配置进行模糊处理(如果需要,可以填充).确保测试混淆的应用程序,因为无数的东西可能会出错.在进行了有效的proguard配置后,尝试将Ant任务添加到构建文件中,以自动化NetBeans中的混淆过程.