再 论 制 硬 盘 逻 辑 锁

原创 2001年02月28日 14:14:00

再 论 制 硬 盘 逻 辑 锁

姜卓睿 雷必武

 一、序言

由于教学工作需要,本人在参看了贵刊98年第4期《硬盘逻辑锁技术研究及应用》与99年第3期《解开硬盘逻辑死锁的一种有效方法》的文章之后,决定以同类方法尝试一下,结果未获得成功,又“苦于”没有KV300 L++ 版,不得不自己做一个硬盘逻辑锁。在制作过程中发现,仅仅只做循环链表是不够的,并不能锁住硬盘。以下是本人经过多次实验后,总结出的一套加锁和解锁的方法,(本文所述均在本机上获得通过!)以供大家参考。硬盘逻辑锁的原理请参见以上文章。

二、制作前的准备:

    先将本硬盘(笔者使用的是Quantum SE 3.2G硬盘,C盘2.1G,D盘1.1G)的主引导程序(即0磁头0柱面1扇区的内容)备份到软盘中,这里是保存在软盘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”。

三、制作硬盘锁   

    我们先看一看硬盘分区表的信息(下述为实例,读者在操作中,显示的段地址不一定是1186):

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

           笔者在多年前就做过循环分区链表,它对DOS 6.22 的启动可以说无效,但对付DOS 6.22 的FDISK命令很管用,一运行就“死机”(同 Win95/98 启动一样,因循环检查分区链表而呈死机状)。

    3.以上两条都修改后,C盘、A盘的DOS 6.22 都不能启动,但可用 A 盘的DOS 3.3启动,启动后可以运行FDISK命令,也可用DEBUG等工具修改分区表(无需顾及C盘容量是否超过33M)。

       由此可见,硬盘逻辑锁只针对DOS高版本有效,对DOS 3.3根本不起作用,循环链表对Win95/98 的DOS 即已经有效。

五、解开硬盘锁的方法:

    采用贵刊98年第4期《硬盘逻辑锁技术研究及应用》文中所述修改CMOS的方法也无法启动系统,也就无法解开此逻辑锁,需在另一台机器上制作一张“启动盘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”恢复主引导扇区的内容,一启动即告成功恢复。

  

通讯地址:   430062  湖北大学经济学院     雷必武

E-mail:   laybw@163.net

     Or   jiangzhuorui@163.net


(未看)ORACLE物理读和逻辑读(SET AUTOTRACE ON 部分参数解释)[逻辑IO只有逻辑读,没有逻辑写]

逻辑IO只有逻辑读,没有逻辑写 ORACLE物理读和逻辑读(SET AUTOTRACE ON 部分参数解释) set autotrace 产生部分信息解读的官方文档基本的定义为如下: ...
  • haiross
  • haiross
  • 2013年09月29日 17:12
  • 1514

多启动U盘制作流程

看多了网上的一键制作U盘启动盘的工具,有没有想过自己动手熟悉一下U盘启动盘的制作过程呢? 这篇文章将告诉你如何一步一步制作「多系统启动U盘」。...
  • u014717036
  • u014717036
  • 2017年02月07日 18:24
  • 767

制作启动U盘与定制多系统启动

制作启动U盘与定制多系统启动 说明:本文将讲述有关bootmgr引导启动与grub引导启动制作的相关经验,文中提到的知识谈不上完全正确,只是一些个人在制作U盘启动获得的心得,但我会尽力正确的解释...
  • jairkong
  • jairkong
  • 2014年05月20日 11:56
  • 1953

利用GINA实现U盘开机锁

一、原理        GINA是WinLogon的可插入部件。Windows操作系统中Winlogon进程负责管理与登录和身份认证相关的安全性工作,包括处理用户的登录与注销、启动用户shell...
  • wwjshao
  • wwjshao
  • 2014年08月20日 13:28
  • 752

分布式锁的三种实现方式

写在前面在进行大型网站技术架构设计以及业务实现的过程中,多少都会遇到需要使用分布式锁的情况。那么问题也就接踵而至。分布式锁zk和memcached以及redis三者都能实现,同样是分布式锁,三者的区别...
  • wwh578867817
  • wwh578867817
  • 2016年08月17日 21:05
  • 3788

U盘被分区后的恢复

之前使用微PE工具箱制作启动U盘,把U盘分成了两个分区,结果我的ubuntu不能识别出U盘,所以就想把U盘的两个分区重新合为一个,在Windows的设备管理器-》存储里解决不了,在网上找了好久好久,终...
  • wwwdc1012
  • wwwdc1012
  • 2016年09月01日 12:50
  • 830

罗辑思维,古典:“超级个体” 观后随笔

0,哪个火,哪个赚钱,模仿者的失败在于你不知道对方成功的真正原因,或者背后的原因,隐藏的因素, 听到别人学个3个月u3d就找到10K+的工作,自己也跃跃欲试,然而别人没告诉你自己是XX大学计算机毕业...
  • u013733918
  • u013733918
  • 2016年12月18日 14:53
  • 1691

【罗辑思维】这一代人的学习

感谢各位来到罗辑思维捧场! 这将是我最后一次说起这句话,因为您现在看到的是最后一期的《罗辑思维》节目。当然接下来我也不会饶了自己的,我会做什么呢?先卖个关子,本期节目的结尾再向大家交代。 既然是最...
  • congwiny
  • congwiny
  • 2017年03月16日 21:39
  • 1865

R-RODBC-数据库

在学习R连接数据库阶段时,使用语句library(RODBC) 报错误:不存在叫'RODBC'这个名字的程辑包 到R的安装目录看了一下确实没有这个包。 然后发现应该要先要安装这个程序包install...
  • sterman
  • sterman
  • 2013年07月04日 10:41
  • 1380

U盘被锁的解决方法

进入注册表 cmd-->regedit 定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Storage项上,看看有没有Storag...
  • huangbaokang
  • huangbaokang
  • 2018年01月17日 18:01
  • 21
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再 论 制 硬 盘 逻 辑 锁
举报原因:
原因补充:

(最多只允许输入30个字)