gpt4 book ai didi

.net - 程序化 MSIL 注入(inject)

转载 作者:行者123 更新时间:2023-12-04 10:06:22 25 4
gpt4 key购买 nike

假设我有一个这样的错误应用程序:

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2 + 1 = {0}", Add(2, 1));
}

static int Add(int x, int y)
{
return x + x; // <-- oops!
}
}
}

该应用程序已经编译并部署到野外。有人发现了这个错误,现在他们正在请求修复它。虽然我可以使用修复程序重新部署此应用程序,但由于我无法控制的原因,这非常麻烦——我只想为该错误编写一个补丁程序。

具体来说,我想将我自己的 MSIL 插入到有问题的汇编源文件中。我以前从来没有做过这样的事情,谷歌搜索也没有找到任何有用的信息。如果我可以在上面的代码中看到如何执行此操作的示例,它将极大地帮助我:)

如何以编程方式将自己的 MSIL 注入(inject)已编译的 .NET 程序集?

[编辑添加:] 对于那些问的人:我不需要运行时热交换。关闭应用程序,操作程序集,然后再次重新启动程序对我来说非常好。

[再编辑一次:] 看起来普遍的共识是“操纵程序集是一种 不好的 修补程序的方式”。如果它是 bad idea,我不会走那条路.

我会留下这个问题,因为 MSIL 注入(inject)可能仍然对其他目的有用:)

最佳答案

我想我会问的问题是“你将如何部署补丁”?在某个地方,您必须部署一些东西来修复已经存在的错误。为什么重新编译 dll 并发布固定版本真的是个问题?我的猜测是,弄清楚如何以编程方式注入(inject) MSIL 将比简单地重新部署固定程序集更麻烦。

关于.net - 程序化 MSIL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com