2

我用 .NET Reflector 反编译了一个应用程序,并想进行一些更改并再次编译它......但是当我尝试编译它时,我得到了一堆错误,例如:

Error   14  'RaiseEvent' definition missing for event 'AsyncReturn'.
Error   55  End of statement expected.
Error   58  Type 'WksStatus' is not defined.
Error   88  Character is not valid.
Error   102 Maximum number of errors has been exceeded.

有没有办法:

  1. 反编译它,这样就没有错误,或者
  2. 即使有错误也要编译它。

非常感谢您的帮助!并随时提出问题。

4

1 回答 1

4

反编译代码不是一门精确的科学。反编译器使用一些算法对 MSIL 代码进行逆向工程并将其转换为您可以理解的 .net 语言。
更重要的是,您使用 .net 语言编写了大量代码,这些代码被预处理或编译成不同的代码片段。这些有时被称为“语法糖”(这方面的例子包括:“收益回报”、“锁定”、扩展方法、使用等)

那里有很多反编译器,但它们并不完美!
您甚至可以尝试在两个不同的反编译器中打开相同的 dll/可执行文件,并且通常您会看到对相同 MSIL 的不同解释。

如果您正在查看的代码是开源的,您应该尝试获取真正的代码!
如果不是,那么您不应该破解它,而是报告某种错误!
如果以上都不是,那么...您只需要自己进行所需的小修复,然后重新编译代码,但我向您保证,一些反编译器可能会导致代码错误,并且不会由于他们的工作方式,他们的工作方式与以前完全一样。

于 2012-10-28T15:50:05.650 回答