是否有用于修补内存中的.net可执行文件的技术?假设我们有一个.net dll / exe,我们确定了要修补的方法以及用来替换现有代码的IL。在二进制文件上执行此操作很容易(为简单起见,假设它没有强名称)。但是,如果我们想保留文件原样怎么办?是否可以在内存中制作补丁?也许有可能编写一个exe加载程序来拦截dll加载并以某种方式即时重写IL?

问题是,一旦代码在内存中,它就不再是IL,而是本地代码编译,因此,我们知道要使用哪种IL修补的方法的知识对我们没有多大帮助。因此,看起来在加载期间执行此操作是唯一一种可能使我们无法修改磁盘上原始文件的方法。

注意:我对主程序可执行文件不是.net而是加载.net dll的本机(例如Unity3D播放器)的情况特别感兴趣。 br />

#1 楼

在运行时修补和拦截.NET代码的低级详细信息和实现:http://www.ntcore.com/files/netint_injection.htm

修补和拦截的高级详细信息和实现。运行时的NET代码:http://www.codeproject.com/Articles/16359/MethodLogger-Hook-into-method-calls-in-NET-binarie

评论


谢谢。非常好的信息,很可能会为我解决。如果其他人愿意,我会让他们鸣叫,几天后我会接受答案。

–安德鲁(Andrew Savinykh)
2015年10月8日,0:49