再论制硬盘逻辑锁
姜卓睿 雷必武
一、序言
由于教学工作需要,本人在参看了贵刊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
相关文章:
我国科学家成功研制全球神经元规模最大的类脑计算机
来源 | 之江实验室(ID:zhejianglab)9月1日,浙江大学与之江实验室举办成果发布会,共同发布我国首台基于自主知识产权类脑芯片的类脑计算机(Darwin Mouse)。浙江大学校长吴朝晖院士出席并讲话。他…

批处理获取目录下所有文件名
由于要处理一些文件,找了个这样的批处理: 输出目录及子目录下所有的jpg图片的文件名,不含扩展名 1 echo off 2 cd.>List.txt 3 for /f "delims" %%i in (dir /s/a-d /b *.jpg) do >>List.txt echo %%~ni>>JustName.…

1001: 整数求和
描述:求两个整数之和输入:输入数据只包括两个整数A和B。输出:两个整数的和。样例输入:1 2样例输出:3考点:运算符代码: #include <stdio.h> int main() {int a,b;int c;scanf("%d",&a);scanf("%d",&b);cab;printf("%d",…

ASP.NET 2.0 中的新增安全功能
发布日期: 8/26/2004| 更新日期: 8/26/2004Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 Microsoft ASP.NET framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要:ASP.NET 2.0 包含一些新…
GitHub 标星 20000+,国产 AI 开源从算法开始突破 | 专访商汤联合创始人林达华
作者 | 阿司匹林责编 | 李雪敬封图 | CSDN 下载自视觉中国作为已经有4000多名员工的AI独角兽,商汤的一举一动备受关注。从2018年开始,奔着“开源、统一、可复现”的目标,商汤开始建设人工智能算法的开源体系。当时,商汤联合创始人…

那些年,我们一起学过的汇编----之伪指令
弄懂了前面几篇关于基础的文章,下面就开始我们真正的汇编之旅了,在这一篇中我们着重来强调下汇编语言的伪指令。伪指令是汇编语言程序设计中的一个主要的部分,属于控制命令,在汇编语言中的数据定义、存储单元分配、指示程序结果等…

JavaScript-数据引用类型对象
1 <!DOCTYPE html>2 <html>3 <head lang"en">4 <meta charset"UTF-8">5 <title></title>6 </head>7 <body>8 <script>9 //按值传递:两个变量间赋值时,或将变量作为参数传入函数时,其实…
热点 | Excel不“香”了,数据分析首选Pyhton!
Excel一直在求职中有着不可动摇的地位无论是投行、咨询、四大曾经都会在JD中明确要求会Excel,而Excel称霸的时代已经过去!事实上,为了追求更高的效率和质量,他们开始使用比Excel更高效的Python,随后交易收入增长了15%。…

ASP.NET中实现打印
怎样才可以调用打印机进行打印并且对纸张类型进行设置呢? --------------------------------------------------------------- <OBJECT id"WebBrowser" height"0" width"0" classid"CLSID:8856F961-340A-11D0-A96B-00…
you have new email in /var/spool/mail/root/
有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 解决方法:修改系统配置文件/etc/profile,告诉系统不要去检查邮箱. 具体操作: 命令行输入:echo "unset MAILCHECK" >> /etc/profile 【把…

写时复制,写时拷贝,写时分裂,Copy on write
2019独角兽企业重金招聘Python工程师标准>>> 写时复制,写时拷贝,写时分裂 (Copy-on-write,简称COW)是计算机资源管理方面的一种优化技术,有着广泛的应用,比如内存管理(进…

C#生成pdf的源代码
作者:qieyj(温馨港湾) http://search.csdn.net/Expert/topic/1256/1256076.xml?temp.1866419//write by wenhui.orgusing System;using System.IO;using System.Text;using System.Collections; namespace PDFGenerator{ public class PDFGenerator{static fl…
迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征
来源 | 我爱计算机视觉(ID:aicvml)本文将介绍一种基于特征分离的通用人类姿态特征的学习算法Unsupervised Human 3D Pose Representation with Viewpoint and Pose Disentanglement。该算法从无监督的特征分离过程中,习得了一个迁移性好、多用…

解決Linux下Android开发真机调试设备不被识别问题
为什么80%的码农都做不了架构师?>>> 在google找了不少关于这个的资料,各种添加和修改系统文件,但是我的defy依旧没有被识别。尼马的! 好吧,是我低估了Android的sdk的adb调试工具,其实简单的两个…

在Server 2003上部署IIS+PHP+MySQL配置清单
在Server 2003上部署IISPHPMySQL I.安装Windows Server 2003 将光盘放入光驱中,设置BIOS,从CDROM引导加载安装程序,等待启动; 设置注册信息,名字和公司组织名; 填写安装密钥; 设置远程连接数目&…
用Python打造一款文件搜索工具,所有功能自己定义
前言在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将基于几个常见的搜索操作讲解。扫描路径内的内容有些时候我们会希望在当前文件夹…

vlan间路由实验
路由与交换技术实验报告 实验7 vlan间路由实验 班级:130462 姓名:张欣国 学号:13046210 一、 实验目的 1. 了解vlan间路由的不同方法; 2. 了解路由备份; 二、 实验步骤与内容 1. 详细阅读操作过程,认真完…

.net中连接SYBASE的种种问题
作者:zwztu http://search.csdn.net/Expert/topic/1612/1612693.xml?temp.2369806首先如果用OLEDB连呢?如果用ASE 的OLEDB 提供者,那这个提供者哪里有下呢? 其次如果用MSDATASHAPE连,可以是可以,…

struts2中使用标签操作静态方法等
2019独角兽企业重金招聘Python工程师标准>>> 有的时候对<%%>特别敏感,不想用jsp的<% %>来调用java类中的静态方法,这时候我们可以用struts2的ognl标签来调用。 下面为struts2的配置文件: <struts><!-- ognl标…
5年5亿美金,华为昇腾如何构建全行业AI生态?
作者 | 阿司匹林出品 | CSDN(ID:CSDNnews)2018 年,在第三届 HUAWEI CONNECT(华为全联接大会)上,华为首次公布了 AI 战略与全栈全场景 AI 解决方案,其中包含全球首个覆盖全场景人工智能的华为昇腾…

avascript中的this与函数讲解
徐某某一个半路出家的野生程序员javascript中的this与函数讲解 前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域。并且,大家可以认为全局作用域其实就是Window函数的函数作用域ÿ…
英特尔第11代酷睿处理器TigerLake发布,集成Xe GPU,采用10nm制程技术
2020 年 9 月 2 日,英特尔发布了下一代移动 PC 处理器,,搭载英特尔锐炬 Xe 显卡的全新第 11 代智能英特尔酷睿处理器(代号“Tiger Lake”)是全球性能领先的轻薄型笔记本处理器,能够为Windows 和 ChromeOS 系…

带闰年判断的正则表达式
作者: xixigongzhu(夕夕公主) http://search.csdn.net/Expert/topic/1974/1974227.xml?temp.6640131首先,你的年的范围是1800-3999润年:1800,1900,2100,2200,2300,2500&#x…

FTP命令解析
FTP命令是Internet用户使用最频繁的命令之一,不论是在DOS还是UNIX操作系统下使用FTP,都会遇到大量的FTP内部命令。熟悉并灵活应用FTP的内部命令,可以大大方便使用者,并收到事半功倍之效。 FTP的命令行格式为: ftp -v -…

openresty 前端开发入门五之Mysql篇
2019独角兽企业重金招聘Python工程师标准>>> openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-mysql库,代码可以在github上…

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)
http://www.cnblogs.com/TomXu/archive/2012/01/12/2308594.html 本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章)。每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的…

显示打印对话框
Montaque(Rain ManRainman) http://search.csdn.net/Expert/topic/1756/1756799.xml?temp.8004572加一个printdialog到form上,然后调用 printDialog1.ShowDialog() --------------------------------------------------------------- Dim pt As Printi…

百度CTO王海峰服贸会展示AI新基建成果,飞桨获“科技创新服务示范案例”奖
AI正在为各行各业注入新活力,而AI新基建也在为包括服务贸易领域在内的社会经济发展提供新动力。9月4日,万众瞩目的2020中国国际服务贸易交易会正式召开。这是疫情发生以来,我国在线下举办的第一场重大国际经贸活动,吸引了1.8万家境…

创建画布(验证码)
<?php //创建画布$width 500;$height 800;$imageimagecreatetruecolor($width,$height);//var_dump($image); //处理画布 //imagecolorallocate() 分配颜色到画布上,选择一个颜色。//分配颜色$greenimagecolorallocate($image,0,255,0);//填充(油漆…
认知推理下的常识知识库资源、常识测试评估与中文实践项目索引
作者 | 刘焕勇责编 | 李雪敬出品 | CSDN博客Cognitive InferenceCognitive Inference,认知推理、常识知识库、常识推理与常识推理评估的系统项目,以现有国内外已有的常识知识库为研究对象,从常识知识库资源建设和常识推理测试评估两个方面出发…