【问题标题】:How to add a system call with a suitable wrapper function in glibc如何在 glibc 中添加具有合适包装函数的系统调用
【发布时间】:2016-02-22 16:27:34
【问题描述】:

我使用https://tssurya.wordpress.com/2014/08/19/adding-a-hello-world-system-call-to-linux-kernel-3-16-0/.But向linux 4.4.2添加了一个hello_world系统调用它只能通过使用它的系统调用号来调用 如:-

long int a = syscall(326);

其中 326 是系统调用号。 现在我想用包装函数(如hello_world())调用相同的系统调用函数,而不指定系统调用号。有人可以建议我使用glibc的方法吗?提前谢谢

【问题讨论】:

  • glibc 有什么关系?
  • 我需要对系统调用号的使用进行抽象。即,创建一个更高级别的函数,例如 hello_world() 来代替使用系统调用号进行调用。我可以为此使用 glibc 吗?

标签: glibc


【解决方案1】:

您将需要更新您的内核头文件(例如,与您的 arch 匹配的 /usr/include/asm*/*unistd*.h)以定义符号 __NR_hello_world。然后你可以针对这些头文件构建 glibc。

让 glibc 生成符号的最简单方法是编辑与您的拱门相匹配的文件,例如 sysdeps/unix/sysv/linux/syscalls.list。 glibc 使用它来动态生成符号列表。

确保同时更新sysdeps/unix/sysv/linux/Versions,以便导出符号。

说了这么多,使用syscall(326) 是最好的答案,尤其是当您只想进行内核黑客攻击时。搞乱 glibc 并不常见。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2011-04-09
    • 1970-01-01
    • 2011-01-30
    • 2016-07-15
    • 2015-05-05
    相关资源
    最近更新 更多