从C#中正在运行的进程中调用函数

时间:2018-06-21 09:54:11

标签: c# process dll-injection

  1. 我有一个在计算机上运行的C ++程序,并且无法更改 代码(但我可以看到源代码)。
  2. 现在,我想使用C#项目从此正在运行的程序/进程中调用一些方法。
  3. C ++程序在运行时更改其对象。因此,导入dll是 在这种情况下没有帮助。

最佳做法是什么?是否可以通过Process.GetProcessesByName获取该进程并以某种方式在我的C#项目中调用该函数?

1 个答案:

答案 0 :(得分:0)

如果函数具有1个参数,则可以使用CreateRemoteThread()并在lpParameter参数中传递单个参数来调用该函数。在lpStartAddress中传递函数的地址。

如果函数带有多个参数,则无法使用CreateRemoteThread()从外部调用它。

要获取该函数的地址,可以使用GetProcAddress(),您需要将其锁定,但这仅在导出该函数时有效。

如果未导出,则可以通过逆向工程对找到的地址进行硬编码。

相关问题