.NET已编译的源无法构建

时间:2014-10-09 09:13:05

标签: .net decompiling decompiler

我是c#/。net / obfuscators的新手。

我有一个有效的应用程序。 1 .exe和多个.dll每个dll引用其他dll。每个文件都在同一个文件夹中。

起初我开始使用Dotpeek来查看代码,我甚至导出到项目中。在尝试读取充满字母和失败的代码后,我发现代码实际上是混淆的。在谷歌使用了很多个小时后...我发现还有其他的反编译器以及反混淆器。

我找到了de4dot并用它来对每个文件进行反混淆处理。当我运行它们时,它们工作正常,与原始文件完全相同。

现在,当我使用Dotpeek时,我可以清楚地看到源代码的可读名称。导出到Visual Studio项目后。我尝试构建它,但有很多错误,大部分是符号中存在unicode转义字符“\ uxxxx”。所以我花了一些时间做一个python脚本将所有这些字符转换成相应的unicode字符。即便如此,还有其他错误,如nonnuable-type用作nunable-type,访问不一致,泛型约束等。

我开始手工修复它们,但有很多我开始寻找其他反编译器。在尝试了所有其他可用的反编译器之后,我发现ILSpy是唯一一个在反编译到项目时没有崩溃的人

同样,当我尝试构建它时,会出现错误,但这次它们的数量减少了,我又开始逐一修复。

有些修正案是直截了当的,但其他修正案没有意义。例如。有一个编译时错误,说声明不能是一个表达式。当我查看所述表达式时,它基本上是结构类型变量的总和和乘法,这对运行流没有影响。

这让我读取了汇编代码(对于这种情况,它是实际的IL),并且在那个特定的指令中它完全按照这个,求和,乘法,不使用该值。为什么IL代码中有这样的指令?它是如何编制的?这是混淆器中的一些巫术魔法吗?

还有源代码上的这些编译器生成器代码注释警告,我应该保留该代码吗?

是什么使c#生成器源上的所有这些编译时错误?反编译器是故障吗?或者是反混淆器的故障?

我该怎么办?继续修复剩余的错误?那里的工作还有其他工具吗?除了de4dot,我找不到任何反混淆器。我找不到除dotpeek和ILSpy之外的其他反编译器。

0 个答案:

没有答案