我注意到在内核模式下可以从/写入某些应用程序内存(我在其中),但不可能执行用户空间代码。
我猜想这与内核代码段(The limit & Granularity)有关。有没有办法执行用户空间地址? 我知道它破坏了 Linux 安全模型等,我只是出于好奇想知道是否有可能欺骗 Linux 内核并使其执行用户空间代码。
最佳答案
用户空间程序有自己的虚拟地址空间(<0xC0000000),不可能从内核空间(>0xC0000000)执行这样的程序。也许您应该查看 user-helper-api ( Invoking user-space applications from the kernel) 和 linux 进程间通信 (IPC) 内核套接字、共享内存和信号。网络工具使用 IPC(内核套接字)进行通信。驱动程序使用 user-helper-api 通知用户空间一些事件。如果您对如何使用二进制用户空间程序感兴趣,可以查找 UPROBE linux 内核模块(uprobe 可以解析用户空间二进制文件并编辑用户空间程序指令)。
关于linux - 在内核空间中执行用户空间代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743878/