Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 在Linux内核模式下,如何执行用户空间命令_Linux Kernel_Kernel Module_Kernel Mode_Userspace - Fatal编程技术网

Linux kernel 在Linux内核模式下,如何执行用户空间命令

Linux kernel 在Linux内核模式下,如何执行用户空间命令,linux-kernel,kernel-module,kernel-mode,userspace,Linux Kernel,Kernel Module,Kernel Mode,Userspace,我在内核模式下钩住execve(将system\u call\u table entry\uu NR\u execve更改为我的函数)。我想检查ELF的汇编代码。如果它有害,我将直接返回而不执行它 我正在编写一个linux模块。在Linux内核模式下,我想使用objdump来反汇编ELF文件。 我想进入用户模式执行objdump,然后返回内核模式。这可能吗? 谢谢。也许您可以将项目分为两部分:内核模块和用户空间应用程序。所以,您可以在内核中钩住execve(),然后告诉您的应用程序钩子已触发,然

我在内核模式下钩住execve(将system\u call\u table entry\uu NR\u execve更改为我的函数)。我想检查ELF的汇编代码。如果它有害,我将直接返回而不执行它

我正在编写一个linux模块。在Linux内核模式下,我想使用objdump来反汇编ELF文件。 我想进入用户模式执行objdump,然后返回内核模式。这可能吗?
谢谢。

也许您可以将项目分为两部分:内核模块和用户空间应用程序。所以,您可以在内核中钩住
execve()
,然后告诉您的应用程序钩子已触发,然后在应用程序中进行反汇编和检查,将计算结果发送回内核模块,然后继续或中断
execve()
执行

如果您仍然想从内核运行
objdump
,请签出


另请参见相关问题。

听起来很奇怪。你需要这个做什么?也许可以用另一种方式完成,而不必从内核运行用户空间应用程序。因此,请向我们解释整个任务,这样也许我们可以想出一些更合适、更优雅的解决方案。Sam Protsenko,我在内核模式下钩住了execve(将system\u call\u table entry\uu NR\u execve更改为我的函数)。我想检查ELF的汇编代码。如果它有害,我将直接返回而不执行它。你还有其他的想法吗?如果你能在用户空间中也这样做,那会更好。对我来说,这听起来不像是一项核心任务。但我可能弄错了。如何在用户空间劫持Exeve?LD_预加载不起作用。非常感谢你,萨姆·普罗森科。这很有帮助。我想使用call_usermodhelper()。我将编写一个用户空间脚本(或C程序)来检查汇编代码,然后将结果(0或1)发送回内核。所以我的下一个问题是,如何在内核模式下获得值?写入文件?您只需将用户空间应用程序作为守护程序运行,而不必使用
call\u usermodhelper()
。关于内核和用户空间之间的交互:这里有很多选项。最简单的可能是利用字符设备驱动程序功能在内核和用户空间之间交换一些数据。另一个可能且简单的选项是在内核模块中创建一些sysfs文件,并从用户空间app读取/写入。Sam Protsenko,你能给我一个从用户空间到内核空间传输数据的示例吗?非常感谢。问题是,你可以有很多选择来实施这种转移。理想情况下,您应该根据您的具体情况选择它。如果您在内核开发方面没有太多经验,我建议您研究杂项字符设备API,下一个特定函数可能会很有用:
misc_register()
misc_delegister()
simple_read_from_buffer()
simple_write_to_buffer()
。一旦您注册了misc char设备并在内核中实现了读/写文件操作,您将能够读/写
/dev
目录中的相应文件,与您的内核模块进行对话。