2016-05-16 28 views
0

我有一个.net项目,它有很多模块,也有一些.jar文件。我还为安装创建了一个.msi设置。
这个应用程序实际上是我们公司的IP(内部产品),它有时会在客户端环境中安装一段时间。
我们希望确保产品代码的安全,以便没有人知道它是如何工作的,因为我们拥有第三方许可(safenet),但问题是他们没有提供对.jar中存在的所有方法的加密(有大约1000种方法)。

只是我想知道有没有什么办法来保护我们的应用程序代码免去编译?还是有什么办法来混淆代码,以便反编译不起作用?
编辑:或者是否有任何工具(授权工具)提供这种设施?

在此先感谢。安装文件的加密/混淆(.dll,.jar)

回答

1

对不起,但是隐藏程序的工作方式是不可能的。如果机器可以运行它,它可以被反编译。例如在Java中混淆​​的最常用的方法是:

  • 名称混淆
  • 流混淆
  • 不透明谓词

在这些事情字节码级别没有如果能阻止一个人,他们致力于弄清楚你的产品是如何工作的。命名在字节码级无关紧要,可以使用自动化工具对流混淆进行修补,同样适用于不透明谓词。大部分情况同样适用于.Net框架。

但是,这些功能确实会阻止您的平均脚本小子。所以虽然他们不完美,但他们是值得的。如果你想要一个免费的混淆替代方案,你可以查看Proguard,尽管它只提供名称混淆。具有流动和不透明特征的混淆器通常是昂贵的。

2

我为复制保护公司工作。我会尽我所能,不要因为我的工作而受到偏见。

是的,保护是可能的,如果你愿意,你可以使黑客非常困难。将不可能打破你的保护?不,所有的代码都可以被破坏!但是,越好的保护,越难破解,越少的黑客将他们的手放在你的产品上。

有几种方法可以停止调试器。最简单的是测试代码是否以正常的速度处理,如果不是的话,那是因为有人正在调试你的代码,并用步骤执行代码。然后你的代码应该优雅地终止程序来停止你的软件的反编译。

我的一个同事写了这篇文章复制保护的基本知识:All About Copy Protection 查找“调试补漏”,如果你不想把它读完了:)