调用外部函数(从一个exe到另一个exe)

3
假设进程1是主进程,进程2是目标进程(我无法编辑它),我想能够在进程1中调用进程2中的函数,有没有好的方法可以实现?我考虑注入一个具有导出函数的DLL,该函数调用该函数并在外部使用GetProcAddress…这可行吗?这是最好的方法吗?
感谢您的时间。

你想在进程1的执行上下文中调用这个函数吗?还是你只是希望进程2调用一个恰好在进程1中定义的函数? - undefined
1个回答

5
您的问题标题和正文提出了两个微妙不同的问题。
如果要让一个可执行文件调用另一个可执行文件中包含的函数,那么只要该函数的名称已经被导出,就非常容易。您可以使用LoadLibrary像使用DLL一样加载可执行文件,然后使用GetProcAddress获取要调用的函数的地址,并正常调用它。但请注意,在函数被其自身的可执行文件内部调用之前,可能需要进行其他初始化才能使函数正常工作。
在另一个进程的上下文中调用函数(而不仅仅是在另一个可执行文件中)则需要更多的工作。基本思路是编写一个调用函数并向与调用进程共享的某些内存中写入结果的函数。然后,您可以使用CreateRemoteThread在包含您需要调用的函数的进程上下文中执行该函数。
如果目标进程已编写支持它的代码,则还有其他方法,如COM,旨在更清晰地支持此类功能。如果可用,通常更可取。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接