背景
我正在开发一个项目,我需要为本机.exe x86二进制文件(使用microsoft的vc8编译器编译 - 本机c / c ++)创建补丁,以增强其功能并修复一些错误作为源代码这个.exe不可用。
实际上,我在本机c ++ dll中制作这些补丁,一旦将其加载到可执行文件的进程内存中,它就会在.exe的代码/数据中应用补丁。这种方法在稳定性方面效果很好,但是非常混乱且难以维护。因此,我提出了在原生c ++ dll中创建某种补丁引擎的想法,但将所有“高级”代码移动到c#dll。 “高级”代码我指的是与修补过程本身没有直接关系的任何代码(例如,假设我正在为该.exe创建一个全新的功能。与修补过程相关的代码将在native c ++ dll,它依次调用相应的c#函数来执行其他任何操作。)
我做了一些研究,发现可能最好的方法就是使用c ++ / cli的“IJW”在原生补丁引擎dll和c#dll中的“高级”代码之间建立桥梁(I需要这个在两个方向上工作。我需要从非托管代码调用c#函数的同样方法我需要从c#代码中调用.exe和补丁引擎dll的非托管函数。我还发现了使用COM互操作的可能性,但在网络主题中比较了人们声称要遵循IJW方法而不是COM互操作的两种方法。
问题
提前致谢并随时分享您认为可能对该主题有用的任何知识。