反编译DLL时缺少名称

时间:2013-04-13 20:39:00

标签: .net

我有一个DLL文件,我无法用.NET Reflector和JetBrains dotPeek完全解构。

基本上所有字段都缺少名称,如:

private int ;
private string ;
private bool ;

dll是否被混淆了?或者可以在运行时生成这些名称吗?

1 个答案:

答案 0 :(得分:4)

CLI标准,即说明哪些字符是有效符号的标准,具有非常灵活的规则。必然如此,它描述了许多语言可以定位的VM。标识符中有效字符的规则是一种语言实现细节,因此使它们过于严格会使这些语言很难移植到CLR。

工具利用这种灵活性。无论是C#还是VB.NET,它们都会生成带有$<等字符的怪字名称,以确保它们为迭代器和lambda表达式等事物自动生成的名称永远不会与由程序员。

混淆器利用这一点。 STX和ENQ等字符是ASCII控制代码,值小于0x20的代码。由于大多数字体没有该字符代码的字形,因此很多程序都无法显示它们。

您几乎肯定违反了此计划的许可条​​款。在许多任何许可证中,“不要反向工程”条款都是样板。软件供应商永远不会遇到混淆的麻烦,然后不包括该条款。