问题描述
我计划使用Smart Assembly 7+来模糊我的.NET C#库。 但是,当我在一些论坛上浏览时,发现甚至有一些程序可以对受Smart Assembly保护的DLL进行模糊处理,尤其是像 de4dot 这样的程序。
因此,我尝试使用de4dot对程序进行模糊处理,而我的大部分逻辑都成功地反编译了,这令我感到惊讶。但值得庆幸的是,这些字符串并未反编译。
它们采用Class24.getString_0(5050)
如果字符串不能被任何反混淆器正确反编译,则足以保护我的核心逻辑。但是我很疑惑,也许我没有正确使用反混淆器,甚至还有一些方法可以对字符串反混淆(但我尝试对字符串运行反混淆器命令,如repo Wiki中所述)。
基本上我的问题是,我可以确定市场上的任何反混淆器程序都无法反编译被SmartAssembly混淆的字符串。
此外,也欢迎对混淆.NET库的任何好的建议。
谢谢大家!
解决方法
为了使您的代码运行,计算机必须理解它。没有办法解决。如果CLR可以理解您的代码,则消除混淆器也没有理由也无法理解您的代码。
此外,计算机比人类愚蠢得多。如果计算机能够理解您的代码,那么人类肯定会。
保护代码的典型方法是:
-
不要给客户您的代码。在您自己的计算机上运行它,并授予他们访问权限。 (这就是“ Google方法”。)
-
为客户提供一台您可以100%控制并预安装代码的计算机。 (这就是“ PlayStation方法”。)
-
不与罪犯做生意。复制代码几乎到处都是非法的。在一些国家/地区,包括某些最大的市场(例如美国),规避代码中的保护是非法的。对代码进行反向工程 可能是合法的,但仅在非常严格的情况下。 (例如,在欧盟,仅出于互操作性的目的,并且仅当您拒绝以合理且无歧视的条件提供互操作性所需的信息时,逆向工程才是合法的。)
-
为您的客户提供竞争对手提供的额外服务,即使他们正在窃取您的代码,也不会或无法提供。对于许多公司而言,“拥有可以起诉的人”这一事实已经足以从原始供应商那里购买原始软件了。罪犯是懒惰的,这就是为什么他们是罪犯。他们将永远无法像您一样深入地了解问题领域,这仅仅是因为他们懒得投入工作,因此他们将永远无法以最快的速度提供增强,咨询,支持或错误修复。尽可能精确。