对已安装文件的加密/混淆(.dll,.jar)

时间:2016-05-16 05:24:14

标签: .net encryption installation obfuscation copy-protection

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

我想知道有没有办法保护我们的应用程序代码免于反编译?或者有没有办法混淆代码,以便反编译不起作用? 编辑:或者是否有提供此功能的工具(许可工具)?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我在复制保护公司工作。我将尽我所能,不要被我的工作所偏见。

是的,保护是可能的,如果你愿意,你可以让黑客很难。打破你的保护是不可能的?不,所有代码都可以破解!但是,更好的保护,更难以破解,黑客将更少地掌握您的产品。

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

我的一位同事写了这篇关于版权保护基础知识的文章:All About Copy Protection 如果您不想全部阅读,请查找“Debug Trapping”:)

答案 1 :(得分:1)

很抱歉,但无法隐藏程序的工作方式。如果机器可以运行它,它可以被反编译。例如,在java中,最常见的混淆方法是:

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

在字节码级别,如果他们致力于弄清楚您的产品是如何工作的,那么这些东西都无法阻止他人。命名与字节码级别无关,流式混淆可以使用自动化工具进行修补,同样适用于不透明谓词。这大部分同样适用于.Net框架。

然而,这些功能确实可以避开普通的脚本小子。因此,尽管它们并不完美,但它们是值得的。如果你想要一个免费的混淆替代品,你可以看看Proguard,虽然它只提供名称混淆。具有流动和不透明特征的混淆器通常是昂贵的。