有没有可能使用钩子跳转到另一个进程的运行内存,然后跳回,而不需要任何DLL注入?
例如,如果进程A
有一个过程foo
,而进程B
有一个过程bar
,其原型与foo
相同(用于挂钩),那么假设两个进程都在运行,是否可以将foo
挂接到jmp再挂接到bar
?
编辑:这需要在Windows上完成。
发布于 2012-05-19 18:09:20
根据定义,进程是一个沙箱。如果您甚至错误地跨出了地址空间,它就会被抛出并捕获为SIG_USR信号,并报告为分段错误
话虽如此,您可以使用共享内存-shmem、管道和套接字等进程间通信机制来跨进程进行通信。
编辑: RPC (远程过程调用)机制也是可用的,比如提供远程方法调用的CORBA。
发布于 2012-05-19 19:08:57
Windows中的每个进程(以及Unix中的进程,可能还有绝大多数其他现代操作系统中的进程)都有自己的虚拟内存空间,通常映射到不同的物理地址。因此,将DLL注入另一个进程的地址空间是挂接该进程中任何内容的唯一方法。另一方面,一旦你在这个过程中有了DLL,你就可以在那里做很多事情,例如。生成您自己的线程,并使用Windows消息与父进程通信(作为Windows中最简单的通信方法之一)。
https://stackoverflow.com/questions/10664194
复制相似问题