3.5硬盤解鎖 3.5.1硬盤鎖住原理 硬盤鎖住通常與硬盤的分區(qū)表有關(guān),因此首先應(yīng)該了解硬盤的分區(qū)表。硬盤分區(qū)表位于0柱面0磁頭1區(qū),這個扇區(qū)的前面200多個字節(jié)是主引導(dǎo)程序,后面從O1 BEH開始的64個字節(jié)是分區(qū)表。分區(qū)表共64個字節(jié),分為4欄,每欄16字節(jié),用來描述一個分區(qū)。如果是用DOS的Fdisk程序分區(qū)后,最多只用兩欄,第一欄描述基本的DOS分區(qū),第二欄描述擴展的DOS分區(qū)。 分區(qū)表一欄的結(jié)構(gòu)與各字節(jié)的含義如下: (1) OOH:標志活動字節(jié),活動DOS分區(qū)為80H,其他為00H; (2) 01H:本分區(qū)邏輯0扇區(qū)所在的磁頭號; (3) 02H:邏輯0扇區(qū)所在柱面中的扇區(qū)號; (4) 03H:邏輯。扇區(qū)所在的柱面號; (5) 04H:分區(qū)類型標志; (6) 05H:本分區(qū)最后一個扇區(qū)的磁頭號; (7) 06H:最后一個扇區(qū)的扇區(qū)號; (8) 07H:最后一個柱面的柱面號; (9) 08H:硬盤上在本分區(qū)之前的扇區(qū)總數(shù),用雙宇表示; (1b) OCH:本分區(qū)的扇區(qū)總數(shù),從邏輯0扇區(qū)計數(shù),不含隱藏扇區(qū),用雙字表示。 分區(qū)表的最后兩個字節(jié)是分區(qū)表的有效標志,如果將其改變,將不能從硬盤啟動,這是一種簡單的鎖住硬盤的方法。解決的辦法是從軟盤啟動,啟動后硬盤仍然可以使用。用Debug或Norton中的Diskedit軟件將硬盤該分區(qū)表中的標志恢復(fù),則從硬盤啟動也沒有問題了。 鎖住硬盤的另一種方法是修改分區(qū)參數(shù),如果將分區(qū)參數(shù)全部變?yōu)?,則啟動時由于找不到分區(qū)參數(shù),從硬盤無法啟動,從軟盤啟動后也不識別硬盤,如果輸入盤符C并回車,將出現(xiàn)提示: Invalid driver specification 此時由于啟動計算機,不識別硬盤,在A盤或驅(qū)光盤中上用DOS的Debug仍然可以讀出硬盤0柱面0磁頭1扇區(qū)的內(nèi)容,修改后再寫入0柱面0磁頭1扇區(qū),重新啟動機子又沒問題了。如果將分區(qū)表參數(shù)隨意改為其他參數(shù),在不能啟動時,可以用安裝有DOS的系統(tǒng)盤啟動,按“F3”鍵退出后將出現(xiàn)內(nèi)存分配錯誤,不能裝載DOS的命令解釋器COMMAND的提示,系統(tǒng)就死機了。但用一張格式化成系統(tǒng)盤的軟盤或啟動光盤則可以順利啟動,只要有Debug,仍然可以將分區(qū)表參數(shù)修改回去。如果不幸將分區(qū)表參數(shù)改成一個循環(huán)鏈,即C盤的下一個分區(qū)指向D驅(qū),D驅(qū)的下一個分區(qū)義指向C驅(qū),這樣循環(huán)下去,啟動時由于無休止地讀取邏輯驅(qū)動,所以會死機。這時只要有硬盤存在,不管用軟盤光盤還是硬盤都無法啟動計算機了,不能啟動是由于硬盤造成的,即使將硬盤裝到其他計算機上,也無法使用,這樣硬盤就徹底被鎖死了。 一個完整的硬盤鎖程序,不過是重新改寫0柱面0磁頭1扇區(qū)的引導(dǎo)程序,并將分區(qū)表破壞或故意制造一個循環(huán)分區(qū)表,而將真正的硬盤分區(qū)表參數(shù)和引導(dǎo)程序放在其他隱藏扇區(qū)并保護起來。如果啟動時口令不對,則不能啟動計算機,口令對了則順利啟動。這種硬盤鎖程序,情形好的還可以用啟動盤啟動,情形嚴重的就是啟動盤也不能啟動,此時硬盤就被鎖住了。 3.5.2幾種常用的解鎖方法 1.“熱插拔”硬盤電源。 “熱插拔”硬盤電源是在當系統(tǒng)啟動時,先不給被鎖的硬盤加電,啟動完成后再給硬盤“熱插”上電源線,這樣系統(tǒng)就可以正??刂朴脖P了。 2. U1traEdit 首先準備一張啟動盤,然后在其他正常的計算機上使用二進制編輯工具(推薦U1traEdit)修改軟盤上的10. SYS文件(修改前先將該文件的屬性改為正常)。具體是在這個文件里面搜索第一個“55 AA”字符串,找到以后修改為任何其他數(shù)值即可。用這張修改過的系統(tǒng)軟盤就可以順利地帶著被鎖的硬盤啟動了,不過這時由于該硬盤正常的分區(qū)表已經(jīng)被破壞,當無法用Fdisk來刪除和修改分區(qū)時,可以用關(guān)于分區(qū)表恢復(fù)的方法來處理。 3. DM DM是磁盤管理工具,可以對磁盤進行高級格式化、低級格式化、數(shù)據(jù)清零、重新分區(qū)、備份分區(qū)表、檢測磁盤等,是個很有用的工具。它支持目前所有的硬盤新技術(shù),擁有極為強大的功能:快速的簡易和高級選項,初級用戶容易掌握其硬盤安裝功能,又能完全滿足高級用戶的特殊需求;完全支持用戶操作系統(tǒng)所支持的FAT32文件系統(tǒng)。在一個分區(qū)上格式化大于2GB的驅(qū)動器,當用戶使用高級安裝模式或菜單模式時,允許選擇自己所需的磁盤簇的大??;突破8. 4GB、32GB限制;使用硬盤診斷功能可以在硬盤子系統(tǒng)中找出相互關(guān)聯(lián)的問題;兼容多種操作系統(tǒng),包括Windows 9X/ME/NT4/2000/DOS/OS/2;支持IDE電源管理;包含了對IDE/ATA驅(qū)動器的多扇區(qū)讀寫支持,加速數(shù)據(jù)傳送;快速格式化IDE/ATA/SCSI驅(qū)動器。在絕大多數(shù)情況下完全安裝驅(qū)動器不超過1 min;支持增強型IDE/FAST ATA的高速數(shù)據(jù)傳送;其中包含的低級格式化程序比許多BI-OS附的低級格式化程序先進得多。它可以修改硬盤的交錯因子,甚至可以修復(fù)某些0磁道出了問題的硬盤。 因為DM是不依賴于主板BIOS來識別硬盤的硬盤工具,就算在主板BIOS中將硬盤設(shè)為“NONE",DM也可識別硬盤并進行分區(qū)和格式化等操作,所以也可以利用DM軟件為硬盤解鎖。 首先將DM復(fù)制到一張系統(tǒng)盤上,接上被鎖硬盤后開機,按“Delete”鍵進入BIOS設(shè)置,將所有IDE接口設(shè)為“NONE”并保存后退出,然后用軟盤啟動系統(tǒng),系統(tǒng)即可“帶鎖”啟動,因為此時系統(tǒng)就等于沒有硬盤。 啟動后運行DM,當DM可以識別出硬盤時,選中該硬盤進行分區(qū)格式化就可以了。這種方法簡單方便,但是有一個致命的缺點,就是硬盤上的數(shù)據(jù)保不住了。 在使用DM時,使用模式意義為: /m: Manual mode.(手動模式開關(guān)) /c. Color mode(彩顯方式) /p: PC一XT模式 /a:PC一AT模式 /2:DOS 2. XXmode (使 DM以DOS2. XX模式工作) /3:DOS 3. XXmode (使DM以DOS3. XX模式工作) /4:DOS4,XXmode (使DM以DOS4. XX的模式工作) /z:Zen讓hMS-DOScompadbil讓ymode (DM工作時使用MS-DOS的最大兼容模式) /w:WyseMS-DOScompadbil卸mode (使DM與WyseMS-DOS兼容) /I允許DM使用NECDOS3的大分區(qū)工作模式 underNECDOS3. 3 Only /v:VariableClusterandrootdirectorySizes (用DM改變簇的大小和根目錄的多少) /0:OperatediSklllallageranddeViCedriver uSlngversiOn2. 02 conventions (使DM采用2,02版本的設(shè)備驅(qū)動方式工作) /i:Selectinterleave value during au tomactiCinstallaon (選硬盤交叉因子) /n:Not with default parameters (不使用默認參數(shù)) /s:Sectorpertrackparametermatching (選擇扇區(qū)的磁道數(shù)) /5:UseWD1005styletranslation scheme (使DM采用WD1005傳輸方案工作) /7:USeWD1007 StyletransladonSCheme (使DM采用WD1007傳輸方案工作) /k;specifycytinderSkewandheadSkew forusedUringlowlevel initialization (用DM強制柱面和磁頭偏移) /d:Enterbytes-from index( BFI) when Addingnawstothe defect list (使DM輸入缺陷表時使用BFI.方式) 4.解開硬盤鎖的程序法 硬盤鎖死的根源在于DOS中的IO. SYS文件,它包含LOADER、 101、102、103四個模塊,其中,101包含有一個很關(guān)鍵的程序Syslnt-I。它在啟動中首先要去讀分區(qū)表,如果碰上分區(qū)表是循環(huán)的,它就只有死機了,這是DOS的嚴重缺陷。 知道了病因在于DOS,所以,在啟動過程中控制不讀分區(qū)表,甚至連硬盤都不讀,就可以順利啟動了。實際上開硬盤鎖的程序?qū)崿F(xiàn)方法是重新寫一套程序,存入啟動盤啟動。 在計算機的啟動過程,如果選擇從硬盤啟動,則計算機和磁盤最開始讀取將是硬盤0柱面0磁頭1扇區(qū)的內(nèi)容讀入內(nèi)存0000:7 C00處,并跳到0000:7 C00處執(zhí)行。如果選擇從軟盤啟動,則計算機和磁盤最開始是將A盤0磁通0磁頭1扇區(qū)的內(nèi)容讀入內(nèi)存0000:7 C00處,并跳到0000:7 C00處執(zhí)行,在執(zhí)行過程中,計算機不檢查該扇區(qū)的內(nèi)容是什么,只機械地執(zhí)行讀命令,使得許多系統(tǒng)中病毒得以生存。但利用這一點,恰恰使程序解鎖法有了用武之地,如果用DOS格式化一張可以啟動機子的系統(tǒng)軟盤,將該軟面的0磁道0磁頭1扇區(qū)的內(nèi)容移到后面的空白扇區(qū)中,而重新寫一段程序到該軟盤的0磁道0磁頭1扇區(qū),這樣用軟盤啟動時首先執(zhí)行的是之前所寫的程序了。在這段程序中,具備這樣一些功能:在DOS啟動前搶先攔截INT 13H,駐留高端內(nèi)存并監(jiān)視INT 13H,判斷是否讀硬盤,如果是讀硬盤就直接返同,這樣就禁止了讀硬盤,也就避免了DOS讀硬盤循環(huán)分區(qū)表造成的死機;同時攔截對軟盤的讀取,如果讀軟盤的0磁道0磁頭1扇區(qū),就改成讀真正有引導(dǎo)程序和磁盤參數(shù)表的扇區(qū),免得DOS在啟動中找不到軟盤的磁盤參數(shù)表而死機。完成這些任務(wù)的同時,還要讀取軟盤真正的引導(dǎo)程序并把控制權(quán)交給它。 該方法可以稱為萬能的,因為它在用軟盤啟動中,始終不與硬盤打交道,這樣不管硬盤用什么方法加鎖,對DOS的啟動都沒有影響。當然,這樣啟動的計算機是不識別硬盤的,但這沒有關(guān)系??稍谟嬎銠C啟動后,用Debug調(diào)出駐留高端內(nèi)存的新INT13 H程序,將其改為只有一條直接執(zhí)行舊INT13 H的語句,這樣在Debug下可以用INT12H讀取硬盤0柱面0磁頭1扇區(qū)的內(nèi)容,如果有備份,將分區(qū)表參數(shù)恢復(fù)后再寫入0柱面0磁頭1扇區(qū),重新啟動計算機就可以了。如果沒有備份,去掉分區(qū)表中的循環(huán)鏈,用正常DOS啟動盤重啟計算機后至少也可以重新對硬盤分區(qū),不至于硬盤被鎖住打不開了。 5.程序及說明 ①下面是存定入軟盤或光盤0磁道0頭1扇區(qū)的源程序key. com,程序用Debug輸入。0>debug -a100 100 CH 101 XOR AX,AX 103 MOV DS,AX 105 MOV ES,AX 107 MOV SS,AX 109 MOV AX,7000 100 MOV SP,AX 10E STI 10F MOV, SI,AX 111 MOV DI,7E00 114 CLD 115 MOV CX,0200 118 REPNZ 119 MOVSB 11A JMP 0000;7ElF 11F MOV CX,0003 122 PISH CX 123 MOV AX,0201;讀啟動軟盤的引導(dǎo)扇區(qū) 126 MOV BX,7000 129 MOV CX,4F01 12C MOV DX,0100 12F INT 13 131 POP CX 132 DEC CX 133 JNX 0122 135 MOV AX, [ 0040]搶先獲取INT13H的位置 138 MOV[7E88],AX 13B MOV AX,[004E] 13E MOV[7E8A],AX 141 MOV AX,[0413] 144 DEC AX 145 MOV[0413],AX 148 MOV CL,06 14A SHL AX,CL 14C MOV ES,AX 14E XOR AX,AX 150 MOV DS,AX 152 MOV SI,7E6D;復(fù)制改寫的TNT 13H程序高端內(nèi)存 155 MOV DI, 0000 158 MOV CX,0030 15B REPNZ 015C MOVSB 015D MOV AX,0000;將新INT13 H位置寫入中斷向量表 0160 MOV[004C],AX 0163 MOV AX,ES 0165 MOV[004E],AX 0168 JMP 0000 : 7 C00 016D PUSHF:新INT13 H程序 016E CMP DX,0080;是否是硬盤 0172 JNZ 0176;不是硬盤則繼續(xù) 0174 POPF 0175 IRET;是硬盤則直接返回 0176 CMP DX, +00,是否讀軟盤BOOT區(qū)? 0179 JNZ 0186 017B CMP CX,+01 017E JNZ 0186 0180 MOV CX,4F01;是則讀79磁道1磁頭1扇區(qū) 0183 MOV DX,0100 0186 POPF 0187 JMP 0000:0000;此處跳轉(zhuǎn)專執(zhí)行舊INT13, f日INT 13H的位置由前面程序得后寫入 N key,com RCX 200 W Q ②程序的裝載。在進行下面工作前,先制作一張啟動盤,將啟動盤內(nèi)容考入光盤中,然后用Debug。key. com將程序key. com調(diào)入內(nèi)存偏移地址為100H,同時在400H處寫入段裝載程序,即 C>debug key. com -a400 400 MOV CX,0003 403 PUSH CX 404 MOV AX,0201;將A盤引導(dǎo)程序讀入內(nèi)在1000H處 407 MOV BX,1000;為確保成功,首次采用重復(fù)讀三次 40A MOV CX,0001 40D MOV .DX,0000 410 INT 13 412 POP CX 413 DEC CX 414 JNZ 0403 416 MOV AX,0301;將已讀入內(nèi)在的軟盤引導(dǎo)程序?qū)懭胲洷P 419 MOV BX,1000;最后一個磁道的首扇區(qū) 41C MOV CX,4F01 41F MOV DX,0100 422 INT 13 424 MOV AX,0301;將key. com程序?qū)懭胲洷P0磁道0磁頭1扇區(qū) 427 MOV BX,0100 42A MOV CX,0001 42D MOV DX,0000 430 INT 13 432 INT 3 為保證萬無一失,應(yīng)將啟動盤這兩個扇區(qū)的內(nèi)容重新讀出來,以保證寫入正確。從該軟盤啟動后,不識別硬盤,并且在高端內(nèi)存駐留了新INT13H程序,該段程序?qū)嶋H上是key. com中從16D到187部分。由于有此段程序存在,在Debug下也無法讀硬盤,也就無法恢復(fù)硬盤分區(qū)表,因此計算機啟動后首先應(yīng)修改這段程序。這樣這段程序就位于內(nèi)存中9 FCO :0000處,在Debug下,用U9FCO:0顯示這段程序??梢钥吹轿挥? FCO. 001A處的是一條跳轉(zhuǎn)指令,該跳轉(zhuǎn)指令是轉(zhuǎn)去執(zhí)行最原始的INT13 H。由于BIOS版本不一樣,跳轉(zhuǎn)指令指向的位置可能不一樣,這時在Debug下編寫這樣一語句:a9 FCO : 0 3 MPF000 : A5 D4。這樣,對硬盤的禁寫與禁讀都不再起作用了,在Debug下用INT13 H的2號子功能可以讀出硬盤分區(qū)表,修改恢復(fù)后再用3號子功能將數(shù)據(jù)寫回分區(qū)表。退出Debug,重新用DOS啟動計算機即可。 6.建議 為更好地保護硬盤,最好將硬盤分區(qū)表信息備份起來。備份有兩種方式,一種是以文件形式將硬盤每個邏輯盤的分區(qū)信息存儲起來;另一種是將分區(qū)信息備份在硬盤隱藏扇區(qū)里。例如,可以將0柱面0磁頭1扇區(qū)備份在0柱面0磁頭3扇區(qū),將D盤開始柱面號0磁頭1扇區(qū)備份在該柱面0磁頭3扇區(qū),其他邏輯盤也如此。這種方法簡單、方便,也很可靠。 |
|