正如在此处和此处的类似问题中所讨论的,我想保护我的代码免受逆向工程的影响。
我的情况就像Simucal在他的(优秀)回答中所描述的那样:
基本上,归根结底,您成为源盗窃目标的唯一机会是,如果您有一些与您的域相关的非常具体、难以设计的算法,可以让您在竞争中占得先机。这几乎是唯一一次尝试对应用程序的一小部分进行逆向工程具有成本效益。
我正好有这种情况。一种难以设计的算法,它对我们的特定领域来说既优雅又有价值。
经过几个月的微调和开发,最终结果非常紧凑(大约 100 行代码)且优雅。我想保护代码的这个特定部分免受逆向工程的影响,或者至少让它变得合理困难。
该场景是一个用 C# 编写的富客户端应用程序,我必须部署这部分代码 - 我无法从 Web 服务执行它。
我认为由于性能原因(和跨界问题),提取代码并将其重写为非托管本机二进制文件不是一种选择。
最初我想做简单的混淆,但考虑到代码的体积很小,我认为这不会提供太多保护。
理想情况下,我想保护我的整个应用程序,但有两个主要问题似乎使普通混淆器和 3rd 方打包器难以使用:
应用程序提供了一个插件接口,因此一些程序集(和接口/类)不应该被混淆和打包
我们仍然希望在收到错误报告时能够获得真正的堆栈跟踪——这可能是通过我将混淆映射到真实代码来完成的。
撇开这些问题不谈(尽管我也希望对此有任何意见),什么是保护我的一小部分代码免受逆向工程的好方法?我不关心任何人更改或破解代码,但希望使其难以理解和逆向工程。