2

我已经通过 dotPeek 1.4 反编译了 DLL,看看里面发生了什么,但是有一些奇怪的 c# 代码(请看附件)。有

  • 没有 var 名称的 var 声明
  • 我认为有些 var 是数字,它们没有名称

为什么生成该代码?是否可以保护 dll 免受反编译或 dll 被发布为发布?

在此处输入图像描述

使用Reflector试用版反编译也存在同样的问题

在此处输入图像描述

4

2 回答 2

5
于 2015-04-30T13:07:11.363 回答
1

反编译器确实没有理由生成空字段和变量名,无论程序集如何混淆或优化。字段和方法签名是无法删除的程序集元数据的一部分。名称可能在混淆程序集中消失了,但类型应该仍然存在,并且反编译器应该能够生成新名称。

也许那个反编译器不是很好?

一个“聪明”的混淆器可能会做一些有趣的事情来让人们失望,例如,使用不可见的 Unicode 字符作为标识符名称,但看到它已经设法生成一个名称,例如param0它更有可能反编译器无法正常工作。您可以通过在为显示每个字符的编程而制作的文本编辑器中查看该文件来检查该文件。

于 2015-04-30T12:42:33.777 回答