LinuxÍø¹Üѧϰ±Ê¼Ç£¨12£©¹ØÓÚLinuxµÄÄں˰²È«
LinuxÄÚºËÊÇ×÷ΪMonolithic architecture (µ¥ÄÚºËÌåϵ½á¹¹) ¶øÊµÏֵģ¬ÎªÁË»ñµÃ Microkernel architecture (΢ÄÚºËÌåϵ½á¹¹) ´øÀ´µÄ¿ÉÀ©Õ¹ÐԺͿÉά»¤ÐÔ£¬Linux ÒýÈëÁËÄ£¿é (module) »úÖÆ£¬(±È½Ï׼ȷµÄ˵·¨ÊÇ Loadable Kernel Module, ¿É×°ÔØÄÚºËÄ£¿é)£¬½å´ËÀ´±£Ö¤Äں˵Ľô´ÕÐÔºÍLinux±¾Éí¹ÌÓеĵ¥Ò»Ìåϵ½á¹¹µÄÓŵ㗗ÉÏÏÂÎÄÇл»Ëٶȿ졣 ÔÚLinuxÖУ¬Óû§(ͨ³£ÐèÒªrootȨÏÞ)ͨ¹ýmodutilsÈí¼þ°üÖÐÌṩµÄ¹¤¾ß£¬¶¯Ì¬µØ½«Ä£¿é(ÈçÍøÂçÇý¶¯µÈ)²åÈë¡¢ÒÆ³öÄںˡ£ÕâÑù£¬Äں˵ŦÄÜ¿ÉÒÔ¶¯Ì¬µØÌí¼ÓºÍɾ³ý£¬È´²»ÐèҪÿ´Î¶¼¾¹ýÈß³¤µÄ¹Ø»ú/ÖØÆô¹ý³Ì¡£ÒòΪģ¿éÔËÐеĻ·¾³ÊÇÄںˣ¬Òò¶øËü¾ßÓÐÄÚºËÌØÈ¨£¬Ä£¿é±à³ÌÒ²¾ÍÊÇÄں˱à³Ì£¬ËüÊÇLinux Kernel Hacking µÄÖ÷Òª¹¤¾ß¡£ÏÂÃæ£¬½²ÊöÔÚLinuxÏÂÈçºÎͨ¹ýmodule À´À¹½ØÏµÍ³µ÷Óã¬ÒÔ¼°Kernel Hacking µÄһЩ·À·¶ÊֶΡ£ Linuxͨ¹ýint 0x80 ÈíÖжÏʵÏÖϵͳµ÷Óá£ÏµÍ³µ÷ÓÃÁбíÔÚLinux×Ô¾Ùʱͨ¹ýinit_IRQ( ) µ÷Óúê set_intr_gate ³õʼ»¯¡£µ±ÏµÍ³µ÷Ó÷¢Éúʱ£¬Äں˼ì²éϵͳµ÷ÓõÄÓÐЧÐÔ£¬È»ºó½«¿ØÖÆÈ¨×ª¸øÊµ¼ÊµÄϵͳµ÷ÓôúÂ롣ϵͳµ÷Óñí sys_call_table[] ¿ÉÒÔÔÚÎļþ entry.S ÖÐÕÒµ½¡£Ëü¿´ÆðÀ´Ó¦¸ÃÈçÏÂËùʾ£º ¡ ¡ ENTRY (sys_call_table) .long SYMBOL_NAME (sys_ni_syscall) /* ¡¡ */ .long SYMBOL_NAME (sys_exit) .long SYMBOL_NAME (sys_fork) .long SYMBOL_NAME (sys_read) ¡ ¡ Îļþunistd.h Ϊÿ¸öϵͳµ÷Óù涨ÁËΨһµÄ±àºÅ£¬Ëü¿´ÆðÀ´Ó¦¸ÃÈçÏÂËùʾ£º ¡ ¡ #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 ¡ ¡ ²»ÄÑ¿´³ö£¬Ã¿¸öϵͳµ÷ÓÃËù¶ÔÓ¦µÄ±àºÅÕýÊǸÃϵͳµ÷ÓÃÔÚÖ¸Ïòº¯ÊýµÄÖ¸ÕëÊý×ésys_call_table[]ÖеÄϱꡣÄں˼ì²é%eaxµÄÓÐЧÐÔ£¬sys_call_table[%eax]±ãÊÇÓû§ÒªÇóµÄϵͳµ÷ÓõÄÈë¿ÚÖ¸Õë¡£ÄÇô£¬ÔõÑù²ÅÄÜÀ¹½ØÏµÍ³µ÷ÓÃÄØ£¿ºÜ¼òµ¥£¬Ö»Òª½«sys_call_table[]ÖжÔÓ¦µÄÈë¿ÚÖ¸ÕëÌæ»»³ÉÎÒÃÇ×Ô¼ºµÄº¯ÊýÖ¸Õë¼´¿É¡£ ºÃÁË£¬ÓÐÁËÉÏÊö֪ʶ£¬ÏÖÔÚ¿ÉÒÔ½øÐбà³ÌÁË¡£×÷Ϊ×î¼òµ¥µÄÀý×Ó£¬ÎÒÃÇ¿ÉÒÔÊÔ×ÅÀ¹½Ømkdir()ϵͳµ÷Óᣠ/* *hack_mkdir.c David 2003-4-19 *It shows how to intercept a system call. */ #include /*±àÒëÄ£¿é±ØÐèµÄÍ·Îļþ*/ #include #include extern void *sys_call_table []; int (*origin_mkdir) (const char *); /*ÓÃÓÚ±£´æ¾ÉµÄϵͳµ÷ÓÃ*/ int hacked_mkdir(const char *pathname) /*еÄϵͳµ÷ÓÃ*/ { return 0; } int init_module() /*Ä£¿éÈë¿Úµ
Ïà¹ØÎĵµ£º
bootmÃüÁîÊÇÓÃÀ´Òýµ¼¾¹ýu-bootµÄ¹¤¾ßmkimage´ò°üºóµÄkernel imageµÄ£¬Ê²Ã´½Ð×ö¾¹ýu-bootµÄ¹¤¾ßmkimage´ò°üºóµÄkernel image£¬Õâ¸ö¾ÍÒª¿´mkimageµÄ´úÂ룬¿´¿´Ëü×öÁËЩʲô£¬ËäÈ»ÎÒºÜÏ£Íû´ó¼Ò²»ÒªÍµÀÁ£¬ÈÏÕæµØÈ¥¿´¿´£¬µ«ÊÇÎÒÖªµÀ»¹ÊÇÓкܶàÈËÀÁµÃÈ¥×öÕâ¼þ£¬ÄÇôÎÒ¾Íj½«·ÖÎömkimage´úÂëºóµÃµ½µÄ×Ü½á¸æËß´ó¼Ò£¬mkimage×öÁËÐ ......
LinuxÖÐwaitÓ÷¨£º
ϵͳÖеĽ©Ê¬½ø³Ì¶¼ÒªÓÉwaitϵͳµ÷ÓÃÀ´»ØÊÕ¡£
º¯ÊýÔÐÍ£º
#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int *status);
½ø³ÌÒ»µ©µ÷ÓÃÁËwait¾ÍÁ¢¼´×èÈû×Ô¼º£¬ÓÉwait×Ô¶¯·ÖÎöÊÇ·ñµ±Ç°½ø³ÌµÄij¸ö×Ó½ø³ÌÒѾÍ˳ö£¬Èç¹ûÈÃËüÕÒµ½ÁËÕâÑùÒ»¸öÒѾ±ä³É½©Ê¬µÄ×Ó½ø³Ì£¬wait¾Í»áÊÕ¼¯Õâ ......
MTD(memory technology deviceÄÚ´æ¼¼ÊõÉ豸)ÊÇÓÃÓÚ·ÃÎÊmemoryÉ豸£¨ROM¡¢flash£©µÄLinuxµÄ×Óϵͳ¡£MTDµÄÖ÷ҪĿµÄÊÇΪÁËʹеÄmemoryÉ豸µÄÇý¶¯¸ü¼Ó¼òµ¥£¬Îª´ËËüÔÚÓ²¼þºÍÉϲãÖ®¼äÌṩÁËÒ»¸ö³éÏóµÄ½Ó¿Ú¡£MTDµÄËùÓÐÔ´´úÂëÔÚ/drivers/mtd×ÓĿ¼Ï¡£ÎÒ½«CFI½Ó¿ÚµÄMTDÉ豸·ÖΪËIJ㣨´ÓÉ豸½ÚµãÖ±µ½µ×²ãÓ²¼þÇý¶¯£©£¬ÕâËIJã´ÓÉϵ½Ï ......
ÏµÍ³ÖØÆôºó·¢ÏÖ£¬ApacheÆô¶¯Ê§°Ü
±¨´íÈçÏ£º
# ./apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
no listening sockets available, shutting down
Unable to open logs
²éÁËÏÂ80
#netstat -Inp|grep 80
tcp 0 &n ......
ºÍÎÒÃÇÌÖÂÛµÄÖ÷ÌâÔ½À´Ô½½üÁË¡£¡°ÄÐÅÂÈë´íÐУ¬Å®Å¼޴íÀÉ¡±£¬ÎÒ¶ÔÕâ¾ä»°µÄÌå»áÔ½À´Ô½Éî¿ÌÁË¡£×î½üÓиöÃñÉúÒøÐеÄÀÏ×ܺÍÎÒ̽ÌÖÁËÕâ¸öÎÊÌ⣬ºÁÎÞÒÉÎÊ£¬ÔÚÒøÐÐÕâ¸öÐÐÒµ¿Ï¶¨±ÈÒ»°ãµÄÐÐÒµÕõÇ®¡£ÓÚÊÇ£¬×ÔÈ»Çе½ÎÒÃǵϰÌ⣺LinuxÕâ¸öÐÐÒµÔõôÑù£¿ÕõÇ®Âð£¿ÒÔºó¿ªÔ´ÁËÎÒ»¹Óз¹³ÔÂð£¿×î½ü£¬ÎÒÄõ½ÁËÒ»·ÝLinuxµÄÖ°Òµ±¨¸æ¡£µ÷²é ......