【问题标题】:DotPeek not proper deserialize dllDotPeek 不正确反序列化 dll
【发布时间】:2015-07-10 04:05:57
【问题描述】:

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

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

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

试用版Reflector反编译也出现同样的问题

【问题讨论】:

  • DLL好像被混淆了,反编译后的代码很难看懂。
  • 那里很可能一个有效的标识符,只是不是你可以轻易看到的(想想Unicode)。
  • 使用 .NET Reflector red-gate.com/products/dotnet-development/reflector 试一试,然后在此处发布。 dotPeek 对我来说没有问题。我从没见过像你这样的事情。

标签: c# .net reverse-engineering decompiling dotpeek


【解决方案1】:

首先,您试图对他们的代码进行逆向工程,从而违反了许可协议。

f。拆卸。您不得进行逆向工程、反编译、反汇编 或以任何其他方式尝试获取有关 产品的构造。

这是因为 .NET 允许的变量名远不止 a-z。您可以在 Identifiers (C#) 的 MSDN 部分阅读有关它的信息。尽管 Visual Studio 不喜欢这些变量并且会抱怨,但它们在 IL 中完全有效(而在 C# 中无效)。

查看其他工具或转储到十六进制,您可以看到变量已被遮盖,类似于 这实际上是 ACK 字符 ^F 后跟“START OF TEXT”字符,看起来喜欢空格字符但不是空格字符。使用的其他字符包括退格字符。

上述代码的 IL 将类似于

.field private static initonly string '\u0001'
.field private static initonly string '\u0002'
.field private static initonly string '\u0003'
.field private static initonly string '\u0004'
.field private static initonly string '\u0005'
.field private static initonly string '\b'
.field private static initonly string '\u0002\u2000'
.field private static initonly string '\u0003\u2000'
.field private static initonly string '\u0005\u2000'
.field private static initonly string '\b\u2000'

你明白了。

我想知道他们专门用什么来混淆这段代码(因为看起来很有趣!)。代码显然是用http://reflexil.net/ 之类的东西生成的,它允许编译后的 dll 保留有关变量名称的提示(但将它们更改为无意义的),这就是反编译器显示所有奇怪名称的原因(反编译器认为它通过保留dll中提到的变量名)。

【讨论】:

  • 我知道 RemObjects Oxfuscator 可以做到这一点,我自己做过,它甚至会破坏字符串文字 - oxfuscator.com/oxfuscator
【解决方案2】:

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

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

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

【讨论】:

  • 或者字段名称可能使用了一些奇怪的 unicode 字符,这些字符不会以所选字体显示。
  • @Dirk:好时机,我正准备添加一段关于奇怪的 Unicode 字符的段落
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多