0

我计划使用 Smart Assembly 7+ 来混淆我的 .NET C# 库。但是当我浏览一些论坛时,我发现甚至有一些程序可以对受 Smart Assembly 保护的 DLL 进行反混淆,尤其是像de4dot这样的程序。

因此,我尝试使用 de4dot 对我的程序进行反混淆,令我惊讶的是,我的大部分逻辑都成功反编译了。但幸运的是,这些字符串没有被反编译。

他们的形式是Class24.getString_0(5050)

如果字符串不能被任何反混淆器正确反编译,那么保护我的核心逻辑就足够了。但我很偏执,也许我没有正确使用反混淆器,甚至有一些方法可以反混淆字符串(但我尝试为字符串运行反混淆器命令,如 repo wiki 中所述)。

基本上我的问题是,我能否确定被 SmartAssembly 混淆的字符串不能被市场上的任何反混淆器程序反编译。

此外,也欢迎任何关于混淆 .NET 库的好建议。

谢谢你们!

4

1 回答 1

2

为了让你的代码运行,计算机必须理解它。没有办法解决这个问题。如果 CLR 可以理解您的代码,那么去混淆器也没有理由无法理解您的代码。

另外,计算机比人类愚蠢得多。如果计算机可以理解您的代码,那么人类肯定可以。

保护代码的典型方法是:

  • 不要给客户你的代码。在您自己的计算机上运行它并让他们访问它。(这就是“谷歌方法”。)

  • 为客户提供一台您可以 100% 控制并预装了代码的计算机。(这就是“PlayStation 方法”。)

  • 不要与犯罪分子做生意。复制您的代码几乎在任何地方都是非法的。在一些国家,包括一些最大的市场(例如美国),规避代码中的保护是非法的。对您的代码进行逆向工程可能是合法的,但仅限于非常严格的情况下。(例如,在欧盟,逆向工程仅出于互操作性目的是合法的,并且仅当您拒绝以合理和非歧视性条款提供互操作性所需的信息时。)

  • 为您的客户提供您的竞争对手(即使他们正在窃取您的代码)不提供或无法提供的额外服务。对于许多公司来说,“有人可以起诉”这一事实已经足以从原始供应商那里购买原始软件。罪犯是懒惰的,这就是他们是罪犯的原因。他们永远不会像你那样深入地理解问题领域,仅仅是因为他们懒得投入工作,所以他们永远也无法提供增强、咨询、支持或错误修复,而且速度和速度一样快。尽可能精确。

于 2020-08-29T12:23:00.290 回答