如果我使用.NET Obfuscator,是否会更改元数据?

时间:2013-08-20 21:36:49

标签: c# .net metadata obfuscation

我基本上了解 c#.net 中的元数据,最近我听说过.net Obfuscating。 我想知道我是否使用任何混淆器来使我的程序集被理解它会混淆IL,但它是否也会改变元数据?然后我可以将它添加为我的项目的参考,并查看类及其成员的真实姓名吗?

2 个答案:

答案 0 :(得分:1)

尝试使用Confuser,因为这个仍然没有Deobfuscator。

http://confuser.codeplex.com/

您不会看到类和方法的正常名称,因为它会散列它们以及更多。之后基本上不可能从代码中获取任何东西。

答案 1 :(得分:1)

现在大多数混淆器基本上可以为你重写你的程序集。大多数功能包括:

重命名(工具供应商通常会提供创建地图的选项,以便您可以使用像Reflector这样的工具手动将重命名的成员映射到原始成员名称)

字符串加密 - 这会加密代码中的字符串常量(存储在数据库的字符串堆区域中),因此如果您在Reflector中打开该文件,它通常会显示为加密的。加密值在使用之前仍然会被解密。

IL混淆 - 控制IL的流程重写以制作意大利面条代码并且难以遵循

除此之外还有其他工具,但它们都只是提高了扭转某些东西的标准。

如果您设置了对模糊的dll / exe的引用,您将看到模糊/重命名的成员,但如果供应商提供了一个地图(大多数意愿),您可以找出哪个是哪个。如果需要可读的api,通常也可以使用未混淆的接口。一个例子是Reflector - addin apis是所有未被混淆的接口,但具体类的所有实现都被混淆了。