linux - 在内核空间中执行用户空间代码

标签 linux linux-kernel

我注意到在内核模式下可以从/写入某些应用程序内存(我在其中),但不可能执行用户空间代码。

我猜想这与内核代码段(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/

相关文章:

c - pthread_attr_setschedparam() 返回非零但 errno = 成功 ...(Linux、C、Ubuntu 18.04.4)

c - nf_conntrack_helper 注册未注册端口返回错误

php - 将用户从任何没有 index.php 的文件夹路由到某个文件,例如 : index. php |使用.htaccess

c - Linux内核空间读写

c - 与 OpenSSL 的链接错误

django - 如何在不延迟任务的情况下优雅地重启 Celery

c - 通过 C 中的 Netlink 从内核到用户空间的多播

linux - 使用 "default permission"选项融合文件系统

linux - linux中shm.c的修改

c - 如何为数据采集硬件实现 Linux 设备驱动程序?