µÚÒ»²¿·Ö. »ù´¡ÖªÊ¶
¡¡¡¡1.1 ʲôÊÇLKMs
¡¡¡¡LKMs¾ÍÊÇ¿ÉÐ¶ÔØµÄÄÚºËÄ£¿é(Loadable Kernel
¡¡¡¡Modules)¡£ÕâЩģ¿é±¾À´ÊÇLinuxϵͳÓÃÓÚÀ©Õ¹ËûµÄ¹¦Äܵġ£Ê¹ÓÃLKMsµÄÓŵãÓÐ:ËûÃÇ¿ÉÒÔ±»¶¯Ì¬µÄ¼ÓÔØ,¶øÇÒ²»ÐèÒªÖØÐ±àÒëÄںˡ£ÓÉÓÚÕâЩÓŵã,ËûÃdz£³£±»ÌØÊâµÄÉ豸(»òÕßÎļþϵͳ),ÀýÈçÉù¿¨µÈʹÓá£
¡¡¡¡Ã¿¸öLKMÖÁÉÙÓÉÁ½¸ö»ù±¾µÄº¯Êý×é³É:
¡¡¡¡int init_module(void) /*ÓÃÓÚ³õʼ»¯ËùÓеÄÊý¾Ý*/ ¡¡¡¡{ ¡¡¡¡... ¡¡¡¡} ¡¡¡¡void cleanup_module(void) /*ÓÃÓÚÇå³ýÊý¾Ý´Ó¶øÄÜÓÐÒ»¸ö°²È«µÄÍ˳ö*/ ¡¡¡¡{ ¡¡¡¡... ¡¡¡¡} |
¡¡¡¡¼ÓÔØÒ»¸öÄ£¿é(³£³£Ö»ÏÞÓÚrootÄܹ»Ê¹ÓÃ)µÄÃüÁîÊÇ:
¡¡¡¡# insmod module.o
¡¡¡¡Õâ¸öÃüÁîÈÃϵͳ½øÐÐÁËÈçϹ¤×÷:
¡¡¡¡¼ÓÔØ¿ÉÖ´ÐеÄÄ¿±êÎļþ(ÔÚÕâ¶ùÊÇmodule.o)
¡¡¡¡µ÷Óà create_moduleÕâ¸öϵͳµ÷ÓÃ(ÖÁÓÚʲô½Ðϵͳµ÷ÓÃ,¼û1.2)À´·ÖÅäÄÚ´æ.
¡¡¡¡²»Äܽâ¾öµÄÒýÓÃÓÉϵͳµ÷ÓÃget_kernel_syms½øÐвéÕÒÒýÓÃ.
¡¡¡¡ÔÚ´ËÖ®ºóϵͳµ÷ÓÃinit_module½«»á±»µ÷ÓÃÓÃÀ´³õʼ»¯LKM->Ö´ÐÐ int inti_module(void) µÈµÈ
¡¡¡¡(Äں˷ûºÅ½«»áÔÚ1.3½ÚÖÐÄں˷ûºÅ±íÖнâÊÍ)
¡¡¡¡OK,µ½Ä¿Ç°ÎªÖ¹,ÎÒÏëÎÒÃÇ¿ÉÒÔд³öÎÒÃǵÚÒ»¸öСµÄLKMÀ´ÑÝʾһÏÂÕâЩ»ù±¾µÄ¹¦ÄÜÊÇÈçºÎ¹¤×÷µÄÁË.
¡¡¡¡#define MODULE ¡¡¡¡#include ¡¡¡¡int init_module(void) ¡¡¡¡{ ¡¡¡¡printk("<1>Hello World\n"); ¡¡¡¡return 0; ¡¡¡¡} ¡¡¡¡void cleanup_module(void) ¡¡¡¡{ ¡¡¡¡printk("<1>Bye, Bye"); ¡¡¡¡} |
¡¡ ¡¡Äã¿ÉÄÜ»áÆæ¹ÖΪʲôÔÚÕâÀïÎÒÓÃprintk(....)¶ø²»ÊÇprintf(.....).ÔÚÕâÀïÄãÒªÃ÷°×Äں˱à³ÌÊÇÍêÈ«²»Í¬ÓÚÆÕͨµÄÓû§»·¾³Ïµıà³Ì µÄ.ÄãÖ»ÄÜʹÓúÜÓÐÏÞµÄһЩº¯Êý(¼û1.6)½öʹÓÃÕâЩº¯ÊýÄãÊǸɲ»ÁËʲôµÄ.Òò´Ë,Ä㽫»áѧ»áÈçºÎʹÓÃÄãÔÚÓû§¼¶±ðÖÐÓõÄÄÇô¶àº¯ÊýÀ´°ïÖúÄãÈëÇÖÄÚºË. ÄÍÐÄһЩ,ÔÚ´Ë֮ǰÎÒÃDZØÐë×öÒ»µãÆäËûµÄ.....
¡¡¡¡ÉÏÃæµÄÄǸöÀý×Ó¿ÉÒÔºÜÈÝÒ׵ı»±àÒë:
¡¡¡¡# gcc -c -O3 helloworld.c ¡¡¡¡# insmod helloworld.o |
¡¡¡¡OK,ÏÖÔÚÎÒÃǵÄÄ£¿éÒѾ±»¼ÓÔØÁ˲¢ÇÒ¸øÎÒÃÇ´òÓ¡³öÁËÄǾäºÜ¾µäµÄ»°.ÏÖÔÚÄã¿ÉÒÔͨ¹ýÏÂÃæÕâ¸öÃüÁîÀ´È·ÈÏÄãµÄLKMȷʵÔËÐÐÔÚÄں˼¶±ðÖÐ:
¡¡¡¡# lsmod ¡¡¡¡Module¡¡¡¡¡¡¡¡ Pages¡¡¡¡Used by ¡¡¡¡helloworld¡¡¡¡¡¡¡¡ 1 ¡¡¡¡ 0 |
¡¡¡¡Õâ¸öÃüÁî¶ÁÈ¡ÔÚ /proc/modules µÄÐÅÏ¢À´¸æËßÄ㵱ǰÄǸöÄ£¿éÕý±»¼ÓÔØ.'Pages'
¡¡¡¡ÏÔʾµÄÊÇÄÚ´æµÄÐÅÏ¢(Õâ¸öÄ£¿éÕ¼Á˶àÉÙÄÚ´æÒ³Ãæ).'Used by'ÏÔʾÁËÕâ¸öÄ£¿é±»ÏµÍ³
¡¡¡¡Ê¹ÓõĴÎÊý(ÒýÓüÆÊý).Õâ¸öÄ£¿éÖ»Óе±Õâ¸ö¼ÆÊýΪ0ʱ²Å¿ÉÒÔ±»³ýÈ¥.ÔÚ¼ì²é¹ýÕâ¸öÒÔºó,Äã¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÐ¶ÔØÕâ¸öÄ£¿é
¡¡¡¡
¡¡ ¡¡OK,Õâ²»¹ýÊÇÎÒÃdz¯LKMsÂõ³öµÄºÜСµÄÒ»²½.ÎÒ³£³£°ÑÕâЩLKMsÓÚÀϵÄDOS TSR³ÌÐò×ö±È½Ï,(ÊǵÄ,ÎÒÖªµÀËûÃÇÖ®¼äÓÐºÜ¶àµØ·½²»Ò»Ñù),ÄÇЩTSRÄܹ»³£×¤ÔÚÄÚ´æ²¢Çҽػñµ½ÎÒÃÇÏëÒªµÄÖжÏ.Microsoft's Win9xÓÐһЩÀàËÆµÄ¶«Î÷½Ð×öVxD.¹ØÓÚÕâЩ³ÌÐòµÄ×îÓÐÒâ˼µÄÒ»µãÔÚÓÚËûÃǶ¼Äܹ»¹ÒÔÚһЩϵͳµÄ¹¦ÄÜÉÏ,ÔÚLinuxÖÐÎÒÃdzÆÕâЩ¹¦ÄÜΪϵͳµ÷Óá£
1.2ʲôÊÇϵͳµ÷ÓÃ
¡¡¡¡ÎÒÏ£ÍûÄãÄܹ»¶®,ÿ¸ö²Ù×÷ϵͳÔÚÄÚºËÖж¼ÓÐһЩ×îΪ»ù±¾µÄº¯Êý¸øÏµÍ³µÄÆäËû²Ù×÷µ÷ÓÃ.ÔÚ LinuxϵͳÖÐÕâЩº¯Êý¾Í±»³ÆÎªÏµÍ³µ÷ÓÃ(System Call).ËûÃÇ´ú±íÁËÒ»¸ö´ÓÓû§¼¶±ðµ½Äں˼¶±ðµÄת»».ÔÚÓû§¼¶±ðÖдò¿ªÒ»¸öÎļþÔÚÄں˼¶±ðÖÐÊÇͨ¹ýsys_openÕâ¸öϵͳµ÷ÓÃʵÏÖµÄ.ÔÚ /usr/include/sys/syscall.hÖÐÓÐÒ»¸öÍêÕûµÄϵͳµ÷ÓÃÁбí.ÏÂÃæµÄÁбíÊÇÎÒµÄsyscall.h
¡¡
¡¡#ifndef _SYS_SYSCALL_H ¡¡¡¡#define _SYS_SYSCALL_H ¡¡¡¡#define SYS_setup 0 ¡¡¡¡/* Ö»±»initʹÓÃ,ÓÃÀ´Æô¶¯ÏµÍ³µÄ*/ ¡¡¡¡#define SYS_exit 1 ¡¡¡¡#define SYS_fork 2 ¡¡¡¡#define SYS_read 3 ¡¡¡¡#define SYS_write 4 ¡¡¡¡#define SYS_open 5 ¡¡¡¡#define SYS_close 6 ¡¡¡¡#define SYS_waitpid 7 ¡¡¡¡#define SYS_creat 8 ¡¡¡¡#define SYS_link 9 ¡¡¡¡#define SYS_unlink 10 ¡¡¡¡#define SYS_execve 11 ¡¡¡¡#define SYS_chdir 12 ¡¡¡¡#define SYS_time 13 ¡¡¡¡#define SYS_prev_mknod 14 ¡¡¡¡#define SYS_chmod 15 ¡¡¡¡#define SYS_chown 16 ¡¡¡¡#define SYS_break 17 ¡¡¡¡#define SYS_oldstat 18 ¡¡¡¡#define SYS_lseek 19 ¡¡¡¡#define SYS_getpid 20 ¡¡¡¡#define SYS_mount 21 ¡¡¡¡#define SYS_umount 22 ¡¡¡¡#define SYS_setuid 23 ¡¡¡¡#define SYS_getuid 24 ¡¡¡¡#define SYS_stime 25 ¡¡¡¡#define SYS_ptrace 26 ¡¡¡¡#define SYS_alarm 27 ¡¡¡¡#define SYS_oldfstat 28 ¡¡¡¡#define SYS_pause 29 ¡¡¡¡#define SYS_utime 30 ¡¡¡¡#define SYS_stty 31 ¡¡¡¡#define SYS_gtty 32 ¡¡¡¡#define SYS_access 33 ¡¡¡¡#define SYS_nice 34 ¡¡¡¡#define SYS_ftime 35 ¡¡¡¡#define SYS_sync 36 ¡¡¡¡#define SYS_kill 37 ¡¡¡¡#define SYS_rename 38 ¡¡¡¡#define SYS_mkdir 39 ¡¡¡¡#define SYS_rmdir 40 ¡¡¡¡#define SYS_dup 41 ¡¡¡¡#define SYS_pipe 42 ¡¡¡¡#define SYS_times 43 ¡¡¡¡#define SYS_prof 44 ¡¡¡¡#define SYS_brk 45 ¡¡¡¡#define SYS_setgid 46 ¡¡¡¡#define SYS_getgid 47 ¡¡¡¡#define SYS_signal 48 ¡¡¡¡#define SYS_geteuid 49 ¡¡¡¡#define SYS_getegid 50 ¡¡¡¡#define SYS_acct 51 ¡¡¡¡#define SYS_phys 52 ¡¡¡¡#define SYS_lock 53 ¡¡¡¡#define SYS_ioctl 54 ¡¡¡¡#define SYS_fcntl 55 ¡¡¡¡#define SYS_mpx 56 ¡¡¡¡#define SYS_setpgid 57 ¡¡¡¡#define SYS_ulimit 58 ¡¡¡¡#define SYS_oldolduname 59 ¡¡¡¡#define SYS_umask 60 ¡¡¡¡#define SYS_chroot 61 ¡¡¡¡#define SYS_prev_ustat 62 ¡¡¡¡#define SYS_dup2 63 ¡¡¡¡#define SYS_getppid 64 ¡¡¡¡#define SYS_getpgrp 65 ¡¡¡¡#define SYS_setsid 66 ¡¡¡¡#define SYS_sigaction 67 ¡¡¡¡#define SYS_siggetmask 68 ¡¡¡¡#define SYS_sigsetmask 69 ¡¡¡¡#define SYS_setreuid 70 ¡¡¡¡#define SYS_setregid 71 ¡¡¡¡#define SYS_sigsuspend 72 ¡¡¡¡#define SYS_sigpending 73 ¡¡¡¡#define SYS_sethostname 74 ¡¡¡¡#define SYS_setrlimit 75 ¡¡¡¡#define SYS_getrlimit 76 ¡¡¡¡#define SYS_getrusage 77 ¡¡¡¡#define SYS_gettimeofday 78 ¡¡¡¡#define SYS_settimeofday 79 ¡¡¡¡#define SYS_getgroups 80 ¡¡¡¡#define SYS_setgroups 81 ¡¡¡¡#define SYS_select 82 ¡¡¡¡#define SYS_symlink 83 ¡¡¡¡#define SYS_oldlstat 84 ¡¡¡¡#define SYS_readlink 85 ¡¡¡¡#define SYS_uselib 86 ¡¡¡¡#define SYS_swapon 87 ¡¡¡¡#define SYS_reboot 88 ¡¡¡¡#define SYS_readdir 89 ¡¡¡¡#define SYS_mmap 90 ¡¡¡¡#define SYS_munmap 91 ¡¡¡¡#define SYS_truncate 92 ¡¡¡¡#define SYS_ftruncate 93 ¡¡¡¡#define SYS_fchmod 94 ¡¡¡¡#define SYS_fchown 95 ¡¡¡¡#define SYS_getpriority 96 ¡¡¡¡#define SYS_setpriority 97 ¡¡¡¡#define SYS_profil 98 ¡¡¡¡#define SYS_statfs 99 ¡¡¡¡#define SYS_fstatfs 100 ¡¡¡¡#define SYS_ioperm 101 ¡¡¡¡#define SYS_socketcall 102 ¡¡¡¡#define SYS_klog 103 ¡¡¡¡#define SYS_setitimer 104 ¡¡¡¡#define SYS_getitimer 105 ¡¡¡¡#define SYS_prev_stat 106 ¡¡¡¡#define SYS_prev_lstat 107 ¡¡¡¡#define SYS_prev_fstat 108 ¡¡¡¡#define SYS_olduname 109 ¡¡¡¡#define SYS_iopl 110 ¡¡¡¡#define SYS_vhangup 111 ¡¡¡¡#define SYS_idle 112 ¡¡¡¡#define SYS_vm86old 113 ¡¡¡¡#define SYS_wait4 114 ¡¡¡¡#define SYS_swapoff 115 ¡¡¡¡#define SYS_sysinfo 116 ¡¡¡¡#define SYS_ipc 117 ¡¡¡¡#define SYS_fsync 118 ¡¡¡¡#define SYS_sigreturn 119 ¡¡¡¡#define SYS_clone 120 ¡¡¡¡#define SYS_setdomainname 121 ¡¡¡¡#define SYS_uname 122 ¡¡¡¡#define SYS_modify_ldt 123 ¡¡¡¡#define SYS_adjtimex 124 ¡¡¡¡#define SYS_mprotect 125 ¡¡¡¡#define SYS_sigprocmask 126 ¡¡¡¡#define SYS_create_module 127 ¡¡¡¡#define SYS_init_module 128 ¡¡¡¡#define SYS_delete_module 129 ¡¡¡¡#define SYS_get_kernel_syms 130 ¡¡¡¡#define SYS_quotactl 131 ¡¡¡¡#define SYS_getpgid 132 ¡¡¡¡#define SYS_fchdir 133 ¡¡¡¡#define SYS_bdflush 134 ¡¡¡¡#define SYS_sysfs 135 ¡¡¡¡#define SYS_personality 136 ¡¡¡¡#define SYS_afs_syscall 137 ¡¡¡¡#define SYS_setfsuid 138 ¡¡¡¡#define SYS_setfsgid 139 ¡¡¡¡#define SYS__llseek 140 ¡¡¡¡#define SYS_getdents 141 ¡¡¡¡#define SYS__newselect 142 ¡¡¡¡#define SYS_flock 143 ¡¡¡¡#define SYS_syscall_flock SYS_flock ¡¡¡¡#define SYS_msync 144 ¡¡¡¡#define SYS_readv 145 ¡¡¡¡#define SYS_syscall_readv SYS_readv ¡¡¡¡#define SYS_writev 146 ¡¡¡¡#define SYS_syscall_writev SYS_writev ¡¡¡¡#define SYS_getsid 147 ¡¡¡¡#define SYS_fdatasync 148 ¡¡¡¡#define SYS__sysctl 149 ¡¡¡¡#define SYS_mlock 150 ¡¡¡¡#define SYS_munlock 151 ¡¡¡¡#define SYS_mlockall 152 ¡¡¡¡#define SYS_munlockall 153 ¡¡¡¡#define SYS_sched_setparam 154 ¡¡¡¡#define SYS_sched_getparam 155 ¡¡¡¡#define SYS_sched_setscheduler 156 ¡¡¡¡#define SYS_sched_getscheduler 157 ¡¡¡¡#define SYS_sched_yield 158 ¡¡¡¡#define SYS_sched_get_priority_max 159 ¡¡¡¡#define SYS_sched_get_priority_min 160 ¡¡¡¡#define SYS_sched_rr_get_interval 161 ¡¡¡¡#define SYS_nanosleep 162 ¡¡¡¡#define SYS_mremap 163 ¡¡¡¡#define SYS_setresuid 164 ¡¡¡¡#define SYS_getresuid 165 ¡¡¡¡#define SYS_vm86 166 ¡¡¡¡#define SYS_query_module 167 ¡¡¡¡#define SYS_poll 168 ¡¡¡¡#define SYS_syscall_poll SYS_poll ¡¡¡¡#endif /* */ |
¡¡¡¡Ã¿¸öϵͳµ÷Óö¼ÓÐÒ»¸öÔ¤¶¨ÒåµÄÊý×Ö(¼ûÉϱí),ÄÇʵ¼ÊÉÏÊÇÓÃÀ´½øÐÐÕâЩµ÷ÓõÄ.ÄÚºËͨ¹ýÖжÏ0x80À´¿ØÖÆÃ¿Ò»¸öϵͳµ÷ÓÃ.ÕâЩϵͳµ÷ÓõÄÊý×ÖÒÔ¼°ÈκβÎÊý¶¼½«±»·ÅÈëijЩ¼Ä´æÆ÷(eaxÓÃÀ´·ÅÄÇЩ´ú±íϵͳµ÷ÓõÄÊý×Ö,±ÈÈç˵)
ÄÇЩϵͳµ÷ÓõÄÊý×ÖÊÇÒ»¸ö±»³ÆÖ®Îªsys_call_table[]µÄÄÚºËÖеÄÊý×é½á¹¹µÄË÷ÒýÖµ.Õâ¸ö½á¹¹°Ñϵͳµ÷ÓõÄÊý×ÖÓ³É䵽ʵ¼ÊʹÓõĺ¯Êý.
¡¡¡¡OK,ÕâЩÊǼÌÐøÔĶÁËù±ØÐëµÄ×㹻֪ʶÁË.ÏÂÃæµÄ±íÁгöÁËÄÇЩ×îÓÐÒâ˼µÄϵͳµ÷ÓÃÒÔ¼°Ò»Ð©¼ò¶ÌµÄ×¢ÊÍ.ÏàÐÅÎÒ,ΪÁËÄãÄܹ»ÕæÕýµÄд³öÓÐÓõÄLKMÄã±ØÐëȷʵ¶®µÃÄÇЩϵͳµ÷
¡¡¡¡ÓÃÊÇÈçºÎ¹¤×÷µÄ.
¡¡¡¡ÏµÍ³µ÷ÓÃÁбí:
¡¡
¡¡int sys_brk(unsigned long new_brk); ¡¡¡¡¸Ä±äDS(Êý¾Ý¶Î)µÄ´óС->Õâ¸öϵͳµ÷ÓûáÔÚ1.4ÖÐÌÖÂÛ ¡¡¡¡int sys_fork(struct pt_regs regs); ¡¡¡¡ÖøÃûµÄfork()ËùÓõÄϵͳµ÷Óà ¡¡¡¡int sys_getuid () ¡¡¡¡int sys_setuid (uid_t uid) ¡¡¡¡ÓÃÓÚ¹ÜÀíUIDµÈµÈµÄϵͳµ÷Óà ¡¡¡¡int sys_get_kernel_sysms(struct kernel_sym *table) ¡¡¡¡ÓÃÓÚ´æÈ¡ÏµÍ³º¯Êý±íµÄϵͳµ÷ÓÃ(->1.3) ¡¡¡¡int sys_sethostname (char *name, int len); ¡¡¡¡int sys_gethostname (char *name, int len); ¡¡¡¡sys_sethostnameÊÇÓÃÀ´ÉèÖÃÖ÷»úÃû(hostname)µÄ,sys_gethostnameÊÇÓÃÀ´È¡µÄ ¡¡¡¡int sys_chdir (const char *path); ¡¡¡¡int sys_fchdir (unsigned int fd); ¡¡¡¡Á½¸öº¯Êý¶¼ÊÇÓÃÓÚÉèÖõ±Ç°µÄĿ¼µÄ(cd ...) ¡¡¡¡int sys_chmod (const char *filename, mode_t mode); ¡¡¡¡int sys_chown (const char *filename, mode_t mode); ¡¡¡¡int sys_fchmod (unsigned int fildes, mode_t mode); ¡¡¡¡int sys_fchown (unsigned int fildes, mode_t mode); ¡¡¡¡ÓÃÓÚ¹ÜÀíȨÏ޵ĺ¯Êý ¡¡¡¡int sys_chroot (const char *filename); ¡¡¡¡ÓÃÓÚÉèÖÃÔËÐнø³ÌµÄ¸ùĿ¼µÄ ¡¡¡¡int sys_execve (struct pt_regs regs); ¡¡¡¡·Ç³£ÖØÒªµÄϵͳµ÷ÓÃ->ÓÃÓÚÖ´ÐÐÒ»¸ö¿ÉÖ´ÐÐÎļþµÄ(pt_regsÊǶÑÕ»¼Ä´æÆ÷) ¡¡¡¡long sys_fcntl (unsigned int fd, unsigned int cmd, unsigned long arg); ¡¡¡¡¸Ä±äfd(´ò¿ªÎļþÃèÊö·û)µÄÊôÐ﵀ ¡¡¡¡int sym_link (const char *oldname, const char *newname); ¡¡¡¡int sys_unlink (const char *name); ¡¡¡¡ÓÃÓÚ¹ÜÀíÓ²/ÈíÁ´½ÓµÄº¯Êý ¡¡¡¡int sys_rename (const char *oldname, const char *newname); ¡¡¡¡ÓÃÓڸıäÎļþÃû ¡¡¡¡int sys_rmdir (const char* name); ¡¡¡¡int sys_mkdir (const *char filename, int mode); ¡¡¡¡ÓÃÓÚн¨ÒѾɾ³ýĿ¼ ¡¡¡¡int sys_open (const char *filename, int mode); ¡¡¡¡int sys_close (unsigned int fd); ¡¡¡¡ËùÓкʹò¿ªÎļþ(°üÀ¨Ð½¨)ÓйصIJÙ×÷,»¹ÓйرÕÎļþµÄ. ¡¡¡¡int sys_read (unsigned int fd, char *buf, unsigned int count); ¡¡¡¡int sys_write (unsigned int fd, char *buf, unsigned int count); ¡¡¡¡¶ÁдÎļþµÄϵͳµ÷Óà ¡¡¡¡int sys_getdents (unsigned int fd, struct dirent *dirent, unsigned int count); ¡¡¡¡ÓÃÓÚÈ¡µÃÎļþÁбíµÄϵͳµ÷ÓÃ(ls...ÃüÁî) ¡¡¡¡int sys_readlink (const char *path, char *buf, int bufsize); ¡¡¡¡¶Á·ûºÅÁ´½ÓµÄϵͳµ÷Óà ¡¡¡¡int sys_selectt (int n, fd_set *inp, fd_set *outp, fd_set *exp, struct timeval *tvp); ¡¡¡¡¶à·¸´ÓÃI/O²Ù×÷ ¡¡¡¡sys_socketcall (int call, unsigned long args); ¡¡¡¡socket º¯Êý ¡¡¡¡unsigned long sys_create_module (char *name, unsigned long size); ¡¡¡¡int sys_delete_module (char *name); ¡¡¡¡int sys_query_module (const char *name, int which, void *buf, size_t bufsize, ¡¡¡¡size_t *ret); |
¡¡¡¡ÓÃÓÚÄ£¿éµÄ¼ÓÔØ/Ð¶ÔØºÍ²éѯ.
¡¡¡¡ÒÔÉϾÍÊÇÎÒÈÏΪÈëÇÖÕß»á¸ÐÐËȤµÄϵͳµ÷ÓÃ.µ±È»Èç¹ûÒª»ñµÃϵͳµÄrootȨÄãÓпÉÄÜÐèÒªÒ»Ð©ÌØÊâµÄϵͳµ÷ÓÃ,µ«ÊÇ×÷Ϊһ¸öhackerËûºÜ¿ÉÄÜ»áÓµÓÐÒ»¸öÉÏÃæÁгöµÄ×î»ù±¾µÄÁбí.ÔÚµÚ¶þ²¿·ÖÖÐÄã»áÖªµÀÈçºÎÀûÓÃÕâЩϵͳµ÷ÓÃÀ´ÊµÏÖÄã×Ô¼ºµÄÄ¿µÄ¡£