我的目标是从父进程设置虚拟内存页面权限(就像调用 mprotect
的 fork 进程一样)。这可以用 ptrace(1)
或其他魔法来完成吗?
谢谢!
最佳答案
它可以完成(确实通过ptrace()
;gdb
可以做到),但并非没有很多花招,因为为了在另一个进程中调用一个函数,你基本上必须设置它的寄存器和堆栈等以供执行,然后继续进程,这将执行该函数。我突然想到的一个程序可能有一些有用的源代码/方法供您查看,它是 injectso。 .如果您查看 injectso,请查看 inject_code()
函数。
此外,调用约定因平台而异,因此您必须为每个体系结构/操作系统等重新编写代码。
关于linux - 在 fork 进程中设置内存权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842835/