linux x86_32上的socket系统调用

use*_*070 5 system-calls linux-kernel

我试图挂钩linux x86_32上的套接字系统调用.此系统调用不存在,但通过socketcall进行门控.

男人socketcall: socketcall() is a common kernel entry point for the socket system calls. call determines which socket function to invoke. args points to a block containing the actual arguments, which are passed through to the appropriate call.

我用自己的函数挂钩了这个系统调用(__NR_socketcall在我的系统上是102,也在http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html上说明),它打印了一些内容并调用了之后的原始功能.但是,我的函数永远不会被调用.此外,strace显示调用了socket()系统调用.

基本问题:如何在linux x86_32上挂接套接字系统调用?

子问题:为什么strace显示socket()系统调用而不是socketcall()?

一切都在x86_64上按预期工作,其中存在套接字系统调用.

小智 0

你好,我就像你一样在寻找一种直接调用系统调用的方法,例如:socket、bind等。

在互联网上搜索我发现您可以调用此文件中定义的系统调用: /usr/include/i386-linux-gnu/asm/unistd_32.h

例如, for 的系统socket调用十进制为 359,而 for 的系统bind调用十进制为 361

全部在 x86_32 中测试