zoukankan      html  css  js  c++  java
  • 制硬盘逻辑锁


    制作前的准备:
    先将本硬盘备份到软盘中,这里是保存在软盘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”恢复主引导扇区的内容,一启动即告成功恢复。
  • 相关阅读:
    worker与redis网络中断后,worker不再接受任务的异常问题
    Pyecharts 绘制动态流线地图
    MySql存储过程知识了解
    Pyecharts配置项使用
    Pandas一个需求:存在一个列表,需要在一个DataFrame中取到以该列表为索引的数据
    mysql时间与字符串之间相互转换
    map + apply + applymap
    pandas——read_csv
    Python 原生协程------asyncio(选自公众号)
    一道记数题
  • 原文地址:https://www.cnblogs.com/ahuo/p/414643.html
Copyright © 2011-2022 走看看