这是一个由两部分组成的问题。但这两者都涉及同一件事。

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

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

有帮助吗?

解决方案

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

最小的 程序是:

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

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

其他提示

要阅读MSIL,请确保在这线程

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

可以在Microsoft SDK中找到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top