1

这是一个两部分的问题。但这两者都与同一件事有关。

我想使用应用程序的 IL 代码来应用补丁。我想知道什么是正确的方法。显然我可以反编译它并读取和编辑 il 代码文件然后重新编译。但是有什么方法可以在文件中将其作为 msil 代码读取。并且可能实时编辑它。

我试图编辑可执行文件的反编译代码。但是每次我重新编译它时,我都会遇到执行问题。就像它再也找不到它的切入点一样。我该如何计算?我猜我需要知道命令及其参数的长度,或者使入口点成为标签或其他东西。如果有这样的 Visual Studio 模板,我会很好。

4

2 回答 2

6

作为一个已经多次阅读ECMA-335规范用两种不同语言实现 CLI 图像加载器的人(其中一种是完整的 IL 分析),我想说这对我来说仍然是一项具有挑战性的任务。我这样说是因为看起来 1)你还没有这样做,2)你正在寻找一个简单的答案。规范绝对应该是您的起点。

最小的程序是:

  • 加载 PE 映像(exe 或 dll)
  • 解析所有方法的字节码并解析符号
  • 应用代码转换(当然最少是单个转换,例如重命名私有方法)
  • 将结果另存为新的 PE 图像

编辑:这不会让您不必了解 .NET 程序集的详细结构,但它可能会在实际实现中为您节省一些时间,并有助于保持您的混淆器逻辑与加载程序完全分离。

于 2009-09-09T18:31:17.543 回答
1

要阅读 MSIL,肯定有,在这个线程中:

ildasm.exe - 中间语言反汇编程序。您可以使用此工具在 MSIL 级别查看已编译的代码。

这可以在 Microsoft SDK 中找到。

于 2009-09-09T18:32:48.043 回答