Đồ án Tìm hiểu Virus và cách phòng chống

®å ¸n tèt nghiÖp  
Lêi nãi ®Çu  
Virus tin häc hiÖn nay ®ang lµ nçi b¨n kho¨n lo l¾ng cña  
nh÷ng ng-êi lµm c«ng t¸c tin häc, lµ nçi lo sî cña nh÷ng ng-êi sö  
dông khi m¸y tÝnh cña m×nh bÞ nhiÔm virus. Khi m¸y tÝnh cña  
m×nh bÞ nhiÔm virus, hä chØ biÕt tr«ng chê vµo c¸c phÇn mÒm diÖt  
virus hiÖn cã trªn thÞ tr-êng, trong tr-êng hîp c¸c phÇn mÒm nµy  
kh«ng ph¸t hiÖn hoÆc kh«ng tiªu diÖt ®-îc, hä bÞ l©m ph¶i t×nh  
huèng rÊt khã kh¨n, kh«ng biÕt ph¶i lµm nh- thÕ nµo.  
V× lý do ®ã, cã mét c¸ch nh×n nhËn c¬ b¶n vÒ hÖ thèng, c¬  
chÕ vµ c¸c nguyªn t¾c ho¹t ®éng cña virus tin häc lµ cÇn thiÕt.  
Trªn c¬ së ®ã, cã mét c¸ch nh×n ®óng ®¾n vÒ virus tin häc trong  
viÖc phßng chèng, kiÓm tra, ch÷a trÞ còng nh- c¸ch ph©n tÝch,  
nghiªn cøu mét virus míi xuÊt hiÖn.  
§å ¸n nµy gi¶i quyÕt c¸c vÊn ®Ò võa nªu ra ë trªn. Nã ®-îc  
chia lµm 4 ch-¬ng:  
Ch-¬ng I. §Æt vÊn ®Ò.  
Ch-¬ng II. Tæng quan vÒ virus vµ hÖ thèng.  
Ch-¬ng III. Kh¶o s¸t virus One Half.  
Ch-¬ng IV. ThiÕt kÕ ch-¬ng tr×nh chèng virus.  
PhÇn phô lôc cuèi ®å ¸n liÖt kª toµn bé ch-¬ng tr×nh nguån  
cña ch-¬ng tr×nh kiÓm tra vµ kh«i phôc ®èi víi virus One Half.  
Trong qu¸ tr×nh x©y dùng ®å ¸n nµy, t«i ®· nhËn ®-îc nhiÒu  
sù gióp ®ì cña c¸c thÇy c« gi¸o, b¹n bÌ ®ång nghiÖp vµ gia ®×nh.  
T«i xin c¶m ¬n sù gióp ®ì nhiÖt t×nh cña thÇy NguyÔn Thanh  
Tïng, lµ thÇy gi¸o trùc tiÕp h-íng dÉn ®Ò tµi tèt nghiÖp cña t«i,  
c¶m ¬n c¸c thÇy c« gi¸o trong Khoa Tin häc, c¸c thÇy c« gi¸o vµ  
c¸c c¸n bé cña Trung t©m båi d-ìng c¸n bé Tr-êng §¹i häc B¸ch  
3
®å ¸n tèt nghiÖp  
khoa Hµ néi ®· t¹o ®iÒu kiÖn gióp ®ì t«i hoµn thµnh ®å ¸n nµy.  
T«i còng xin c¶m ¬n c¸c b¹n bÌ ®ång nghiÖp, ng-êi th©n trong gia  
®×nh ®· t¹o ®iÒu kiÖn, ®éng viªn t«i trong qu¸ tr×nh lµm ®å ¸n.  
V× ®iÒu kiÖn vÒ thêi gian kh«ng nhiÒu, kinh nghiÖm cßn h¹n  
chÕ, kh«ng tr¸nh khái c¸c thiÕu sãt. T«i mong nhËn ®-îc c¸c ý  
kiÕn ®ãng gãp cña c¸c thÇy c« gi¸o vµ c¸c ®ång nghiÖp ®Ó c¸c  
ch-¬ng tr×nh sau nµy ®-îc tèt h¬n.  
Ch-¬ng I.  
§Æt vÊn ®Ò  
MÆc dï virus tin häc ®· xuÊt hiÖn tõ kh¸ l©u trªn thÕ giíi vµ  
trong n-íc ta, song ®èi víi ng-êi sö dông vµ c¶ nh÷ng ng-êi lµm  
c«ng t¸c tin häc, virus tin häc vÉn lµ vÊn ®Ò nan gi¶i, nhiÒu khi nã  
g©y c¸c tæn thÊt vÒ mÊt m¸t d÷ liÖu trªn ®Üa, g©y c¸c sù cè trong  
qu¸ tr×nh vËn hµnh m¸y. Sù nan gi¶i nµy cã nhiÒu lý do: Thø nhÊt,  
c¸c kiÕn thøc vÒ møc hÖ thèng khã h¬n c¸c kiÕn thøc vÒ lËp tr×nh  
trªn c¸c ng«n ng÷ bËc cao vµ c¸c ch-¬ng tr×nh øng dông, ®Æc biÖt  
nh÷ng th«ng tin cÇn thiÕt vÒ hÖ thèng kh«ng ®-îc DOS chÝnh thøc  
c«ng bè hoÆc lµ c¸c th«ng tin dµnh riªng (Reseved), ®iÒu nµy lµm  
cho nh÷ng ng-êi ®Ò cËp ë møc hÖ thèng kh«ng nhiÒu. Thø hai,  
hÇu nh- rÊt Ýt c¸c tµi liÖu vÒ virus tin häc ®-îc phæ biÕn, cã lÏ  
ng-êi ta nghÜ r»ng nÕu cã c¸c tµi liÖu ®Ò cËp tíi virus mét c¸ch tû  
mû, hÖ thèng th× sè ng-êi tß mß, nghÞch ngîm viÕt virus sÏ cßn  
t¨ng lªn n÷a! Thø ba, sè l-îng c¸c virus xuÊt hiÖn kh¸ ®«ng ®¶o,  
mçi virus cã mét ®Æc thï riªng, mét c¸ch ho¹t ®éng riªng vµ mét  
c¸ch ph¸ ho¹i riªng. §Ó t×m hiÓu cÆn kÏ vÒ mét virus kh«ng thÓ  
4
®å ¸n tèt nghiÖp  
mét thêi gian ng¾n ®-îc, ®iÒu nµy lµm n¶n lßng nh÷ng ng-êi lËp  
tr×nh muèn t×m hiÓu vÒ virus.  
Tuy ®· xuÊt hiÖn kh¸ nhiÒu nh÷ng ch-¬ng tr×nh tiªu diÖt virus  
vµ kh«i phôc l¹i ®Üa, kh«i phôc l¹i c¸c file bÞ nhiÔm song trong  
nh÷ng tr-êng hîp cô thÓ, ®«i khi c¸c phÇn mÒm nµy còng kh«ng  
gi¶i quyÕt ®-îc vÊn ®Ò. Cã nhiÒu lý do: Thø nhÊt, mçi ch-¬ng  
tr×nh chØ tiªu diÖt mét sè lo¹i virus mµ nã biÕt. Thø hai, chóng ta  
®Òu biÕt r»ng sau khi mét virus nµo ®ã xuÊt hiÖn, nã míi ®-îc  
nghiªn cøu vµ m· nhËn biÕt cña nã míi ®-îc ®-a vµo danh môc,  
khi ®ã ch-¬ng tr×nh míi cã kh¶ n¨ng tiªu diÖt ®-îc. §iÒu ®ã cã  
nghÜa lµ cã thÓ cã c¸c lo¹i virus xuÊt hiÖn trong m¸y tÝnh cña  
chóng ta mµ c¸c ch-¬ng tr×nh kiÓm tra virus vÉn cø th«ng b¸o  
"OK". §Æc biÖt lµ c¸c virus do nh÷ng ng-êi lËp tr×nh trong n-íc  
viÕt, hÇu hÕt kh«ng ®-îc cËp nhËt vµo trong c¸c ch-¬ng tr×nh  
kiÓm tra vµ tiªu diÖt virus nh- SCAN, F-PROT, UNVIRUS,...  
V× c¸c lý do nªu trªn, viÖc phßng chèng virus vÉn lµ biÖn  
ph¸p tèt nhÊt ®Ó tr¸nh viÖc virus x©m nhËp vµo trong hÖ thèng  
m¸y cña m×nh. Trong tr-êng hîp ph¸t hiÖn cã virus x©m nhËp,  
ngoµi viÖc sö dông c¸c ch-¬ng tr×nh diÖt virus hiÖn ®ang cã mÆt  
trªn thÞ tr-êng, viÖc hiÓu biÕt c¬ chÕ, c¸c ®Æc ®iÓm phæ biÕn cña  
virus lµ nh÷ng kiÕn thøc mµ nh÷ng ng-êi lµm c«ng t¸c tin häc nªn  
biÕt ®Ó cã c¸c xö lý phï hîp.  
Néi dung cña ®å ¸n nµy ®-a ra mét sè ph©n tÝch c¬ b¶n ®èi  
víi m¶ng kiÕn thøc hÖ thèng, c¸c nguyªn t¾c thiÕt kÕ, ho¹t ®éng  
cña c¸c lo¹i virus nãi chung, ¸p dông trong ph©n tÝch virus One  
Half. Trªn c¬ së ®ã, ®Ò cËp tíi ph-¬ng ph¸p phßng tr¸nh, ph¸t  
hiÖn vµ ph©n tÝch víi mét virus nµo ®ã. C¸c kiÕn thøc nµy céng  
víi c¸c phÇn mÒm diÖt virus hiÖn cã trªn thÞ tr-êng cã t¸c dông  
trong viÖc h¹n chÕ sù l©y lan, ph¸ ho¹i cña virus nãi chung.  
5
®å ¸n tèt nghiÖp  
Ch-¬ng II.  
Tæng quan  
I. Giíi thiÖu tæng qu¸t vÒ virus tin häc.  
1. Virus tin häc.  
ThuËt ng÷ virus tin häc dïng ®Ó chØ mét ch-¬ng tr×nh m¸y  
tÝnh cã thÓ tù sao chÐp chÝnh nã lªn n¬i kh¸c (®Üa hoÆc file) mµ  
ng-êi sö dông kh«ng hay biÕt. Ngoµi ra, mét ®Æc ®iÓm chung  
th-êng thÊy trªn c¸c virus tin häc lµ tÝnh ph¸ ho¹i, nã g©y ra lçi  
thi hµnh, thay ®æi vÞ trÝ, m· ho¸ hoÆc huû th«ng tin trªn ®Üa.  
2. ý t-ëng vµ lÞch sö.  
Lý thuyÕt vÒ mét ch-¬ng tr×nh m¸y tÝnh cã thÓ tù nh©n lªn  
nhiÒu lÇn ®-îc ®Ò cËp tíi tõ rÊt sím, tr-íc khi chiÕc m¸y tÝnh ®iÖn  
tö ®Çu tiªn ra ®êi. Lý thuyÕt nµy ®-îc ®-a ra n¨m 1949 bëi Von  
Neumann, trong mét bµi b¸o nhan ®Ò 'Lý thuyÕt vµ c¬ cÊu cña c¸c  
phÇn tö tù hµnh phøc t¹p' (Theory and Organization of  
Complicated Automata).  
Sau khi m¸y tÝnh ®iÖn tö ra ®êi, xuÊt hiÖn mét trß ch¬i tªn lµ  
'Core War', do mét sè th¶o ch-¬ng viªn cña h·ng AT&T's Bell  
ph¸t triÓn. Trß ch¬i nµy lµ mét cuéc ®Êu trÝ gi÷a hai ®o¹n m· cña  
hai th¶o ch-¬ng viªn, mçi ®o¹n m· ®Òu cè g¾ng tù nh©n lªn vµ  
tiªu diÖt ®o¹n m· cña ®èi ph-¬ng. §Õn 5/1984, Core War ®-îc  
m« t¶ trªn b¸o chÝ vµ b¸n nh- mét trß ch¬i m¸y tÝnh.  
Nh÷ng virus tin häc ®Çu tiªn ®-îc t×m thÊy trªn m¸y PC vµo  
kho¶ng 1986-1987. C¸c virus th-êng cã mét xuÊt ph¸t ®iÓm lµ c¸c  
tr-êng §¹i häc, n¬i cã c¸c sinh viªn giái, thÝch tù kh¼ng ®Þnh  
m×nh!  
3. Ph©n lo¹i:  
6
®å ¸n tèt nghiÖp  
Th«ng th-êng, dùa vµo ®èi t-îng l©y lan lµ file hay ®Üa mµ  
virus ®-îc chia thµnh hai nhãm chÝnh:  
- B-virus: Virus chØ tÊn c«ng lªn Master Boot hay Boot Sector.  
- F-virus: Virus chØ tÊn c«ng lªn c¸c file kh¶ thi.  
MÆc dï vËy, c¸ch ph©n chia nµy còng kh«ng h¼n lµ chÝnh x¸c.  
Ngo¹i lÖ vÉn cã c¸c virus võa tÊn c«ng lªn Master Boot (Boot  
Sector) võa tÊn c«ng lªn file kh¶ thi.  
§Ó cã mét c¸ch nh×n tæng quan vÒ virus, chóng ta xem chóng  
dµnh quyÒn ®iÒu khiÓn nh- thÕ nµo.  
a. B-virus.  
Khi m¸y tÝnh b¾t ®Çu khëi ®éng (Power on), c¸c thanh ghi  
ph©n ®o¹n ®Òu ®-îc ®Æt vÒ 0FFFFh, cßn mäi thanh ghi kh¸c ®Òu  
®-îc ®Æt vÒ 0. Nh- vËy, quyÒn ®iÒu khiÓn ban ®Çu ®-îc trao cho  
®o¹n m· t¹i 0FFFFh: 0h, ®o¹n m· nµy thùc ra chØ lµ lÖnh nh¶y  
JMP FAR ®Õn mét ®o¹n ch-¬ng tr×nh trong ROM, ®o¹n ch-¬ng  
tr×nh nµy thùc hiÖn qu¸ tr×nh POST (Power On Self Test - Tù kiÓm  
tra khi khëi ®éng).  
Qu¸ tr×nh POST sÏ lÇn l-ît kiÓm tra c¸c thanh ghi, kiÓm tra  
bé nhí, khëi t¹o c¸c Chip ®iÒu khiÓn DMA, bé ®iÒu khiÓn ng¾t,  
bé ®iÒu khiÓn ®Üa... Sau ®ã nã sÏ dß t×m c¸c Card thiÕt bÞ g¾n thªm  
®Ó trao quyÒn ®iÒu khiÓn cho chóng tù khëi t¹o råi lÊy l¹i quyÒn  
®iÒu khiÓn. Chó ý r»ng ®©y lµ ®o¹n ch-¬ng tr×nh trong ROM  
(Read Only Memory) nªn kh«ng thÓ söa ®æi, còng nh- kh«ng thÓ  
chÌn thªm mét ®o¹n m· nµo kh¸c.  
Sau qu¸ tr×nh POST, ®o¹n ch-¬ng tr×nh trong ROM tiÕn hµnh  
®äc Boot Sector trªn ®Üa A hoÆc Master Boot trªn ®Üa cøng vµo  
RAM (Random Acess Memory) t¹i ®Þa chØ 0:7C00h vµ trao quyÒn  
®iÒu khiÓn cho ®o¹n m· ®ã b»ng lÖnh JMP FAR 0:7C00h. §©y lµ  
7
®å ¸n tèt nghiÖp  
chç mµ B-virus lîi dông ®Ó tÊn c«ng vµo Boot Sector (Master  
Boot), nghÜa lµ nã sÏ thay Boot Sector (Master Boot) chuÈn b»ng  
®o¹n m· virus, v× thÕ quyÒn ®iÒu khiÓn ®-îc trao cho virus, nã sÏ  
tiÕn hµnh c¸c ho¹t ®éng cña m×nh tr-íc, råi sau ®ã míi tiÕn hµnh  
c¸c thao t¸c nh- th«ng th-êng: §äc Boot Sector (Master Boot)  
chuÈn mµ nã cÊt giÊu ë ®©u ®ã vµo 0:7C00h råi trao quyÒn ®iÒu  
khiÓn cho ®o¹n m· chuÈn nµy, vµ ng-êi sö dông cã c¶m gi¸c r»ng  
m¸y tÝnh cña m×nh vÉn ho¹t ®éng b×nh th-êng.  
b. F-virus.  
Khi DOS tæ chøc thi hµnh File kh¶ thi (b»ng chøc n¨ng 4Bh  
cña ng¾t 21h), nã sÏ tæ chøc l¹i vïng nhí, t¶i File cÇn thi hµnh vµ  
trao quyÒn ®iÒu khiÓn cho File ®ã. F-virus lîi dông ®iÓm nµy b»ng  
c¸ch g¾n ®o¹n m· cña m×nh vµo file ®óng t¹i vÞ trÝ mµ DOS trao  
quyÒn ®iÒu khiÓn cho File sau khi ®· t¶i vµo vïng nhí. Sau khi  
F-virus tiÕn hµnh xong c¸c ho¹t ®éng cña m×nh, nã míi s¾p xÕp,  
bè trÝ tr¶ l¹i quyÒn ®iÒu khiÓn cho File ®Ó cho File l¹i tiÕn hµnh  
ho¹t ®éng b×nh th-êng, ng-êi sö dông th× kh«ng thÓ biÕt ®-îc.  
Trong c¸c lo¹i B-virus vµ F-virus, cã mét sè lo¹i sau khi dµnh  
®-îc quyÒn ®iÒu khiÓn, sÏ tiÕn hµnh cµi ®Æt mét ®o¹n m· cña  
m×nh trong vïng nhí RAM nh- mét ch-¬ng tr×nh th-êng tró  
(TSR), hoÆc trong vïng nhí n»m ngoµi tÇm kiÓm so¸t cña DOS,  
nh»m môc ®Ých kiÓm so¸t c¸c ng¾t quan träng nh- ng¾t 21h, ng¾t  
13h,... Mçi khi c¸c ng¾t nµy ®-îc gäi, virus sÏ dµnh quyÒn ®iÒu  
khiÓn ®Ó tiÕn hµnh c¸c ho¹t ®éng cña m×nh tr-íc khi tr¶ l¹i c¸c  
ng¾t chuÈn cña DOS.  
§Ó cã c¸c c¬ së trong viÖc kh¶o s¸t virus, chóng ta cÇn cã c¸c  
ph©n tÝch ®Ó hiÓu râ vÒ cÊu tróc ®Üa, c¸c ®o¹n m· trong Boot  
Sector (Master Boot) còng nh- c¸ch thøc DOS tæ chøc, qu¶n lý  
cïng nhí vµ tæ chøc thi hµnh mét File kh¶ thi nh- thÕ nµo.  
8
®å ¸n tèt nghiÖp  
II. §Üa - Tæ chøc th«ng tin trªn ®Üa.  
1. CÊu tróc vËt lý.  
C¸c lo¹i ®Üa (®Üa cøng vµ ®Üa mÒm) ®Òu l-u tr÷ th«ng tin dùa  
trªn nguyªn t¾c tõ ho¸: §Çu tõ ®äc-ghi sÏ tõ ho¸ c¸c phÇn tö cùc  
nhá trªn bÒ mÆt ®Üa. D÷ liÖu trªn ®Üa ®-îc ghi theo nguyªn t¾c rêi  
r¹c (digital), nghÜa lµ sÏ mang gi¸ trÞ 1 hoÆc 0. §Ó cã thÓ tæ chøc  
th«ng tin trªn ®Üa, ®Üa ph¶i ®-îc ®Þa chØ ho¸. Nguyªn t¾c ®Þa chØ  
ho¸ dùa trªn c¸c kh¸i niÖm sau ®©y:  
a. Side:  
§ã lµ mÆt ®Üa, ®èi víi ®Üa mÒm cã hai mÆt ®Üa, ®èi víi ®Üa  
cøng cã thÓ cã nhiÒu mÆt ®Üa. §Ó lµm viÖc víi mçi mÆt ®Üa cã  
mét ®Çu tõ t-¬ng øng, v× thÕ ®«i khi ng-êi ta cßn gäi lµ Header.  
Side ®-îc ®¸nh sè lÇn l-ît b¾t ®Çu tõ 0, ch¼ng h¹n ®èi víi ®Üa  
mÒm, mÆt trªn lµ mÆt 0, mÆt d-íi lµ mÆt 1, ®èi víi ®Üa cøng còng  
t-¬ng nh- vËy sÏ ®-îc ®¸nh sè lµ 0,1,2,3...  
b. Track:  
Lµ c¸c vßng trßn ®ång t©m trªn mÆt ®Üa, n¬i tËp trung c¸c  
phÇn tö tõ ho¸ trªn bÒ mÆt ®Üa ®Ó l-u tr÷ th«ng tin. C¸c track ®¸nh  
sè tõ bªn ngoµi vµo trong, b¾t ®Çu tõ 0.  
c. Cylinder:  
Mét bé c¸c track cïng thø tù trªn mäi mÆt ®Üa ®-îc tham  
chiÕu ®Õn nh- mét phÇn tö duy nhÊt, ®ã lµ Cylinder. Sè hiÖu cña  
Cylinder chÝnh lµ sè hiÖu cña c¸c track trong Cylinder ®ã.  
d. Sector:  
Bé ®iÒu khiÓn ®Üa th-êng ®-îc thiÕt kÕ ®Ó cã thÓ ®äc vµ ghi  
mçi lÇn chØ tõng ph©n ®o¹n cña track, mçi ph©n ®o¹n nµy gäi lµ  
mét sector, d-íi hÖ ®iÒu hµnh DOS, dung l-îng mét sector lµ 512  
9
®å ¸n tèt nghiÖp  
byte. C¸c sector trªn track ®-îc ®¸nh ®Þa chØ, th«ng th-êng hiÖn  
nay ng-êi ta sö dông ph-¬ng ph¸p ®¸nh sè sector mÒm, nghÜa lµ  
m· ho¸ ®Þa chØ cña sector vµ g¾n vµo phÇn ®Çu cña sector ®ã.  
Ngoµi kh¸i niÖm Sector, DOS cßn ®-a ra kh¸i niÖm Cluster,  
nh»m môc ®Ých qu¶n lý ®Üa ®-îc tèt h¬n. Cluster bao gåm tËp hîp  
c¸c Sector, lµ ®¬n vÞ mµ DOS dïng ®Ó ph©n bæ khi l-u tr÷ c¸c file  
trªn ®Üa. Tuú dung l-îng ®Üa mµ sè l-îng Sector trªn mét Cluster  
cã thÓ lµ 1, 2 (®èi víi ®Üa mÒm) hoÆc 4, 8, 16 (®èi víi ®Üa cøng).  
2. CÊu tróc logic:  
§èi víi mäi lo¹i ®Üa, DOS ®Òu tæ chøc ®Üa thµnh hai phÇn:  
PhÇn hÖ thèng vµ phÇn d÷ liÖu. PhÇn hÖ thèng bao gåm ba phÇn  
con: Boot Sector, b¶ng FAT (File Alocation Table) vµ Root  
Directory. §èi víi ®Üa cøng, DOS cho phÐp chia thµnh nhiÒu phÇn  
kh¸c nhau, cho nªn cßn cã mét cÊu tróc ®Æc biÖt kh¸c lµ Partition  
Table.  
Sau ®©y chóng ta ®Ò cËp tíi tõng phÇn mét:  
a. Boot Sector.  
§èi víi ®Üa mÒm, Boot Sector chiÕm trªn Sector 1, Side 0,  
Cylinder 0. §èi víi ®Üa cøng, vÞ trÝ trªn dµnh cho b¶ng Partition,  
cßn Boot Sector chiÕm sector ®Çu tiªn trªn c¸c æ ®Üa logÝc.  
Khi khëi ®éng m¸y, Boot Sector ®-îc ®äc vµo ®Þa chØ 0:  
7C00h vµ ®-îc trao quyÒn ®iÒu khiÓn. §o¹n m· trong Boot Sector  
cã c¸c nhiÖm vô nh- sau:  
- Thay l¹i b¶ng tham sè ®Üa mÒm (ng¾t 1Eh).  
- §Þnh vÞ vµ ®äc Sector ®Çu tiªn cña Root vµo ®Þa chØ 0:0500h  
- Dß t×m, ®äc c¸c file hÖ thèng nÕu cã vµ trao quyÒn ®iÒu  
khiÓn cho chóng.  
10  
®å ¸n tèt nghiÖp  
Ngoµi ra, Boot Sector cßn chøa mét b¶ng tham sè quan träng  
®Õn cÊu tróc ®Üa, b¶ng tham sè nµy b¾t ®Çu t¹i offset 0Bh cña Boot  
Sector, cô thÓ cÊu tróc nµy nh- sau:  
11  
®å ¸n tèt nghiÖp  
Offset Siz  
e
Néi  
dung  
Gi¶i thÝch  
+0h  
3 JMP  
xxxx  
LÖnh nh¶y ®Õn ®Çu ®o¹n m· Boot.  
Tªn cña hÖ thèng ®· format ®Üa.  
+3h  
8
Start of BPB----------------(Bios Parameter Block)  
+0Bh 2 SectSiz Sè byte trong mét Sector.  
+0Dh 1 ClustSiz Sè Sector trong mét Cluter.  
+0Eh 2 ResSecs Sè l-îng Sector dµnh riªng (tr-íc  
FAT).  
+10h  
+11h  
1 FatCnt  
Sè b¶ng FAT.  
2 RootSiz Sè ®Çu vµo tèi ®a cho Root (32  
byte cho mçi ®Çu vµo).  
+13h  
2 TotSecs Tæng sè sector trªn ®Üa (hoÆc  
Partition) trong tr-êng hîp dung  
l-îng < 32MB.  
+15h  
+16h  
1 Media  
Media descriptor ®Üa (gièng nh-  
byte ®Çu b¶ng FAT).  
2 FatSize l-îng Sector cho mçi b¶ng  
FAT.  
End of BPB-----------------  
+18h  
2 TrkSecs Sè l-îng Sector trªn mét track.  
+1Ah 2 HeadCnt Sè l-îng ®Çu ®äc ghi.  
+1Ch 2 HidnSec Sè sector dÊu mÆt (®-îc dïng  
trong cÊu tróc Partition).  
+1Eh  
§Çu ®o¹n m· trong Boot Sector.  
12  
®å ¸n tèt nghiÖp  
Trªn ®©y lµ b¶ng tham sè ®Üa khi format ®Üa b»ng DOS c¸c  
Version tr-íc ®©y. Tõ DOS Version 4.0 trë ®i, cã mét sù më réng  
®Ó cã thÓ qu¶n lý ®-îc c¸c ®Üa cã dung l-îng lín h¬n 32MB, sù  
më réng nµy b¾t ®Çu tõ offset +1Ch ®Ó gi÷ nguyªn c¸c cÊu tróc  
tr-íc ®ã. PhÇn më réng thªm cã cÊu tróc nh- sau:  
13  
®å ¸n tèt nghiÖp  
Offse Size Néi dung  
t
Gi¶i thÝch  
+1Ch 4 HidnSec Sè Sector dÊu mÆt (®· ®-îc ®iÒu  
chØnh lªn 32 bit).  
+20h  
+24h  
4 TotSec  
1 PhsDsk  
Tæng sè Sector trªn ®Üa khi gi¸ trÞ ë  
offset +13h b»ng 0.  
Sè ®Üa vËt lý (0: ®Üa mÒm, 80: ®Üa  
cøng 1, 81: ®Üa cøng 2).  
+25h  
+26h  
1 Resever  
1
dµnh riªng.  
Ký hiÖu nhËn diÖn cña DOS  
Version x.xx  
+27h  
4 Serial  
Lµ sè nhÞ ph©n 32 bit cho biÕt Serial  
Number.  
+2Bh B Volume Volume label  
+36h  
8
Lo¹i b¶ng FAT 12 hay 16 bit.  
Th«ng tin nµy dµnh riªng cña DOS.  
+3Eh  
§Çu ®o¹n m· ch-¬ng tr×nh.  
PhÇn m· trong Boot Sector sÏ ®-îc ph©n tÝch mét c¸ch chi tiÕt  
trong phÇn sau nµy.  
b. FAT (File Alocation Table).  
B¶ng FAT lµ vïng th«ng tin ®Æc biÖt trong phÇn hÖ thèng,  
dïng ®Ó l-u tr¹ng th¸i c¸c Cluster trªn ®Üa, qua ®ã DOS cã thÓ  
qu¶n lý ®-îc sù ph©n bè File.  
C¸ch tham chiÕu ®Õn mét ®Þa chØ trªn ®Üa th«ng qua sè hiÖu  
Side, Cylinder, Sector lµ c¸ch lµm cña ng¾t 13h cña BIOS vµ còng  
14  
®å ¸n tèt nghiÖp  
lµ c¸ch lµm cña bé ®iÒu khiÓn ®Üa. Ngoµi c¸ch tham chiÕu trªn,  
DOS ®-a ra mét c¸ch tham chiÕu kh¸c chØ theo mét th«ng sè: ®ã  
lµ sè hiÖu Sector. C¸c Sector ®-îc ®¸nh sè b¾t ®Çu tõ 0 mét c¸ch  
tuÇn tù tõ Sector 1, Track 0, Side 0 cho ®Õn hÕt sè Sector trªn  
Track nµy, råi chuyÓn sang Sector 1, Track 0, Side 1,... TÊt c¶ c¸c  
Sector cña mét Cylinder sÏ ®-îc ®¸nh sè tuÇn tù tr-íc khi DOS  
chuyÓn sang Track kÕ tiÕp. C¸ch ®¸nh sè nµy gäi lµ ®¸nh sè  
Sector logic, vµ ®-îc DOS sö dông cho c¸c t¸c vô cña m×nh.  
Kh¸i niÖm Cluster chØ dïng ®Ó ph©n bæ ®Üa ®Ó l-u tr÷ File,  
cho nªn chØ b¾t ®Çu ®¸nh sè Cluster tõ nh÷ng Sector ®Çu tiªn cña  
phÇn d÷ liÖu (phÇn ngay sau Root). Sè hiÖu ®Çu tiªn ®Ó ®¸nh sè  
Cluster lµ 2, nh»m môc ®Ých thèng nhÊt trong c¸ch qu¶n lý th«ng  
tin trong b¶ng FAT.  
Néi dung cña FAT:  
Mçi Cluster trªn ®Üa ®-îc DOS qu¶n lý b»ng mét entry, hai  
entry ®Çu tiªn dïng ®Ó chøa th«ng tin nhËn d¹ng ®Üa, ®ã lµ lý do  
Cluster ®-îc ®¸nh sè b¾t ®Çu tõ 2. Entry 2 chøa th«ng tin cña  
Cluster 1, Entry 3 chøa th«ng tin cña Cluster 2,... Gi¸ trÞ cña  
entry trong b¶ng FAT cã ý nghÜa nh- sau:  
Gi¸ trÞ  
ý nghÜa  
0
Cluster cßn trèng, cã thÓ ph©n bæ ®-îc  
(0)002-(F)FE Cluster ®ang chøa d÷ liÖu c¶ mét File nµo ®ã,  
F
gi¸ trÞ cña nã lµ sè Cluster kÕ tiÕp trong  
Chain.  
(F)FF0-(F)FF Dµnh riªng, kh«ng dïng  
6
(F)FF7  
Cluster háng  
15  
®å ¸n tèt nghiÖp  
(F)FF8-(F)FF Lµ Cluster cuèi cïng cña Chain.  
F
§èi víi ®Üa mÒm vµ ®Üa cøng cã dung l-îng nhá, DOS sö  
dông b¶ng FAT-12, nghÜa lµ sö dông 12 bit (1,5 byte) cho mét  
entry. §èi víi c¸c ®Üa cøng cã dung l-îng lín, DOS sö dông b¶ng  
FAT-16, nghÜa lµ sö dông 2 byte cho mét entry. C¸ch ®Þnh vÞ trªn  
hai b¶ng FAT nµy nh- sau:  
- §èi víi FAT-16: V× mçi entry chiÕm 2 byte, nªn vÞ trÝ cña  
Cluster tiÕp theo b»ng gi¸ trÞ cña Cluster hiÖn thêi nh©n víi 2.  
- §èi víi FAT-12: V× mçi entry chiÕm 1,5 byte, nªn vÞ trÝ cña  
Cluster tiÕp theo b»ng gi¸ trÞ cña Cluster hiÖn thêi nh©n víi 1,5.  
Gi¸ trÞ cô thÓ lµ 12 bit thÊp nÕu sè thø tù sè Cluster lµ ch½n, ng-îc  
l¹i lµ 12 bit cao trong word t¹i vÞ trÝ cña Cluster tiÕp theo ®ã.  
§o¹n ch-¬ng tr×nh sau ®©y minh häa c¸ch ®Þnh vÞ b¶ng FAT.  
Vµo: SI : Sè Cluster ®-a vµo.  
BiÕn FAT_type l-u lo¹i b¶ng FAT, nÕu bit 2 = 1 th× FAT  
lµ 16 bit.  
Ra: DX : Sè Cluster tiÕp theo.  
16  
®å ¸n tèt nghiÖp  
Locate_Cluster proc  
mov  
test  
je  
ax,3  
FAT_type,4  
FAT_12  
ax  
inc  
FAT_12:  
mul  
si  
shr  
ax,1  
mov  
mov  
test  
jne  
mov  
test  
bx,ax  
dx,FAT_buff[bx]  
FAT_type,4  
FAT_16  
cl,4  
si,1  
je  
Chan  
shr  
dx,cl ; LÎ th× lÊy 12 bit cao  
Chan:  
and  
dh,0F ; Ch½n th× lÊy 12 bit thÊp  
FAT_16:  
ret  
Locate_Cluster endp  
Mét vÝ dô vÒ phÇn ®Çu cña b¶ng FAT:  
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0f  
0 1 2 3 4 5 6 7 8 9 a b c d e  
0 F F F F 0 0 0 0 0 0 0 0 F F 0 0  
0 8 F F F 3 0 4 0 5 0 6 0 F F 8 0  
1 0 0 0 0 0 0 F F F F B 0 F F F F  
0 9 0 A 0 B 0 F F F F 9 2 F F F F  
17  
®å ¸n tèt nghiÖp  
Mçi entry trong b¶ng FAT nµy chiÕm 2 byte (FAT 16bit), 2  
entry ®Çu tiªn cña b¶ng FAT nµy lµ gi¸ trÞ nhËn d¹ng ®Üa  
(FFF8-FFFF), gi¸ trÞ cña Cluster 2 trá tíi Cluster 3, gi¸ trÞ cña  
Cluster 3 l¹i trá tíi Cluster 4, ... cho ®Õn khi Cluster 6 cã gi¸ trÞ  
FFFF, nghÜa lµ kÕt thóc File.  
c. Root Directory.  
Root Directory cßn ®-îc gäi lµ th- môc gèc, n»m ngay sau  
FAT. Nã cã nhiÖm vô l-u gi÷ c¸c th«ng tin th- môc cña c¸c File  
trªn ®Üa. Mçi File ®-îc ®Æc tr-ng bëi entry (®Çu vµo) trong Root  
Director, mçi entry chiÕm 32 byte l-u gi÷ c¸c th«ng tin sau ®©y:  
Offset KÝch th-íc  
Néi dung  
Tªn file ®-îc canh tr¸i  
PhÇn më réng ®-îc canh tr¸i  
Thuéc tÝnh file  
+0h  
+8h  
8
3
+0Bh  
+0Ch  
+16h  
1
0Ah  
2
Dµnh riªng  
Thêi gian t¹o lËp hay cËp nhËt lÇn  
cuèi.  
+18h  
+1Ah  
+1Ch  
2
2
4
Ngµy th¸ng t¹o lËp hay cËp nhËt  
lÇn cuèi.  
Sè Cluster b¾t ®Çu cña file (trong  
FAT).  
KÝch th-íc file  
Byte thuéc tÝnh cã ý nghÜa nh- sau:  
7 6 5 4 3 2 1 0  
=1: File chØ ®äc (Read Only)  
=1: File Èn (Hidden)  
18  
®å ¸n tèt nghiÖp  
=1: File hÖ thèng (System)  
=1: Volume Label  
=1: Sub Directory  
=1: File ch-a ®-îc backup (thuéc tÝnh archive)  
Ký tù ®Çu tiªn phÇn tªn file cã ý nghÜa nh- sau:  
0
Entry cßn trèng, ch-a dïng  
. (dÊu  
chÊm)  
DÊu hiÖu dµnh riªng cho DOS, dïng trong  
cÊu tróc th- môc con  
0E5h  
Ký tù sigma nµy th«ng b¸o cho DOS biÕt  
entry cña file nµy ®· bÞ xo¸.  
Mét ký tù Entry nµy ®ang l-u gi÷ th«ng tin vÒ mét file  
kh¸c nµo ®ã.  
19  
®å ¸n tèt nghiÖp  
d. Partition Table.  
Partition table cßn ®-îc gäi lµ Master Boot, l-u tr÷ t¹i Side 0,  
Cylinder 0, Sector 1 trªn ®Üa cøng. T¹i ®©y, ngoµi b¶ng Partition  
(b¶ng ph©n ch-¬ng), cßn cã mét ®o¹n m· ®-îc trao quyÒn ®iÒu  
khiÓn sau qu¸ tr×nh POST t-¬ng nh- ®èi víi Boot Sector trªn  
®Üa mÒm. §o¹n m· nµy nh»m x¸c ®Þnh Partition nµo lµ ho¹t ®éng  
®Ó ®äc Boot Sector cña Partition ®ã vµo 0:7C00 vµ trao quyÒn ®iÒu  
khiÓn cho ®o¹n m· cña Boot Sector ®ã.  
Partition Table b¾t ®Çu t¹i offset 1BEh, mçi Partition ®-îc  
®Æc tr-ng b»ng mét entry 16 byte:  
Offse Siz  
Néi dung  
t
e
+0  
+1  
+2  
1 Cê hiÖu boot. 0= kh«ng active, 80h=active  
1 Sè hiÖu cña Header b¾t ®Çu  
2 Sec-Cyl: Sè hiÖu Sector-Cylinder b¾t ®Çu cña  
Partition  
+4  
1 M· hÖ thèng: 0=unknown, 1=DOS FAT-12,4=DOS  
FAT-16,...  
+5  
+6  
1 Sè hiÖu cña Header kÕt thóc  
2 Sec-Cyl: Sè hiÖu Sector-Cylinder kÕt thóc cña  
Partition  
+8  
4 low-high: Sè Sector b¾t ®Çu t-¬ng ®èi  
+0Ch 4 low-high: Tæng sè Sector trªn Partition  
+10h  
§Çu vµo cña mét Partition kh¸c, kÕt thóc b¶ng  
Partition ph¶i lµ ch÷ ký cña hÖ ®iÒu hµnh: 0AA55h  
20  
®å ¸n tèt nghiÖp  
3. C¸c t¸c vô truy xuÊt ®Üa.  
a. Møc BIOS.  
C¸c t¸c vô truy xuÊt ®Üa ë møc BIOS sö dông c¸ch tham chiÕu  
®Þa chØ trªn ®Üa theo Cylinder, Side vµ Sector. C¸c chøc n¨ng nµy  
®-îc thùc hiÖn th«ng qua ng¾t 13h, víi tõng chøc n¨ng con trong  
thanh ghi AH. C¸c phôc vô c¨n b¶n nhÊt ®-îc m« t¶ nh- sau:  
21  
®å ¸n tèt nghiÖp  
a1. Phôc vô 0: Reset ®Üa:  
Vµo:  
AH = 0  
DL = Sè hiÖu ®Üa vËt lý (0-®Üa A, 1-®Üa B, ..., 80h-®Üa  
cøng 1, 81h-®Üacøng 2,...)  
Ra:  
Thanh ghi AH chøa tr¹ng th¸i ®Üa (xem phôc vô 1)  
Chøc n¨ng nµy dïng ®Ó reset l¹i ®Üa sau mét t¸c vô gÆp lçi.  
Phôc vô nµy kh«ng t¸c ®éng lªn ®Üa, thay vµo ®ã nã buéc c¸c tr×nh  
hç trî ®Üa cña ROM-BIOS ph¶i b¾t ®Çu l¹i tõ ®Çu trong lÇn truy  
cËp ®Üa kÕ tiÕp b»ng c¸ch canh l¹i ®Çu ®äc/ghi cña æ ®Üa (®Þnh vÞ  
®Çu ®äc t¹i track 0).  
a2. Phôc vô 1: LÊy tr¹ng th¸i ®Üa.  
Phôc vô 1 tr¶ vÒ tr¹ng th¸i ®Üa trong 8 bit cña thanh ghi AH.  
Tr¹ng th¸i ®-îc duy tr× sau mçi thao t¸c ®Üa (®äc, ghi, kiÓm tra,  
format). Nhê vËy c¸c tr×nh xö lý lçi cã thÓ lµm viÖc hoµn toµn ®éc  
lËp víi c¸c tr×nh thao t¸c ®Üa. §iÒu nµy rÊt cã Ých nÕu chóng ta sö  
dông DOS hay ng«n ng÷ lËp tr×nh ®Ó ®iÒu khiÓn ®Üa.  
Vµo:  
AH = 1  
DL = Sè hiÖu ®Üa vËt lý (0-®Üa A, 1-®Üa B, ..., 80h-®Üa  
cøng 1, 81h-®Üa cøng 2,...)  
Ra:  
AH chøa tr¹ng th¸i ®Üa.  
Gi¸ trÞ  
(hex)  
ý nghÜa  
00  
Thµnh c«ng  
22  
Tải về để xem bản đầy đủ
doc 233 trang baolam 09/05/2022 4420
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Tìm hiểu Virus và cách phòng chống", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docdo_an_tim_hieu_virus_va_cach_phong_chong.doc