【问题标题】:How to Use C# to Call a Function Within a Seperate Running Native Process?如何使用 C# 在单独运行的本机进程中调用函数?
【发布时间】:2016-06-24 23:12:22
【问题描述】:

你可以使用 C# 调用另一个运行中的用 C/C++ 编写的进程内部的函数吗?

我知道您可以使用 C++ 来执行此操作,方法是注入一个 DLL,该 DLL 启动一个远程线程、侦听关联的按键并调用已定义签名和地址的所需函数。

C++ 到 C++ 教程在这里: http://www.codeproject.com/Articles/29527/Reverse-Engineering-and-Function-Calling-by-Addres#Applying

如果我没记错的话,我过去也读到过,您不能将托管 DLL (C#) 注入到非托管进程 (C++) 中。但也许存在另一种方式......

我想这样做的原因是对 PC 游戏进行逆向工程并用我熟悉的语言 C# 编写一些小技巧。

【问题讨论】:

  • 这里还有一个教程:codeproject.com/Articles/607352/…
  • @GediminasMasaitis 不,示例中的代码可以完成所有工作。在目标进程中注入了一个 C/C++ 中的小库,它在目标进程中加载​​ CLR 主机,然后加载所需的 .NET dll。
  • @GediminasMasaitis 如果您查看最终图像,您会看到他们将托管 DLL 注入 Notepad++(不是用 .NET 编写的程序)
  • 您必须非常了解 C++ 才能将 CLR 注入另一个进程,并且这样做不会造成太大损害。还有COM,Windows的汇编语言。最重要的是,要知道如何诊断故障并找到解决方法。并且会有失败,托管代码喜欢抛出异常,而当这种情况发生在外部进程中时,不会有一个好的结局。只要你懂这门语言,还不如直接用它,完全跳过C#。

标签: c# c++ reverse-engineering interprocess


【解决方案1】:

看看MemorySharp 库,它完全符合您的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2021-11-20
    • 1970-01-01
    • 2018-09-20
    • 2018-04-12
    相关资源
    最近更新 更多