我有一个.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上的 public 类型进行模糊处理它不起作用,.exe就找不到这些类。它具有将DLL合并/打包成.exe的能力,但当你使用混合DLL执行它时它不起作用(exe无法找到DLL的程序集,即使它是.exe的一部分)
Skater的单一许可证价格为300美元。我没有在他们的网站上看到任何声称它支持混合组件的东西,我厌倦了尝试应用只是为了失望所以我会认为它没有。
我也尝试过Microsoft的ILMerge,看看我是否可以将DLL与.exe合并然后进行混淆,但看起来它也会混淆混合DLL。
有关替代Dotfuscator的任何建议或购买合法副本的好地方吗?我发现有几个声称卖得便宜的无名网站,但我认为这些是俄罗斯盗版版本。
答案 0 :(得分:0)
我为同样的问题尝试了几种解决方案。对于这个问题,没有一个很好的解决方案。 LibZ是ILMerge的一个不错的替代品。只需将程序集打包到程序的资源中,然后从内存中加载消耗的程序集,就可以变得可爱。如果你对可执行文件进行obfusticate,至少会增加另一个间接层。
答案 1 :(得分:-1)
我使用{smartassembly}将SlimDX和DirectShow.Net与我的.net程序一起合并。两者都使用C ++ / CLI。他们在我身边合并得很好。你在哪里得到它不支持混合组件的迹象?
编辑:我不是百分百肯定,因为我以前从未使用过C ++ \ CLI,但之前我曾编写过纯C ++应用程序。这是我收集的内容,在SlimDX的AssemblyInfo.cpp文件中,有一行配置程序集如:[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
所以,我认为它包含非托管代码。或者也许你可以告诉我我应该寻找什么指示来表明它包含非托管代码。
顺便说一下,我正在使用{smartassembly}
的3.0.3063版