我使用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建议我这样做的方法吗?。提前谢谢
答案 0 :(得分:0)
您需要更新内核标头(例如与您的拱门匹配的/usr/include/asm*/*unistd*.h
)以定义符号__NR_hello_world
。那么你可以针对这些标题构建glibc。
sysdeps/unix/sysv/linux/syscalls.list
。 glibc使用它来动态生成符号列表。
请务必同时更新sysdeps/unix/sysv/linux/Versions
,以便导出该符号。
所有这一切,使用syscall(326)
是最好的答案,特别是当你只想做内核黑客攻击时。搞乱glibc并不常见。