是否有在内存中修补 .net 可执行文件的技术?假设我们有一个 .net dll/exe,我们确定了我们想要修补的方法以及用什么 IL 替换现有代码。在二进制文件上执行此操作很容易(为了简单起见,我们假设它没有强名称)。但是如果我们想让文件完好无损呢?是否可以在内存中制作补丁?也许有可能编写一个 exe 加载器来拦截 dll 加载并以某种方式即时重写 IL?
问题是,一旦代码在内存中,它就不再是 IL,而是本机编译的,因此,我们对要修补哪个 IL 的方法的了解对我们没有多大帮助。所以看起来在加载期间这样做是唯一可以让我们不修改磁盘上原始文件的方法。这可能吗?
注意:我对主程序可执行文件不是 .net 而是本机的情况特别感兴趣,它加载 .net dll,例如在 Unity3D 播放器的情况下。