首页 > 代码库 > Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux(undone)
Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux(undone)
目录
1. sys_call_table:系统调用表
2. 内核符号导出表、kallsyms_lookup_name
3. Linux 32bit、64bit下系统调用入口的异同
1. sys_call_table:系统调用表
Relevant Link:
2. 内核符号导出表、kallsyms_lookup_name
Relevant Link:
3. Linux 32bit、64bit下系统调用入口的异同
以sys_execve、sys_socketcall、sys_init_module这三个系统调用作为研究对象
0x1: Linux 32bit
1. sys_execve
对于Linux 32bit操作系统来说,sys_execve的系统调用号保存在:
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_32.h
#define __NR_execve 11
系统调用处理函数在内核内存中的地址可以通过以下方式得到
cat /boot/System.map-2.6.32-358.el6.i686 | grep sys_execve//c0408150 T sys_execve
在正常情况下(当前linux没有被rootkit、sys_call_table没有被hooked),sys_call_table(系统调用表)中的函数地址和内核导出符号表中的函数地址应该是相同的,即
sys_call_table[__NR_sys_execve] = cat /boot/System.map-2.6.32-358.el6.i686 | grep sys_execve
系统调用函数的入口点跟踪如下
linux-3.15.5\fs\exec.c
SYSCALL_DEFINE3(execve, const char __user *, filename, const char __user *const __user *, argv, const char __user *const __user *, envp){ return do_execve(getname(filename), argv, envp);}
这是个宏定义,等价于对sys_execve的声明
int do_execve(struct filename *filename, const char __user *const __user *__argv, const char __user *const __user *__envp){ struct user_arg_ptr argv = { .ptr.native = __argv }; struct user_arg_ptr envp = { .ptr.native = __envp }; return do_execve_common(filename, argv, envp);}
2. sys_socketcall
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_32.h
#define __NR_socketcall 102
在内核符号导出表中得到的内核内存地址
cat /boot/System.map-2.6.32-358.el6.i686 | grep sys_socketcall//c078fd70 T sys_socketcall
\linux-3.15.5\net\socket.c
/*进行socket调用派发*/SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args){ unsigned long a[AUDITSC_ARGS]; unsigned long a0, a1; int err; unsigned int len; if (call < 1 || call > SYS_SENDMMSG) return -EINVAL; len = nargs[call]; if (len > sizeof(a)) return -EINVAL; /* copy_from_user should be SMP safe. */ if (copy_from_user(a, args, len)) return -EFAULT; err = audit_socketcall(nargs[call] / sizeof(unsigned long), a); if (err) return err; a0 = a[0]; a1 = a[1]; switch (call) { case SYS_SOCKET: err = sys_socket(a0, a1, a[2]); break; case SYS_BIND: err = sys_bind(a0, (struct sockaddr __user *)a1, a[2]); break; case SYS_CONNECT: err = sys_connect(a0, (struct sockaddr __user *)a1, a[2]); break; case SYS_LISTEN: err = sys_listen(a0, a1); break; case SYS_ACCEPT: err = sys_accept4(a0, (struct sockaddr __user *)a1, (int __user *)a[2], 0); break; case SYS_GETSOCKNAME: err = sys_getsockname(a0, (struct sockaddr __user *)a1, (int __user *)a[2]); break; case SYS_GETPEERNAME: err = sys_getpeername(a0, (struct sockaddr __user *)a1, (int __user *)a[2]); break; case SYS_SOCKETPAIR: err = sys_socketpair(a0, a1, a[2], (int __user *)a[3]); break; case SYS_SEND: err = sys_send(a0, (void __user *)a1, a[2], a[3]); break; case SYS_SENDTO: err = sys_sendto(a0, (void __user *)a1, a[2], a[3], (struct sockaddr __user *)a[4], a[5]); break; case SYS_RECV: err = sys_recv(a0, (void __user *)a1, a[2], a[3]); break; case SYS_RECVFROM: err = sys_recvfrom(a0, (void __user *)a1, a[2], a[3], (struct sockaddr __user *)a[4], (int __user *)a[5]); break; case SYS_SHUTDOWN: err = sys_shutdown(a0, a1); break; case SYS_SETSOCKOPT: err = sys_setsockopt(a0, a1, a[2], (char __user *)a[3], a[4]); break; case SYS_GETSOCKOPT: err = sys_getsockopt(a0, a1, a[2], (char __user *)a[3], (int __user *)a[4]); break; case SYS_SENDMSG: err = sys_sendmsg(a0, (struct msghdr __user *)a1, a[2]); break; case SYS_SENDMMSG: err = sys_sendmmsg(a0, (struct mmsghdr __user *)a1, a[2], a[3]); break; case SYS_RECVMSG: err = sys_recvmsg(a0, (struct msghdr __user *)a1, a[2]); break; case SYS_RECVMMSG: err = sys_recvmmsg(a0, (struct mmsghdr __user *)a1, a[2], a[3], (struct timespec __user *)a[4]); break; case SYS_ACCEPT4: err = sys_accept4(a0, (struct sockaddr __user *)a1, (int __user *)a[2], a[3]); break; default: err = -EINVAL; break; } return err;}
3. sys_init_module
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_32.h
#define __NR_init_module 128
在内核符号导出表中得到的内核内存地址
cat /boot/System.map-2.6.32-358.el6.i686 | grep sys_init_module//c04975a0 T sys_init_module
\linux-3.15.5\kernel\module.c
SYSCALL_DEFINE3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs){ int err; struct load_info info = { }; err = may_init_module(); if (err) return err; pr_debug("init_module: umod=%p, len=%lu, uargs=%p\n", umod, len, uargs); err = copy_module_from_user(umod, len, &info); if (err) return err; return load_module(&info, uargs, 0);}
0x2: Linux 64bit
在Linux 64bit下,系统调用的入口点和32bit下有一点区别
1. sys_execve
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_64.h
#define __NR_execve 11//和32bit下一样
在内核符号导出表中得到的内核内存地址
cat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep stub_execveffffffff8100b4e0 T stub_execvecat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_execveffffffff810095b0 T sys_execve
对于64bit的Linux系统来说,在系统调用外层使用了stub(wrapper functions),我们打印一下Linux 64bit的sys_call_table
find_sys_call_table.c
#include <linux/module.h>#include <linux/init.h>#include <linux/types.h>#include <asm/uaccess.h>#include <asm/cacheflush.h>#include <linux/syscalls.h>#include <linux/delay.h> // loops_per_jiffy/* Just so we do not taint the kernel */MODULE_LICENSE("GPL");void **syscall_table;unsigned long **find_sys_call_table(void);unsigned long **find_sys_call_table() { unsigned long ptr; unsigned long *p; for (ptr = (unsigned long)sys_close; ptr < (unsigned long)&loops_per_jiffy; ptr += sizeof(void *)) { p = (unsigned long *)ptr; if (p[__NR_close] == (unsigned long)sys_close) { printk(KERN_DEBUG "Found the sys_call_table!!!\n"); return (unsigned long **)p; } } return NULL;} static int __init syscall_init(void){ int ret; unsigned long addr; unsigned long cr0; int num = 0; syscall_table = (void **)find_sys_call_table(); if (!syscall_table) { printk(KERN_DEBUG "Cannot find the system call address\n"); return -1; } do { printk("%d: the address is: %16x\n", num, syscall_table[num]); num++; } while (num < 400); return 0;}static void __exit syscall_release(void){ }module_init(syscall_init);module_exit(syscall_release);
Makefile
obj-m := find_sys_call_table.o PWD := $(shell pwd)all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean: rm -rf *.o *~ core .*.cmd *.mod.c ./tmp_version *.ko modules.order Module.symversclean_omit: rm -rf *.o *~ core .*.cmd *.mod.c ./tmp_version modules.order Module.symvers
打印64bit上的sys_call_table的函数地址
[924227.139499] 0: the address is: 811788a0[924227.139500] 1: the address is: 81178930[924227.139501] 2: the address is: 81175690[924227.139503] 3: the address is: 81175430[924227.139504] 4: the address is: 8117d420[924227.139505] 5: the address is: 8117d520[924227.139506] 6: the address is: 8117d360[924227.139508] 7: the address is: 8118dbe0[924227.139509] 8: the address is: 81178280[924227.139510] 9: the address is: 81010450[924227.139511] 10: the address is: 81144710[924227.139512] 11: the address is: 81142f50[924227.139514] 12: the address is: 81143320[924227.139515] 13: the address is: 81080d70[924227.139516] 14: the address is: 81081ee0[924227.139517] 15: the address is: 8100b5a0[924227.139518] 16: the address is: 8118b3c0[924227.139520] 17: the address is: 81178a60[924227.139521] 18: the address is: 811789c0[924227.139522] 19: the address is: 81178fe0[924227.139523] 20: the address is: 81178e10[924227.139525] 21: the address is: 81176500[924227.139526] 22: the address is: 811827a0[924227.139527] 23: the address is: 8118e220[924227.139528] 24: the address is: 810612b0[924227.139529] 25: the address is: 81145a20[924227.139531] 26: the address is: 81145c10[924227.139532] 27: the address is: 8113e7e0[924227.139533] 28: the address is: 811374b0[924227.139534] 29: the address is: 81205d50[924227.139535] 30: the address is: 81206fd0[924227.139537] 31: the address is: 81206360[924227.139538] 32: the address is: 8118a920[924227.139539] 33: the address is: 8118ab20[924227.139540] 34: the address is: 81080950[924227.139542] 35: the address is: 81096780[924227.139543] 36: the address is: 810700a0[924227.139544] 37: the address is: 8107c9c0[924227.139545] 38: the address is: 8106fcf0[924227.139546] 39: the address is: 8107c990[924227.139548] 40: the address is: 811784f0[924227.139549] 41: the address is: 8140a210[924227.139550] 42: the address is: 8140bfb0[924227.139551] 43: the address is: 8140c810[924227.139552] 44: the address is: 8140b490[924227.139554] 45: the address is: 8140b890[924227.139555] 46: the address is: 8140bdd0[924227.139556] 47: the address is: 8140bd40[924227.139557] 48: the address is: 8140be60[924227.139558] 49: the address is: 8140c0a0[924227.139560] 50: the address is: 8140b800[924227.139561] 51: the address is: 8140c190[924227.139562] 52: the address is: 8140c830[924227.139563] 53: the address is: 8140a040[924227.139565] 54: the address is: 8140c480[924227.139566] 55: the address is: 8140bee0[924227.139567] 56: the address is: 8100b400[924227.139568] 57: the address is: 8100b420[924227.139569] 58: the address is: 8100b440[924227.139571] 59: the address is: 8100b4e0[924227.139572] 60: the address is: 8106f540[924227.139573] 61: the address is: 8106e350[924227.139574] 62: the address is: 810833b0[924227.139575] 63: the address is: 810103a0[924227.139577] 64: the address is: 81203c40[924227.139578] 65: the address is: 812053f0[924227.139579] 66: the address is: 81204ac0[924227.139580] 67: the address is: 81205ab0[924227.139582] 68: the address is: 81202a50[924227.139583] 69: the address is: 812028d0[924227.139584] 70: the address is: 812024b0[924227.139585] 71: the address is: 81202fb0[924227.139586] 72: the address is: 8118a3f0[924227.139588] 73: the address is: 811c4000[924227.139589] 74: the address is: 811a7130[924227.139590] 75: the address is: 811a7110[924227.139591] 76: the address is: 811767c0[924227.139592] 77: the address is: 81176960[924227.139594] 78: the address is: 8118c150[924227.139595] 79: the address is: 8118f9b0[924227.139596] 80: the address is: 811762a0[924227.139597] 81: the address is: 81176200[924227.139599] 82: the address is: 81187e00[924227.139600] 83: the address is: 811882a0[924227.139601] 84: the address is: 81188160[924227.139602] 85: the address is: 811756c0[924227.139603] 86: the address is: 81188880[924227.139605] 87: the address is: 81187fe0[924227.139606] 88: the address is: 81188660[924227.139607] 89: the address is: 8117cf80[924227.139608] 90: the address is: 81176120[924227.139609] 91: the address is: 81175d00[924227.139611] 92: the address is: 81175f80[924227.139612] 93: the address is: 81175c40[924227.139613] 94: the address is: 81175e30[924227.139614] 95: the address is: 81084d90[924227.139615] 96: the address is: 81070fb0[924227.139617] 97: the address is: 81088280[924227.139618] 98: the address is: 81087f30[924227.139619] 99: the address is: 8107c790[924227.139620] 100: the address is: 81088ae0[924227.139622] 101: the address is: 81077910[924227.139623] 102: the address is: 81077f90[924227.139624] 103: the address is: 8106bc40[924227.139625] 104: the address is: 81077fd0[924227.139627] 105: the address is: 810892e0[924227.139628] 106: the address is: 81088d70[924227.139629] 107: the address is: 81077fb0[924227.139630] 108: the address is: 81077ff0[924227.139631] 109: the address is: 81088840[924227.139633] 110: the address is: 8107c960[924227.139634] 111: the address is: 81088820[924227.139635] 112: the address is: 81088640[924227.139636] 113: the address is: 810893e0[924227.139638] 114: the address is: 81088e50[924227.139639] 115: the address is: 81099f10[924227.139640] 116: the address is: 8109a360[924227.139641] 117: the address is: 81089160[924227.139642] 118: the address is: 81087860[924227.139644] 119: the address is: 81088c30[924227.139645] 120: the address is: 810877c0[924227.139646] 121: the address is: 810887a0[924227.139647] 122: the address is: 81088fa0[924227.139649] 123: the address is: 81088b50[924227.139650] 124: the address is: 81088720[924227.139651] 125: the address is: 81077340[924227.139652] 126: the address is: 810771a0[924227.139653] 127: the address is: 81080a60[924227.139655] 128: the address is: 81084580[924227.139656] 129: the address is: 81083210[924227.139657] 130: the address is: 81081af0[924227.139658] 131: the address is: 8100b460[924227.139660] 132: the address is: 811a7f30[924227.139661] 133: the address is: 81188530[924227.139662] 134: the address is: 810927d0[924227.139663] 135: the address is: 81069c80[924227.139665] 136: the address is: 811a8d90[924227.139666] 137: the address is: 811a9280[924227.139667] 138: the address is: 811a91f0[924227.139668] 139: the address is: 81195730[924227.139669] 140: the address is: 81089a20[924227.139671] 141: the address is: 81089d00[924227.139672] 142: the address is: 810663d0[924227.139673] 143: the address is: 81056590[924227.139674] 144: the address is: 810663f0[924227.139676] 145: the address is: 81056610[924227.139677] 146: the address is: 8104cf10[924227.139678] 147: the address is: 8104cf40[924227.139679] 148: the address is: 810564c0[924227.139680] 149: the address is: 81140120[924227.139682] 150: the address is: 81140090[924227.139683] 151: the address is: 8113fe90[924227.139684] 152: the address is: 8113fe30[924227.139685] 153: the address is: 81175240[924227.139687] 154: the address is: 8100ef20[924227.139688] 155: the address is: 81198120[924227.139689] 156: the address is: 81075800[924227.139690] 157: the address is: 81087900[924227.139691] 158: the address is: 810094a0[924227.139693] 159: the address is: 81070d40[924227.139694] 160: the address is: 81088120[924227.139695] 161: the address is: 81176140[924227.139696] 162: the address is: 811a73c0[924227.139698] 163: the address is: 810b8cd0[924227.139699] 164: the address is: 81070f00[924227.139700] 165: the address is: 81199a10[924227.139701] 166: the address is: 81197ce0[924227.139702] 167: the address is: 811502e0[924227.139704] 168: the address is: 8114fbb0[924227.139705] 169: the address is: 810897f0[924227.139706] 170: the address is: 81088430[924227.139707] 171: the address is: 81088330[924227.139709] 172: the address is: 8100b480[924227.139710] 173: the address is: 8100e860[924227.139711] 174: the address is: 810927d0[924227.139712] 175: the address is: 810afe50[924227.139714] 176: the address is: 810acea0[924227.139715] 177: the address is: 810927d0[924227.139716] 178: the address is: 810927d0[924227.139717] 179: the address is: 811db160[924227.139718] 180: the address is: 811cbb30[924227.139720] 181: the address is: 810927d0[924227.139721] 182: the address is: 810927d0[924227.139722] 183: the address is: 810927d0[924227.139723] 184: the address is: 810927d0[924227.139725] 185: the address is: 810927d0[924227.139726] 186: the address is: 8107c7e0[924227.139727] 187: the address is: 81111570[924227.139728] 188: the address is: 8119d020[924227.139729] 189: the address is: 8119cf60[924227.139731] 190: the address is: 8119ce80[924227.139732] 191: the address is: 8119c930[924227.139733] 192: the address is: 8119c8b0[924227.139734] 193: the address is: 8119ca70[924227.139736] 194: the address is: 8119d2e0[924227.139737] 195: the address is: 8119d270[924227.139738] 196: the address is: 8119d1d0[924227.139739] 197: the address is: 8119c4a0[924227.139740] 198: the address is: 8119c410[924227.139742] 199: the address is: 8119c9b0[924227.139743] 200: the address is: 81083030[924227.139744] 201: the address is: 810710b0[924227.139745] 202: the address is: 810a5f50[924227.139747] 203: the address is: 81066910[924227.139748] 204: the address is: 8105dee0[924227.139749] 205: the address is: 810927d0[924227.139750] 206: the address is: 811c06e0[924227.139751] 207: the address is: 811c02a0[924227.139753] 208: the address is: 811c1710[924227.139754] 209: the address is: 811c28d0[924227.139755] 210: the address is: 811bfde0[924227.139756] 211: the address is: 810927d0[924227.139758] 212: the address is: 811f61f0[924227.139759] 213: the address is: 811bc620[924227.139760] 214: the address is: 810927d0[924227.139761] 215: the address is: 810927d0[924227.139762] 216: the address is: 81136e10[924227.139764] 217: the address is: 8118c070[924227.139765] 218: the address is: 81066f90[924227.139766] 219: the address is: 8107ddd0[924227.139767] 220: the address is: 81204b60[924227.139769] 221: the address is: 81115c90[924227.139770] 222: the address is: 810905e0[924227.139771] 223: the address is: 81090200[924227.139772] 224: the address is: 81090500[924227.139773] 225: the address is: 81090060[924227.139775] 226: the address is: 81090c30[924227.139776] 227: the address is: 8108fd60[924227.139777] 228: the address is: 8108fc80[924227.139778] 229: the address is: 8108fbc0[924227.139780] 230: the address is: 8108fab0[924227.139781] 231: the address is: 8106f520[924227.139782] 232: the address is: 811bbaa0[924227.139783] 233: the address is: 811bbf90[924227.139784] 234: the address is: 81083060[924227.139786] 235: the address is: 811a7e80[924227.139787] 236: the address is: 810927d0[924227.139788] 237: the address is: 8115a480[924227.139789] 238: the address is: 811597d0[924227.139791] 239: the address is: 81156f90[924227.139792] 240: the address is: 81209c70[924227.139793] 241: the address is: 81208db0[924227.139794] 242: the address is: 812098e0[924227.139795] 243: the address is: 81209520[924227.139797] 244: the address is: 812086e0[924227.139798] 245: the address is: 812084d0[924227.139799] 246: the address is: 810ba480[924227.139800] 247: the address is: 8106e470[924227.139802] 248: the address is: 8120ea40[924227.139803] 249: the address is: 8120e7c0[924227.139804] 250: the address is: 8120ee10[924227.139805] 251: the address is: 811b56b0[924227.139807] 252: the address is: 811b52a0[924227.139808] 253: the address is: 811ba9b0[924227.139809] 254: the address is: 811ba3b0[924227.139810] 255: the address is: 811ba1f0[924227.139811] 256: the address is: 811592d0[924227.139813] 257: the address is: 81175670[924227.139814] 258: the address is: 81188180[924227.139815] 259: the address is: 811882c0[924227.139816] 260: the address is: 81175ed0[924227.139818] 261: the address is: 811a7dd0[924227.139819] 262: the address is: 8117d2f0[924227.139820] 263: the address is: 81188120[924227.139821] 264: the address is: 81187ba0[924227.139822] 265: the address is: 81188720[924227.139824] 266: the address is: 81188550[924227.139825] 267: the address is: 8117cec0[924227.139826] 268: the address is: 81176020[924227.139827] 269: the address is: 81176330[924227.139829] 270: the address is: 8118e010[924227.139830] 271: the address is: 8118da60[924227.139831] 272: the address is: 81067480[924227.139832] 273: the address is: 810a2b90[924227.139833] 274: the address is: 810a3120[924227.139835] 275: the address is: 811a5500[924227.139836] 276: the address is: 811a63f0[924227.139837] 277: the address is: 811a6e30[924227.139838] 278: the address is: 811a5ad0[924227.139840] 279: the address is: 81165d40[924227.139841] 280: the address is: 811a7ea0[924227.139842] 281: the address is: 811bbda0[924227.139843] 282: the address is: 811bd380[924227.139844] 283: the address is: 811bdd90[924227.139846] 284: the address is: 811bee20[924227.139847] 285: the address is: 81176630[924227.139848] 286: the address is: 811bd920[924227.139849] 287: the address is: 811bded0[924227.139851] 288: the address is: 8140c560[924227.139852] 289: the address is: 811bd1a0[924227.139853] 290: the address is: 811beda0[924227.139854] 291: the address is: 811bc490[924227.139856] 292: the address is: 8118a990[924227.139857] 293: the address is: 81182720[924227.139858] 294: the address is: 811ba800[924227.139859] 295: the address is: 81178f20[924227.139860] 296: the address is: 81178d50[924227.139862] 297: the address is: 81082f20[924227.139863] 298: the address is: 81110160[924227.139864] 299: the address is: 8140bc70[924227.139865] 300: the address is: 810927d0[924227.139867] 301: the address is: 810927d0[924227.139868] 302: the address is: 810927d0[924227.139869] 303: the address is: 810927d0[924227.139870] 304: the address is: 810927d0[924227.139871] 305: the address is: 810927d0[924227.139873] 306: the address is: 811a7470[924227.139874] 307: the address is: 8140b7e0[924227.139875] 308: the address is: 810118ef[924227.139876] 309: the address is: 810119d0[924227.139878] 310: the address is: 81011980[924227.139879] 311: the address is: 81011923[924227.139880] 312: the address is: 810118f6[924227.139881] 313: the address is: 810118c4[924227.139882] 314: the address is: 81011b30[924227.139884] 315: the address is: 81011b28[924227.139885] 316: the address is: 81011b38[924227.139886] 317: the address is: 81011af8[924227.139887] 318: the address is: 81011aa8[924227.139889] 319: the address is: 81011af0[924227.139890] 320: the address is: 81011ae8[924227.139891] 321: the address is: 81011ae0
通过对比sys_call_table和内核符号导出表的关系,我们可以发现Linux 64bit下的系统调用映射关系是这样的
sys_call_table[59] = stub_execve = ffffffff8100b4e0sys_execve = 在sys_call_table中不存在
在Linux 64bit下,stub_execve就是sys_execve的wrapper函数
/source/arch/x86/um/sys_call_table_64.c
#define stub_execve sys_execve
这也意味着在Linux 64bit下,sys_execeve在sys_call_table里不存在了,而是用stub_execve取代了,
2. sys_socketcall
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_64.h
#define __NR_socketcall 102 /* old implementation of socket systemcall *///和Linux 32bit的一样
在内核符号导出表中得到的内核内存地址
cat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_socketcallffffffff8140c950 T sys_socketcall
ffffffff8143a130 T compat_sys_socketcall
需要明白的是,sys_socketcall只适用于x86-32平台下适用,在非x86-32平台下,sys_socketcall是不存在的,Linux 64bit将sys_socketcall的"系统调用派发机制"拆分成了分别独立的系统调用,例如sys_socket、sys_bind、sys_connect
1. sys_socketcat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_socketffffffff8140a210 T sys_socket[924227.139549] 41: the address is: 8140a2102. sys_connectcat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_connectffffffff8140bfb0 T sys_connect[924227.139550] 42: the address is: 8140bfb03. sys_bindcat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_bindffffffff8140c0a0 T sys_bind[924227.139558] 49: the address is: 8140c0a0
3. sys_init_module
\linux-3.15.5\arch\sh\include\uapi\asm\unistd_64.h
#define __NR_init_module 128//和Linux 32bit的一样
在内核符号导出表中得到的内核内存地址
cat /boot/System.map-2.6.32-220.23.2.ali878.el6.x86_64 | grep sys_init_moduleffffffff810afe50 T sys_init_module[924227.139712] 175: the address is: 810afe50
Relevant Link:
http://stackoverflow.com/questions/9940391/looking-for-a-detailed-document-on-linux-system-calls
Copyright (c) 2014 LittleHann All rights reserved
Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux(undone)