- 我有一个程序在计算机上运行C++,无法更改 代码(但我可以看到源代码(。
- 现在,我想使用我的 C# 项目从这个正在运行的程序/进程中调用一些方法。
- C++程序在运行时更改其对象。所以导入 dll 是 在这种情况下没有帮助。
最佳实践是什么?是否可以获取该进程(通过Process.GetProcessesByName(并以某种方式在我的c#项目中调用它的函数?
如果函数有 1 个参数,则可以通过使用 CreateRemoteThread(( 并在 lpParameter 参数中传递单个参数来调用该函数。 在 lpStartAddress 中传递函数的地址。
如果函数接受多个参数,则无法使用 CreateRemoteThread(( 在外部调用它。
要获取函数的地址,您可以使用需要精确调用的 GetProcAddress((,但这仅在导出函数时才有效。
如果未导出,则可以对通过逆向工程找到的地址进行硬编码。