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

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

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

c# process dll-injection
1个回答
0
投票

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

如果函数接受多个参数,则不能使用CreateRemoteThread()从外部调用它。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.