知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 技术文献

再论制硬盘逻辑锁

发布时间:2011-06-29 17:28:14作者:知识屋

制作前的准备: 
先将本硬盘备份到软盘中,这里是保存在软盘0磁头0柱面2扇区中,以便万一做不成功时,进行恢复。 
C:DOS>DEBUG  

-a 100  

mov ax,201  

mov bx,200  

mov cx,1  

mov dx,80  

int 13     ;读硬盘0磁头0柱面1扇区的内容到ES:200处  

mov ax,301  

mov bx,200  

mov cx,2  

mov dx, 0  

int 13     ;写ES:200处内容到软盘0磁头0柱面2扇区  

int 3  

↙  

-g=100  

;然后制作一张“启动盘1” :  

-a 200  

mov ax,201  

mov bx,2000  

mov cx,2    

mov dx,0    

int 13   ;读软盘0磁头0柱面2扇区的内容到ES:2000处  

jb 200    

mov ax,301  

mov bx,2000  

mov cx,1    

mov dx,80  

int 13    

jmp ffff:0000  

↙  

-w 200 0 0 1 ;执行此命令之前插入上述软盘,将这一段起引导作用的程序写到软盘的0磁头0柱面1扇区,使之成为一张特殊的“启动盘1”。  
制作硬盘锁: 
我们先看一看硬盘分区表的信息 
C:DOS>DEBUG  

-a100  

1186:0100 mov ax,201  

1186:0103 mov bx,200  

1186:0106 mov cx,1  

1186:0109 mov dx,80  

1186:010C int 13  

1186:010E int 3  

1186:010F ↙  

-g=100  



-d 3b0 L 50  

1186:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01    

                      起始磁头号  

          起始柱面号(01的高2位并上00)  

1186:03C0 01 00 06 7F BF 07 3F 00-00 00 C1 FB 3F 00 00 00    

                结束磁头号、扇区号、柱面号(格式同前)  

          起始扇区号(01的低6位)  

1186:03D0 81 08 05 7F FF 0C 00 FC-3F 00 80 1D 20 00 00 00    

1186:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00    

1186:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA    



-e 3c2  

02   ; 将分区类型 06 改为 02,即XENIX,该字节含义如下:  

          0-无效分区  

          1-DOS 12位FAT  

          2-XENIX  

          4-DOS 16位FAT 分区容量<32M  

          5-扩展DOS分区  

          6-DOS 16位FAT 分区容量>32M    

-e3d0  

01 00 ;将D区的起始扇区号和柱面号改为与C区相同的起始扇区号和柱面号,形成循环链表  

-a 100  

1186:0100 mov ax,301  

1186:0103 ↙  



-g=100  

;将改后的内容写入硬盘主引导扇区  

-a 100  

1186:0100 mov ax,201  

1186:0103 ↙  



-g=100  

;再次读出硬盘主引导扇区内容  

-d 3b0 L 50  



1186:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01    

1186:03C0 01 00 02 7F BF 07 3F 00-00 00 C1 FB 3F 00 00 00  

1186:03D0 01 00 05 7F FF 0C 00 FC-3F 00 80 1D 20 00 00 00  

1186:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00    

1186:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA  



;显示表明以上分区表内容已改好  

-q  

;退出DEBUG,重新启动系统,一切OK!Haha,软盘、硬盘都不能启动系统了! 
症状说明:  

  1.只修改C盘的分区类型,即将分区类型06改为02后,硬盘不能启动,A盘可以启动。 
  2.只做循环链表,Win95/98不能启动,但DOS 6.22可正常启动,启动后将有相同容量、相同数据的24个逻辑驱动器(从C盘到Z盘),启动时提示如下错误信息:  

    Warning:Logical drives past Z exist and will be ignored  
  3.以上两条都修改后,C盘、A盘的DOS 6.22 都不能启动,但可用 A 盘的DOS 3.3启动,启动后可以运行FDISK命令,也可用DEBUG等工具修改分区表 
  由此可见,硬盘逻辑锁只针对DOS高版本有效,对DOS 3.3根本不起作用,循环链表对Win95/98 的DOS 即已经有效。  
解开硬盘锁的方法:  
需在另一台机器上制作一张“启动盘2”,具体过程如下:  
C:DOS>DEBUG  

-a 100  

mov ax,201      

mov bx,2000    

mov cx,1      

mov dx,80      

int 13  

mov al,06   ; C的分区类型改为06    

mov [21c2],al  

mov al,0                      

mov [21d2],al ; D的分区类型改为0 ,屏蔽其它分区  

mov [21e2],al ; E的分区类型改为0             目的在于破坏循环链  

mov [21f2],al ; F的分区类型改为0    

mov ax,301    

mov bx,2000    

mov cx,1      

mov dx,80  

int 13  

jmp ffff:0000  

↙  

-w 100 0 0 1 ;将本段程序写到软盘的逻辑0扇区,使之成为引导程序  

-q  

  用作好的“启动盘2”启动死锁机器,然后取出该“启动盘2”,再次开机切换到DOS 6.22系统,此时用 Norton 的 DISKEDIT.EXE 等工具或直接用 DEBUG 即可修复分区表。  

  如果按照前面讲的将原主引导备份到软盘物理第二扇,也可以用“启动盘1”恢复主引导扇区的内容,一启动即告成功恢复。

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜