gpt4 book ai didi

java - Netbeans 混淆

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:43:54 25 4
gpt4 key购买 nike

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

感谢任何输入。

最佳答案

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

非常简单:混淆过程会更改类、方法和字段的名称,使对您的应用程序进行逆向工程变得更加困难。

这会导致一些问题:

  • JVM 要求您的应用程序在公共(public)类中有一个 public static void main( String args[] ),因此您必须告诉混淆器不要更改此名称
  • 如果您使用任何类型的内省(introspection),您必须保护相关名称不被更改
  • other cases ,如手册中所述

此外,proguard 会去除未使用的代码。如果您有任何使用但未直接引用的类,您也必须 -keep 它们。

proguard 文档包含一个 example如何混淆一个简单的应用程序。这是解释的示例(带有一些不太容易混淆的名称):

-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[]);
}

除非您指定-dontshrink,proguard 将删除任何未保留或未从任何保留代码中引用的代码。所以在上面的配置中,任何没有被 main 方法(间接)引用的代码都将被删除。

Proguard 包含一个 Ant 任务,可用于与 NetBeans 工作流集成。不过,我建议先进行手动试验,不要使用 Ant,因为这样可以消除过程中的一个复杂因素。使用 NetBeans 构建您的应用程序 jar,然后尝试使用上述配置进行混淆(必要时充实)。确保测试混淆后的应用程序,因为无数事情都可能出错。一旦您有了一个有效的混淆器配置,尝试将一个 Ant 任务添加到您的构建文件中,以在 NetBeans 中自动执行混淆过程。

关于java - Netbeans 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/977144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com