我有一个.NET DLL和应用程序.DLL是用C++/CLI编写的,它是"混合的",即部分托管代码和部分原生代码.
我有两个目标:
1.混淆所有托管代码,使其无法被反汇编
2.混淆混合DLL的公共方法/类,以便没有人可以在自己的应用程序中使用DLL,即加扰公共名称.
是的,我理解混淆不完美,人们仍然可以弄清楚,等等等等.这两个目标是管理要求.我发现可以处理的唯一应用程序似乎是Dotfuscator专业版.不幸的是,这是令人难以置信的烦人的应用程序之一,你必须请求推销员告诉你价格.有没有人知道另一种解决方案,或者知道购买便宜的合法副本的好地方?
不要告诉我在托管代码中重写DLL,这需要一个月的工作,我永远不会得到批准.:-)
请注意,我对混淆的好坏并不特别偏执.任何扰乱应用程序中所有方法和类的名称的东西都可能足够好.
以下是我尝试的其他混淆器:
Dotfuscator Community Edition随Visual Studio 2008一起提供,但不支持混合程序集.
Eazfuscator .NET简单而且免费,但不支持混合程序集.
单个许可证的{smartassembly}是500美元.它有一些有趣的功能,但它不支持混合程序集.
蝾螈是800美元.声称完全支持混合程序集,但每当我尝试使用混淆的dll时,应用程序崩溃了
单个开发人员许可证的.NET Reactor为180美元.它支持混合DLL的"部分"混淆.不幸的是,如果你混淆DLL上的公共类型它不起作用,.exe无法找到类.它有能力将DLL合并/打包成.exe,但是当你使用混合DLL执行它时它不起作用(exe无法找到DLL的程序集,即使它是.exe的一部分)
单个许可证的Skater是300美元.我没有在他们的网站上看到任何声称它支持混合组件的东西,我厌倦了尝试应用只是为了失望所以我会假设它没有.
我也尝试过Microsoft的ILMerge,看看我是否可以将DLL与.exe合并然后进行混淆,但看起来它也混淆了DLL.
有关替代Dotfuscator的建议或购买合法副本的好地方吗?我找到了几个声称卖得便宜的无名网站,但我认为这些是俄罗斯盗版.