【发布时间】:2018-06-21 09:54:11
【问题描述】:
- 我有一个 C++ 程序在计算机上运行,无法更改 代码(但我可以看到源代码)。
- 现在,我想使用我的 C# 项目从这个正在运行的程序/进程中调用一些方法。
- C++ 程序在运行时更改其对象。所以导入dll是 在这种情况下没有帮助。
最佳做法是什么?是否有可能获得该进程(通过 Process.GetProcessesByName)并以某种方式在我的 c# 项目中调用它的函数?
【问题讨论】:
-
我什至不知道这是否可能,但请注意,您很可能会通过在不知情的情况下乱序调用可执行文件的某些代码来破坏软件的内部状态- 定义的接口。
-
是的,可以将自己注入另一个进程...您可以在进程空间中注入一个 dll,在该进程中创建一个远程线程并使该 dll 运行。然后 dll 可以“单独”运行,也可以从您的程序“直接”运行(通过进程间通信方法与其通信)。用 .NET 写这个 dll 是一件坏事,因为你必须在目标进程中带上所有的 .NET 运行时。
-
见here 了解一些理论。
-
如果你四处寻找“注入 c# 其他进程”,你会发现很多理论,很少实践。
标签: c# process dll-injection