对引用第三方程序集的程序集进行模糊处理

时间:2011-02-23 03:18:44

标签: c# .net obfuscation

我准备为客户结束一个大项目。要求是,最终装配必须是单个装配。通常我会将所有程序集混淆在一起,它会生成一个文件。但是这次我引用了第三方程序集,如PostSharp,Enterprise Libraries和一些特定的供应商API。

当我对项目进行模糊处理时,我最终得到了一个程序集,但它不再有效。

该项目是ACT的插件!这需要一个类来实现特定的接口。如果我构建并将所有输出文件复制到插件文件夹,它按预期工作和ACT!会看到插件,它会工作。使用单个混淆程序集,它不再有效。法案!不会看到插件。

我只能想象它是由这些第三方引用引起的,因为我在之前的项目中已经这样做了,只是从不使用任何第三方程序集或API。

我正在使用Xenocode进行混淆,但我会尝试任何事情。

2 个答案:

答案 0 :(得分:1)

第一个问题并不是因为你使用的是第三方程序集,而是大多数人都喜欢ACT!期望和它的实现被混淆。获取Reflector甚至ILDasm并查看您感兴趣的类是否实现了ACT所需的接口!

我没有使用过Xenocode,但我希望它能指明哪些类/方法不应该被混淆。您的目标是保持接口及其实现不被混淆。

注意:我还建议您查看您使用的第三方组件的许可要求,因为它们可能不允许这样的合并。

答案 1 :(得分:1)

您不应该出于以下原因混淆第三方程序集:

  1. 您无法控制或了解代码的内部工作原理,以了解它将如何模糊影响其工作。即使您这样做(例如,如果它是开源的),您是否希望花时间处理这些程序集被混淆时可能出现的任何问题?
  2. 它不是你的IP,因此混淆第三方程序集没有任何好处,但是你得到了#1中描述的所有缺点。

  3. 尝试Crypto Obfuscator - 它支持包括第三方程序集而不会将它们列为“附加依赖项” - 它们最终只有一个程序集,因为依赖项嵌入在主程序集中并在程序集解析期间提供

    免责声明:我为Crypto Obfuscator的开发者LogicNP Software工作。