°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¶¾»¯ÕûΪÁ㣬²ð·Ö³ÉÈô¸É¿é£¬²åÈëËÞÖ÷ÎļþÖÐÈ¥¡£
×îÒýÈËעĿµÄÊÇÌØÕ÷¿ÉÄÜÊÇ¡°CIH¡±²¡¶¾ÆÆ»µÓ²¼þµÄÄÜÁ¦£¬ËüÀûÓÃÄ¿Ç°Ðí¶àBIOSоƬ¿ª·ÅÁË¿ÉÖØдµÄÌØÐÔ£¬Ïò¼ÆËã»úÖ÷°åµÄBIOS¶Ë¿ÚдÈëÂÒÂ룬¿ª´´Á˲¡¶¾Ö±½Ó½ø¹¥¼ÆËã»úÖ÷°åоƬµÄÏÈÀý¡£¿ÉÒÔ˵CIH²¡¶¾ÌṩÁËÒ»ÖÖȫеIJ¡¶¾³ÌÐò·½Ê½ºÍ²¡¶¾·¢Õ¹·½Ïò¡£ÏÂÃæ¶Ô¸Ã²¡¶¾×÷½øÒ»²½µÄÆÊÎö£¬¸Ã²¡¶¾³ÌÐòÓÉÈý²¿·Ö×é³É¡£
CIH²¡¶¾µÄפÁô£¨³õʼ»¯£©
µ±ÔËÐдøÓиò¡¶¾µÄ¡£EXEʱ£¬ÓÉÓڸò¡¶¾ÐÞ¸ÄÁ˸ÃÎļþ³ÌÐòµÄÈë¿ÚµØÖ·£¨Address¡¡of¡¡EntryPoint£©£¬Ê×Ïȵ÷ÈëÄÚ´æÖ´ÐеÄÊDz¡¶¾µÄפÁô³ÌÐò£¬×¤Áô³ÌÐò³¤¶ÈΪ184×Ö½Ú£¬ÆäפÁôÖ÷Òª¹ý³ÌÈçÏ£º
ÓÃSIDTÖ¸ÁîÈ¡µÃIDT¡¡base¡¡address£¨ÖжÏÃèÊö·û±í»ùµØÖ·£©£¬È»ºó°ÑIDTµÄINT¡¡3¡¡µÄÈë¿ÚµØÖ·¸ÄΪָÏòCIH×Ô¼ºµÄINT3³ÌÐòÈë¿Ú²¿·Ö£»
Ö´ÐÐINT¡¡3Ö¸Á½øÈëCIH×ÔÉíµÄINT¡¡3Èë¿Ú³ÌÐò£¬ÕâÑù£¬CIH²¡¶¾¾Í¿ÉÒÔ»ñµÃWindows×î¸ß¼¶±ðµÄȨÏÞ£¨Ring¡¡0¼¶£©£¬¿ÉÔÚWindowsµÄÄÚºËÖ´Ðи÷ÖÖ²Ù×÷£¨ÈçÖÕֹϵͳÔËÐУ¬Ö±½Ó¶ÔÄÚ´æ¶Áд¡¢½Ø»ñ¸÷ÖÖÖжϡ¢¿ØÖÆI/O¶Ë¿ÚµÈ£¬ÕâЩ²Ù×÷ÔÚÓ¦ÓóÌÐò²ãRing¡¡3¼¶ÊÇÊܵ½ÑϸñÏÞÖƵģ©¡£²¡¶¾ÔÚÕâ¶Î³ÌÐòÖÐÊ×Ïȼì²éµ÷ÊԼĴæÆ÷DR0µÄÖµÊÇ·ñΪ0£¬ÓÃÒÔÅжÏÏÈÇ°ÊÇ·ñÓÐCIH²¡¶¾ÒѾפÁô¡£
Èç¹ûDR0µÄÖµ²»Îª0£¬Ôò±íʾCIH²¡¶¾³ÌʽÒÑפÁô£¬²¡¶¾³ÌÐò»Ö¸´ÔÏȵÄINT¡¡3Èë¿Ú£¬È»ºóÕý³£Í˳öINT3£¬Ìøµ½¹ý³Ì9£»
Èç¹ûDR0ֵΪ0£¬ÔòCIH²¡¶¾½«³¢ÊÔ½øÐÐפÁô¡£Ê×ÏȽ«µ±Ç°EBX¼Ä´æÆ÷µÄÖµ¸³¸øDR0¼Ä´æÆ÷£¬ÒÔÉú³ÉפÁô±ê¼Ç£¬È»ºóµ÷ÓÃINT¡¡20Öжϣ¬Ê¹ÓÃVxD¡¡call¡¡Page¡¡Allocateϵͳµ÷Óã¬ÇëÇóϵͳ·ÖÅä2¸öPAGE´óСµÄWindowsϵͳÄڴ棨system¡¡memory£©£¬WindowsϵͳÄÚ´æµØÖ··¶Î§ÎªC0000000h¡«FFFFFFFFh£¬ËüÊÇÓÃÀ´´æ·ÅËùÓеÄÐéÄâÇý¶¯³ÌÐòµÄÄÚ´æÇøÓò£¬Èç¹û³ÌÐòÏ볤ÆÚפÁôÔÚÄÚ´æÖУ¬Ôò±ØÐëÉêÇëµ½´ËÇø¶ÎÄÚµÄÄÚ´æ¡£
Èç¹ûÄÚ´æÉêÇë³É¹¦£¬Ôò´Ó±»¸ÐȾÎļþÖн«ÔÏȷֳɶà¿éµÄ²¡¶¾´úÂëÊÕ¼¯ÆðÀ´£¬²¢½øÐÐ×éºÏºó·Åµ½ÉêÇëµ½µÄÄÚ´æ¿Õ¼äÖС£
Ôٴε÷ÓÃINT¡¡3ÖжϽøÈëCIH²¡¶¾ÌåµÄINT¡¡3Èë¿Ú³ÌÐò£¬µ÷ÓÃINT20À´Íê³Éµ÷ÓÃÒ»¸öIFSMgr_InstallFileSystemApiHookµÄ×Ó³ÌÐò£¬ÔÚWindowsÄÚºËÖÐÎļþϵͳ´¦Àíº¯ÊýÖйҽӹ³×Ó£¬ÒÔ½ØÈ¡Îļþµ÷ÓõIJÙ×÷£¬ÕâÑùÒ»µ©ÏµÍ³³öÏÖÒªÇó¿ªÆôÎļþµÄµ÷Óã¬ÔòCIH²¡¶¾µÄ´«È¾²¿·Ö³ÌÐò¾Í»áÔÚµÚһʱ¼ä½Ø»ñ´ËÎļþ£»
½«Í¬Ê±»ñÈ¡µÄÊÓ´°²Ù×÷ϵͳĬÈϵÄIFSMgr_Ring0_FileIO£¨ºËÐÄÎļþÊäÈë/Êä³ö£©·þÎñ³ÌÐòµÄÈë¿ÚµØÖ·±£ÁôÔÚDR0¼Ä´æÆ÷ÖУ¬ÒÔ±ãÓÚCIH²¡¶¾µ÷Óá£
»Ö¸´ÔÏȵÄIDTÖжϱíÖеÄINT¡¡3Èë¿Ú£»Í˳öINT¡¡3£»
¸ù¾Ý²¡¶¾³ÌÐòÄÚÒþ²ØµÄÔÎļþµÄÕý³£Èë¿ÚµØÖ·£¬Ìøµ½ÔÎļþÕý³£Èë¿Ú£¬Ö´ÐÐÕý³£³ÌÐò¡£
²¡¶¾µÄ¸ÐȾ
CIH²¡¶¾µÄ´«È¾²¿·Öʵ¼ÊÉÏÊDz¡¶¾ÔÚפÁôÄÚ´æ¹ý³ÌÖе÷ÓÃWindows¡¡Äں˵ײ㺯ÊýIFSMgr_InstallFileSystemApiHookº¯Êý¹Ò½Ó¹³×ÓʱָÕëָʾµÄÄǶγÌÐò¡£Õâ¶Î³ÌÐò¹²586×Ö½Ú£¬¸ÐȾ¹ý³ÌÈçÏ£º
ÎļþµÄ½Ø»ñ
ÿµ±ÏµÍ³³öÏÖÒªÇó¿ªÆôÎļþµÄµ÷ÓÃʱ£¬×¤ÁôÄÚ´æµÄCIH²¡¶¾¾Í½Ø»ñ¸ÃÎļþ¡£²¡¶¾µ÷ÓÃINT20µÄVxD¡¡call¡¡UniToBCSPathϵͳ¹¦Äܵ÷ÓÃÈ¡»Ø¸ÃÎļþµÄÃûºÍ·¾¶¡£
EXEÎļþµÄÅжÏ
¶Ô¸ÃÎļþÃû½øÐзÖÎö£¬ÈôÎļþÀ©Õ¹Ãû²»Îª¡¨¡£EXE¡¨£¬²»´«È¾£¬À뿪²¡¶¾³ÌÐò£¬Ìø»Øµ½WindowsÄں˵ÄÕý³£Îļþ´¦Àí³ÌÐòÉÏ¡£
PE¸ñʽ¡£EXEÅбð
Ä¿Ç°£¬ÔÚWindows¡¡95/98ÒÔ¼°Windows¡¡NT£¬¿ÉÖ´ÐÐÎļþ¡£EXE²ÉÓõÄÊÇPE¸ñʽ¡£PE¸ñʽÎļþ²»Í¬ÓÚMS¡DOSÎļþ¸ñʽºÍWIN¡¡3¡£X£¨NE¸ñʽ£¬Windows¡¡and¡¡OS/2¡¡Windows¡¡3¡£1¡¡execution¡¡File¡¡Format£©¡£PE¸ñʽÎļþÓÉÎļþÍ·ºÍ´úÂëÇø£¨¡£text¡¡Section£©¡¢Êý¾ÝÇø£¨¡£data¡¡Section£©¡¢Ö»¶ÁÊý¾ÝÇø£¨¡£rdata¡¡Section£©¡¢×ÊÔ´ÐÅÏ¢Çø£¨¡£rsrc¡¡Section£©µÈÎļþʵÌ岿·Ö×é³É¡£ÆäÖÐÎļþÍ·ÓÖÓÉMS¡DOS¡¡MZÍ·¡¢MS¡DOSʵģʽ¶Ì³ÌÐò¡¢PE¡¡Îļþ±êʶ£¨Signature£©¡¢PEÎļþÍ·¡¢PEÎļþ¿ÉÑ¡Í·ÒÔ¼°¸÷¸öSectionsÍ·×é³É¡£
µ±²¡¶¾È·ÈϸÃÎļþÊÇPE¡¡¸ñʽµÄ¡£EXEÎļþºó£¬´ò¿ª¸ÃÎļþ£¬È¡³ö¸ÃÎļþµÄ¡¡PEÎļþ±êʶ·û£¨Signature£©£¬½øÐзÖÎö£¬ÈôSignature=¡¨00455000¡¨£¨00PE00£©£¬Ôò±íÃ÷¸ÃÎļþÊÇPE¸ñʽµÄ¿ÉÖ´ÐÐÎļþ£¬ÇÒÉÐδ¸ÐȾ£¬Ìøµ½¹ý³Ì4£¬¶ÔÆä¸ÐȾ£»·ñÔò£¬ÈÏΪÊÇÒѸÐȾµÄPE¸ñʽÎļþ»ò¸ÃÎļþÊÇÆäËü¸ñʽµÄ¿ÉÖ´ÐÐÎļþ£¬ÈçMS¡DOS»òWIN¡¡3¡£X¡¡NE¸ñʽ£¬²»½øÐиÐȾ£¬¶øÖ±½ÓÌøµ½²¡¶¾·¢×÷Ä£¿éÉÏÖ´ÐУ»
²¡¶¾µÄ¼ÄÉú·½·¨£¬ÏÂͼÊDz¡¶¾¸ÐȾPEÎļþÇ°ºóµÄʾÒâͼ£º
¸ÐȾCIH²¡¶¾Ö®Ç° ¸ÐȾCIH²¡¶¾Ö®ºó
¡¡¡¡¡¡¡¡ÒÔÍùµÄÎļþÐͲ¡¶¾£¬Í¨³£Êǽ«²¡¶¾³ÌÐò×·¼Óµ½Õý³£ÎļþµÄºóÃ棬ͨ¹ýÐ޸ijÌÐòÊ×Ö¸Õ룬À´Ö´Ðв¡¶¾³ÌÐòµÄ¡£ÕâÑù£¬ÊܸÐȾµÄÎļþµÄ³¤¶È»áÔö¼Ó¡£CIH²¡¶¾Ôò²»ÊÇ¡£ËüÀûÓÃÁËPE¸ñʽÎļþµÄÎļþÍ·ºÍ¸÷¸öÇø£¨Section£©¶¼¿ÉÄÜ´æÔÚ×ÔÓÉ¿Õ¼äËéƬÕâÒ»ÌØÐÔ£¬½«²¡¶¾³ÌÐò²ð³ÉÈô¸É²»µÈµÄ¿é£¬¼û·ì²åÕ룬²åµ½¸ÐȾÎļþµÄ²»Í¬µÄÇø£¨Section£©ÄÚ¡£
¡¡¡¡¡¡¡¡CIH²¡¶¾µÄÊ׿é³ÌÐòÊDzåÔÚPEÎļþÍ·µÄ×ÔÓÉ¿Õ¼äÄڵġ£²¡¶¾Ê×ÏÈ´ÓÎļþµÄµÚ134×Ö½Ú´¦¶ÁÈë82¸ö×Ö½Ú£¬Õâ82¸ö×Ö½Ú°üº¬Á˸ÃÎļþµÄ³ÌÐòÈë¿ÚµØÖ·£¨address¡¡of¡¡EntryPoint£©£»ÎļþµÄ·ÖÇøÊý£¨Number¡¡of¡¡Section£©£¬µÚÒ»¸öSection¡¡header¡¡Ê×Ö·ÒÔ¼°Õû¸öÎļþÍ·´óС£¨Size¡¡of¡¡Headers=MS¡¡header£«PE¡¡file¡¡header£«PE¡¡optional¡¡header£«PE¡¡section¡¡headers£«×ÔÓɿռ䣩µÈ²ÎÊý¡£ÒÔ¼ÆË㲡¶¾Ê׿é´æ·ÅµÄλÖúʹóС¡£
¡¡¡¡¡¡¡¡Í¨³£PE¸ñʽÎļþÍ·µÄ´óСΪ1024×Ö½Ú£¬¶øMZ¡¡£¨DOS¿ÉÖ´ÐÐÎļþÍ·£©Îª128×Ö½Ú£¬PEÎļþÍ·£¨°üÀ¨PEÎļþµÄ±êÖ¾£©Îª24×Ö½Ú£¬PE¿ÉÑ¡ÎļþͷΪ224×Ö½Ú£¬ÒÔÉϹ²376×Ö½Ú£¬¡°³ÌÐò¶ÎÍ·¡±ÇøÓò´óСÊǸù¾Ý³ÌÐò¶ÎµÄÊýÁ¿À´È·¶¨µÄ£¬µ«Ã¿¸ö³ÌÐò¶ÎÍ·µÄ´óСÊǹ̶¨µÄ£¬Îª40×Ö½Ú¡£Ò»°ãÇé¿öÏ£¬Ò»¸öPE¿ÉÖ´ÐÐÎļþÓÐ5µ½6¸ö¶Î£¬¼´¡£text¶Î¡¢¡£bbs¶Î¡¢¡£data¶Î¡¢idata¶Î¡¢rsrc¶ÎÒÔ¼°reloc¶Î¡£ÕâÑù¼ÆËãÏÂÀ´£¬Õû¸öÎļþÍ·ÓÐ408~448×Ö½ÚµÄ×ÔÓÉ¿Õ¼äÌṩ¸ø²¡¶¾Ê¹Óá£
ÔÚPE¸ñʽÎļþÍ·µÄ×ÔÓÉ¿Õ¼äÀCIH²¡¶¾Ê×ÏÈÕ¼ÓÃÁË£¨SectionÊý£«1£©*8¸ö×Ö½ÚÊýµÄ¿Õ¼ä£¨±¾ÎijÆΪ²¡¶¾¿éÁ´±íÖ¸ÕëÇø£©£¬ÓÃÓÚ´æ·Åÿ¸ö²¡¶¾¿éµÄ³¤¶È£¨Ã¿¿é4×Ö½Ú£©ºÍ¿é³ÌÐòÔÚÎļþÀïµÄÊ×µØÖ·£¨Ã¿¿é4×Ö½Ú£©¡£È»ºó½«¼ÆËã³öµÄ¿É¼Ä´æÔÚÎļþÍ·ÄڵIJ¡¶¾Ê׿é×Ö½ÚÊý£¬ËÍÈ벡¶¾Á´±íÖ¸ÕëÇø£»ÐÞ¸ÄPEÎļþÍ·£¬Óò¡¶¾Èë¿ÚµØÖ·Ìæ»»PEÎļþÍ·ÔÎļþ³ÌÐòÈë¿ÚµØÖ·£¬¶ø½«ÔÎļþµÄÈë¿ÚµØÖ·±£´æÔÚ²¡¶¾³ÌÐòµÄµÚ94×Ö½ÚÄÚ£¬ÒÔ¹©²¡¶¾Ö´ÐÐÍêºó»Øµ½Õý³£ÎļþÖ´ÐÐÉÏÀ´¡£
ÓÉÓÚ²¡¶¾µÄÊ׿鲿·Ö³ýÁ˲¡¶¾¿éÁ´±íÖ¸ÕëÇøÍâ±ØÐë°üº¬²¡¶¾µÄ184×Ö½ÚפÁô³ÌÐò£¬ÈôÎļþÍ·µÄ×ÔÓɿռ䲻×㣬²¡¶¾²»»á¶Ô¸ÃÎļþ½øÐиÐȾ¡£Ö»Êǽ«¸ÃÎļþÖÃÉÏÒѸÐȾ±êÖ¾¡£
²¡¶¾ÆäÓà¿éµÄ¼ÄÉú¼ÆËã
¡¡¡¡¡¡¡¡Ê£ÓàµÄ²¡¶¾´úÂëÊÇ·Ö¿éÒÀ´Î²åÈëµ½¸÷¶ÎÀïµÄ×ÔÓÉ¿Õ¼äÀïµÄ¡£
¡¡¡¡¡¡¡¡ÒªÈ·¶¨¸ÃÇø£¨¶Î£©ÊÇ·ñÓÐ×ÔÓɿռ䣬¿Éͨ¹ý²é¿´¡°¶ÎÍ·¡±µÄ²ÎÊýÈ·¶¨¡£¡°³ÌÐò¶ÎÍ·¡±ÇøÓòÊǽô¸úÔÚPE¿ÉÑ¡Í·ÇøÓòºóÃ档ÿ¸ö¡°³ÌÐò¶ÎÍ·¡±¹²Õ¼40¸ö×Ö½Ú£¬ÓÉName£¨³ÌÐò¶ÎÃû£©¡¢VirtualSize£¨³ÌÐò¶ÎÒÑʹÓôóС£©¡¢RVA£¨³ÌÐò¶ÎµÄÐéÄâµØÖ·£©¡¢PhysicalSize£¨³ÌÐò¶ÎÎïÀí´óС£©¡¢PhysicalOffset£¨³ÌÐò¶ÎÔÚÎļþÖеÄÆ«ÒÆÁ¿£©ºÍFlags£¨±êÖ¾£©×é³É£¬Ïêϸ½á¹¹¾Í²»ÃèÊöÁË¡£
¡¡¡¡¡¡¡¡²¡¶¾½«Õû¸ö¡°³ÌÐò¶ÎÍ·¡±ÇøÓò¶ÁÈëÄڴ棬ȡµÚÒ»¸ö¡°³ÌÐò¶ÎÍ·¡±£¬¼ÆËã³ö¸Ã³ÌÐò¶ÎµÄ×ÔÓɿռ䣨³ÌÐò¶ÎÎïÀí´óС¡¡¡³ÌÐò¶ÎÒÑʹÓôóС£©£¬ÒÔÈ·¶¨¿É´æ·Åµ½¸Ã³ÌÐò¶ÎµÄ²¡¶¾¿é×Ö½ÚÊý¡£¼ÆËã³ö²¡¶¾¿éÔÚ¸ÃÇøµÄÎïÀí´æ·ÅλÖ㨱¾³ÌÐò¶ÎÔÚÎļþÖеÄÆ«ÒÆÁ¿¡¡£«±¾³ÌÐò¶ÎÒÑʹÓôóС£©¡£¼ÆËã³ö²¡¶¾¿éÔÚ¸ÃÎļþµÄÂß¼´æ·ÅλÖã¨=±¾³ÌÐò¶ÎÒÑʹÓôóС¡¡£«¡¡ÐéÄâµØÖ·A¡¡£«¡¡PEÎļþµÄÏà¶Ô»ùµØÖ·£©£»Ð޸ijÌÐò¶ÎÒÑʹÓôóСΪ¡¡£¨²¡¶¾³¤¶È¡¡£«¡¡ÔÀ´µÄ³ÌÐò¶ÎÒÑʹÓôóС£©¡£Ð޸ıê־룬ÖøÃÇøΪÒѳõʼ»¯Êý¾ÝÇøºÍ¿É¶Á±êÖ¾£»½«¸ÃÇøµÄ²¡¶¾¿é³¤¶ÈºÍÂß¼Ö¸Õë²ÎÊýдÈ벡¶¾Á´±íÖ¸ÕëÇøÏàÓ¦ÇøÓò£»Çó³ö²¡¶¾Ê£Ó೤¶È£¬²¢È¡ÏÂÒ»¸ö¡°³ÌÐò¶ÎÍ·¡±¡£·´¸´Ç°ÃæµÄ²Ù×÷£¬Ö±µ½²¡¶¾È«²¿·ÅÈëΪֹ¡£
дÈ벡¶¾
¡¡¡¡¡¡¡¡²¡¶¾³ÌÐòÔÚÇ°ÃæÖ»ÊǼÆËã³öÁ˲¡¶¾µÄ·Ö¿é¡¢³¤¶ÈºÍ²åÈëµ½ÎļþµÄλÖõȲÎÊý£¬½«ÕâЩ²ÎÊýÓÃPUSHÖ¸ÁîѹÈëÕ»ÖС£ÔÚ¼ÆËãÍêËùÓв¡¶¾´æ·ÅλÖú󣬲ŴÓÕ»ÖÐPOP³ö½øÐÐдÅ̲Ù×÷¡£Ð´Å̵IJ½ÖèÈçÏ£º
¡¡¡¡¡¡¡¡ÒÔÄæÐò½«¸÷¿é²¡¶¾Ð´ÈëÎļþ¸÷¶Î£¨Section£©ÏàÓ¦µÄ×Ô