Java Netbeans混淆
我对模糊处理非常陌生,对ant没有太多经验。来吧,有人给我提供一种用ProGuard(或任何其他开源混淆器)混淆常规Java应用程序的方法。目前我使用的是NetBeans 6.5.1,只有在创建JAVA ME而不是像我这样的JAVA应用程序时才能看到模糊处理功能。我看过了,但不明白他们在说什么Java Netbeans混淆,java,netbeans,obfuscation,Java,Netbeans,Obfuscation,我对模糊处理非常陌生,对ant没有太多经验。来吧,有人给我提供一种用ProGuard(或任何其他开源混淆器)混淆常规Java应用程序的方法。目前我使用的是NetBeans 6.5.1,只有在创建JAVA ME而不是像我这样的JAVA应用程序时才能看到模糊处理功能。我看过了,但不明白他们在说什么 感谢您的任何意见。您所指的常见问题是用于混淆NetBeans模块的。这是一个相当复杂的用例,所以我假设它不是您感兴趣的常规应用程序 非常简单:模糊处理过程会更改类、方法和字段的名称,从而使应用程序的逆向工
感谢您的任何意见。您所指的常见问题是用于混淆NetBeans模块的。这是一个相当复杂的用例,所以我假设它不是您感兴趣的常规应用程序 非常简单:模糊处理过程会更改类、方法和字段的名称,从而使应用程序的逆向工程变得更加困难 这导致了一些问题:
- JVM要求应用程序在公共类中具有公共静态void main(字符串args[]),因此必须告诉proguard不要更改此名称
- 如果你使用任何形式的自省,你必须保护相关的名字不被更改
- ,如手册中所述
-injars application.jar#混淆命名jar中的所有类
-outjars obfuscated.jar#将所有模糊化的类保存到命名的jar中
-libraryjars/lib/rt.jar#这些是应用程序使用的所有库
-printmapping obfuscation.map#保存一个文件,将原始名称链接到模糊的名称
#这有助于理解来自模糊化应用程序的堆栈跟踪
#我们需要保留我们的主类和应用程序入口点
-保留公共类com.mycompany.Application{
公共静态void main(java.lang.String[]);
}
除非您指定-dontshrink
,否则proguard将删除任何未保留的代码或未从任何保留的代码中引用的代码。因此,在上述配置中,任何未被main方法(间接)引用的代码都将被删除
Proguard包含一个Ant任务,可用于与NetBeans工作流集成。不过,我建议先在没有Ant的情况下手动进行实验,因为这会消除过程中的一个复杂因素。使用NetBeans构建应用程序jar,然后尝试使用上述配置混淆(如有必要,请充实)。确保测试模糊的应用程序,因为有无数事情可能出错。一旦您有了一个工作的proguard配置,请尝试向构建文件中添加一个Ant任务,以自动化NetBeans中的模糊处理过程。除了-dontskipnonpubliclibraryclasses之外的另一个解决方案是使用与编译JAR文件中的代码相同的JDK来运行proguard 例如,代替 java-jar../proguard3.8/lib/proguard.jar 使用 /usr/local/jdk1.5.0/bin/java-jar../proguard3.8/lib/proguard.jar
雅各布那一页的哪一部分你不明白?你了解Ant吗?谢谢你的帮助,但我得到了以下警告:javax.swing.JDialog:找不到超类或接口javax.swing.TransferHandler$HasGetTransferHandler警告:javax.swing.JWindow:找不到超类或接口javax.swing.TransferHandler$HasGetTransferHandler警告:javax.swing.JComponent:找不到超类或接口javax.swing.TransferHandler$HasGetTransferHandler警告:javax.swing.JFrame:找不到超类或接口javax.swing.TransferHandler$HasGetTransferHandler我包括了rt.jar,其中包含TransferHandler$HasGetTransferHandler.class。有什么想法吗?手册上有:
-dontskipnonpubliclibraryclasses
:
-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[]);
}