进程间挂钩

时间:2012-05-19 10:05:37

标签: c++ hook ipc

是否可以使用钩子跳转到另一个进程的运行内存,然后跳回,没有像DLL注入那样的东西?

例如,如果流程A的流程为foo,流程B的流程bar具有与foo相同的原型(用于假设两个进程都在运行,是否可以将foo挂钩到bar jmp?

编辑:这需要在Windows上完成。

2 个答案:

答案 0 :(得分:2)

根据定义,流程是一个沙箱。如果您甚至错误地走出地址空间,它会被提升并作为SIG_USR信号捕获并报告为分段错误

已经说过了可以用来跨进程进行通信的进程间通信机制,例如共享内存-shmem,管道和套接字。

编辑: 还有RPC(远程过程调用)机制,例如提供远程方法调用的CORBA。

答案 1 :(得分:1)

Windows中的每个进程(以及Unix和可能绝大多数其他现代操作系统)都有自己的虚拟内存空间,通常映射到不同的物理地址。因此,将DLL注入另一个进程的地址空间是在该进程中挂钩任何内容的唯一方法。另一方面,一旦你在这个过程中有一个DLL,你可以做很多事情,例如。产生自己的线程并使用Windows消息与父进程通信(作为Windows中最简单的通信方法之一)。

相关问题