使用c#从另一个进程调用一个函数

我正在为自己的学习目的创建一个内存修改程序。 我的一个朋友指出了我想要触发的另一个程序中的一个函数。

该函数在另一个程序中为0x004B459C。 我知道如何读写内存,但是如何从我的程序中触发此function。 我没有这个其他程序的来源。

我的问题是,如果我知道这个hex代码,我是否需要注入函数,或者我只是写一些内存来触发这个?

想一想你真正想要的东西。 您希望其他进程执行此function。 进程不执行代码,它是执行代码的线程。 如果您希望其他进程将此函数作为其正常操作的一部分来调用,则必须确定输入等,这将使其他进程的一个线程调用它。 一般来说,任何其他方式您都将面临破坏其他流程的风险。 可以将一个线程注入另一个进程并让它调用你感兴趣的函数(参见CreateRemoteThread )。 如果要在消息泵线程上调用此函数,则可以将消息挂钩注入其他进程,向其发送特殊消息并从挂钩中调用它。 还有一些方法(APC),但这些方法仍然更复杂,收益甚微。

你缺少一些基本的架构基础:-)你不能简单地调用一个函数从另一个进程知道它的地址! 想一想,这意味着你的程序可以获取任何程序的内存并执行代码! 这将是一个混乱和一个完全不安全的环境。 首先是一些基础知识:1)windows保证你只看到自己进程的内存,操作系统(甚至是Windows)最重要的原则之一就是隔离包括内存在内的进程。 2)确实考虑过权限,通常运行的任何代码必须在用户帐户下运行,另一个进程可能意味着另一个进程帐户。

答案很简单,如果你的程序是.NET / C#,那么检查.NET框架为进程间通信提供什么,这是你必须搜索的东西,每个平台,Java,windows native,.NET提供了一种正式的方式进程如何相互通信,称为进程间通信,在.NET框架中进行检查