0

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

4

2 回答 2

1

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

http://confuser.codeplex.com/

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

于 2013-08-20T23:22:34.153 回答
1

如今,大多数混淆器基本上可以为您重写您的程序集。大部分功能包括:

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

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

IL 混淆 - 重写 IL 的控制流,使代码变得意大利面条式且难以遵循

还有其他工具可以超越这一点,但它们都只是提高了扭转某些事情所需的标准。

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

于 2013-08-21T01:07:13.627 回答