【问题标题】:Best method to obfuscate or secure .Net assemblies [closed]混淆或保护.Net程序集的最佳方法[关闭]
【发布时间】:2008-09-12 20:38:36
【问题描述】:

我正在寻找一种技术或工具,我们可以使用它来混淆或以某种方式保护我们编译的 C# 代码。目标不是为了用户/数据安全,而是为了阻止我们软件中某些技术的逆向工程。

这不是用于网络,而是用于桌面应用程序。

那么,你知道有什么工具可以做这种事情吗? (它们不必是免费的)

如果有的话,它们会对性能产生什么样的影响?

在开发过程中使用调试器时是否有任何负面影响?

我们记录现场问题的堆栈跟踪。混淆将如何影响这一点?

【问题讨论】:

标签: c# .net .net-2.0


【解决方案1】:

这是来自Visual Studio Marketplace 的混淆器列表 混淆器

在混淆我的代码时,我没有发现任何性能问题。如果您只是发送基于文本的堆栈跟踪,则翻译方法名称可能会遇到问题。

【讨论】:

  • 有链接就好了。如果有机会,你能加他们吗?
  • @newbieguy 我曾尝试使用 ConfuserEx,因为它是免费且开源的,但在对我的 exe 文件进行混淆后,virustotal 将其检测为病毒(当我扫描我的 exe 时没有混淆它很清楚)。不可接受。
  • 我不同意你的观点,事实上几乎所有的杀毒软件都会检测到它。这是因为(afaik)很多人使用 ConfuserEx 来混淆他们的病毒(请原谅我的英语)。
  • 这不是混淆器的问题。我它是一个糟糕的防病毒软件,它会发出错误的警报。如果您的软件受到强保护(这也适用于受保护的 C++ 软件),您几乎总是会收到防病毒软件的误报。另一方面,防病毒软件并没有检测到许多真正的威胁。所以我根本不使用杀毒软件。几十年来我没有感染过。杀毒软件使您的计算机速度非常慢,真正威胁的检测率不超过 80%。另一方面,这些误报很糟糕。
【解决方案2】:

有些工具还可以“反混淆”混淆的 DLL - 我建议将需要保护的部分转换为非托管组件。

【讨论】:

  • 此时我们将转向反汇编程序,就像他们破解电脑游戏的复制保护一样。
  • @Jonathan Allen:它被称为反汇编程序,而不是反汇编程序。顺便说一句,你不需要拆卸。 HexRays 有一个很好的 C/C++ DECOMPILER(参见 IDA Pro Advanced)。
【解决方案3】:

http://xheo.com/products/code-protection

过去为我完成了这项工作。

【讨论】:

    【解决方案4】:

    沿着这条路走下去是在浪费时间。如果你有不想让任何人看到的代码,你需要把它关在门后。例如,仅使用 Web 服务接口在您自己的服务器上执行该代码。

    混淆您的代码只会阻止最随意的人。由于电子游戏行业很久以前就开始倾斜,没有任何代码是安全的。

    【讨论】:

    • 毫无疑问,任何保护选项都无法阻止最坚决的攻击。这并不意味着“浪费你的时间”。这相当于建议您离开汽车时不要锁车,因为熟练的小偷可能会闯入。它仍然是值得保护的资产,不尝试保护它是疏忽大意。在保护和激怒客户之间取得平衡,并在保护 99% 的脚本小子和攻击者方面进行少量投资。
    • 未经授权使用“破解”副本的安全性与逆向工程提取竞争产品代码的安全性不同。如果竞争需要改进和进化,那么对于已经复杂的预混淆程序来说,混淆可能就足够了。
    • 破解视频游戏对破解者来说非常有趣,因此世界上最好的破解者都参与其中。但是很少有人能够对汇编代码进行逆向工程。这是由非常有经验的饼干完成的。您是否知道即使是防病毒公司的专家也需要几个月的时间来分析 Stuxnet?您不应该认为这些专家会有时间和动力来破解您的代码。普通的应用程序不如视频游戏有趣。理论上一切都可以破解。但是要付出多少努力,谁愿意花这么多时间来破解您的应用程序?
    • 你没有抓住重点,混淆是为了阻止某人窃取你的代码而不是阻止黑客——如果他们真的窃取了它,他们得到的只是无法维护的垃圾,这对他们来说更容易编写他们的代码自己的代码而不是去混淆它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多