当前位置: 首页 > 编程日记 > 正文

再论制硬盘逻辑锁

姜卓睿 雷必武

一、序言

由于教学工作需要,本人在参看了贵刊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

相关文章:

​我国科学家成功研制全球神经元规模最大的类脑计算机

来源 | 之江实验室&#xff08;ID&#xff1a;zhejianglab&#xff09;9月1日&#xff0c;浙江大学与之江实验室举办成果发布会&#xff0c;共同发布我国首台基于自主知识产权类脑芯片的类脑计算机&#xff08;Darwin Mouse&#xff09;。浙江大学校长吴朝晖院士出席并讲话。他…

批处理获取目录下所有文件名

由于要处理一些文件&#xff0c;找了个这样的批处理&#xff1a; 输出目录及子目录下所有的jpg图片的文件名&#xff0c;不含扩展名 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考点:运算符代码&#xff1a; #include <stdio.h> int main() {int a,b;int c;scanf("%d",&a);scanf("%d",&b);cab;printf("%d",…

ASP.NET 2.0 中的新增安全功能

发布日期&#xff1a; 8/26/2004| 更新日期&#xff1a; 8/26/2004Stephen Walther Microsoft Corporation 适用于&#xff1a; Microsoft ASP.NET 2.0 Microsoft ASP.NET framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要&#xff1a;ASP.NET 2.0 包含一些新…

GitHub 标星 20000+,国产 AI 开源从算法开始突破 | 专访商汤联合创始人林达华

作者 | 阿司匹林责编 | 李雪敬封图 | CSDN 下载自视觉中国作为已经有4000多名员工的AI独角兽&#xff0c;商汤的一举一动备受关注。从2018年开始&#xff0c;奔着“开源、统一、可复现”的目标&#xff0c;商汤开始建设人工智能算法的开源体系。当时&#xff0c;商汤联合创始人…

那些年,我们一起学过的汇编----之伪指令

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

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&#xff0c;而Excel称霸的时代已经过去&#xff01;事实上&#xff0c;为了追求更高的效率和质量&#xff0c;他们开始使用比Excel更高效的Python&#xff0c;随后交易收入增长了15%。…

ASP.NET中实现打印

怎样才可以调用打印机进行打印并且对纸张类型进行设置呢&#xff1f; --------------------------------------------------------------- <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 解决方法&#xff1a;修改系统配置文件/etc/profile&#xff0c;告诉系统不要去检查邮箱. 具体操作&#xff1a; 命令行输入&#xff1a;echo "unset MAILCHECK" >> /etc/profile 【把…

写时复制,写时拷贝,写时分裂,Copy on write

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

C#生成pdf的源代码

作者&#xff1a;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…

迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征​

来源 | 我爱计算机视觉&#xff08;ID:aicvml&#xff09;本文将介绍一种基于特征分离的通用人类姿态特征的学习算法Unsupervised Human 3D Pose Representation with Viewpoint and Pose Disentanglement。该算法从无监督的特征分离过程中&#xff0c;习得了一个迁移性好、多用…

解決Linux下Android开发真机调试设备不被识别问题

为什么80%的码农都做不了架构师&#xff1f;>>> 在google找了不少关于这个的资料&#xff0c;各种添加和修改系统文件&#xff0c;但是我的defy依旧没有被识别。尼马的&#xff01; 好吧&#xff0c;是我低估了Android的sdk的adb调试工具&#xff0c;其实简单的两个…

在Server 2003上部署IIS+PHP+MySQL配置清单

在Server 2003上部署IISPHPMySQL I.安装Windows Server 2003 将光盘放入光驱中&#xff0c;设置BIOS&#xff0c;从CDROM引导加载安装程序&#xff0c;等待启动&#xff1b; 设置注册信息&#xff0c;名字和公司组织名&#xff1b; 填写安装密钥&#xff1b; 设置远程连接数目&…

用Python打造一款文件搜索工具,所有功能自己定义

前言在日常的办公中&#xff0c;我们经常会从一堆不同格式的文件(夹)中搜索特定的文件&#xff0c;可能你是凭着记忆去找或是借助软件&#xff0c;但你有想过如何用Python实现吗&#xff1f;本文将基于几个常见的搜索操作讲解。扫描路径内的内容有些时候我们会希望在当前文件夹…

vlan间路由实验

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

.net中连接SYBASE的种种问题

作者&#xff1a;zwztu http://search.csdn.net/Expert/topic/1612/1612693.xml?temp.2369806首先如果用OLEDB连呢&#xff1f;如果用ASE 的OLEDB 提供者&#xff0c;那这个提供者哪里有下呢&#xff1f; 其次如果用MSDATASHAPE连&#xff0c;可以是可以&#xff0c…

struts2中使用标签操作静态方法等

2019独角兽企业重金招聘Python工程师标准>>> 有的时候对<%%>特别敏感&#xff0c;不想用jsp的<% %>来调用java类中的静态方法&#xff0c;这时候我们可以用struts2的ognl标签来调用。 下面为struts2的配置文件&#xff1a; <struts><!-- ognl标…

5年5亿美金,华为昇腾如何构建全行业AI生态?

作者 | 阿司匹林出品 | CSDN&#xff08;ID:CSDNnews&#xff09;2018 年&#xff0c;在第三届 HUAWEI CONNECT&#xff08;华为全联接大会&#xff09;上&#xff0c;华为首次公布了 AI 战略与全栈全场景 AI 解决方案&#xff0c;其中包含全球首个覆盖全场景人工智能的华为昇腾…

avascript中的this与函数讲解

徐某某一个半路出家的野生程序员javascript中的this与函数讲解 前言 javascript中没有块级作用域&#xff08;es6以前&#xff09;&#xff0c;javascript中作用域分为函数作用域和全局作用域。并且&#xff0c;大家可以认为全局作用域其实就是Window函数的函数作用域&#xff…

英特尔第11代酷睿处理器TigerLake发布,集成Xe GPU,采用10nm制程技术

2020 年 9 月 2 日&#xff0c;英特尔发布了下一代移动 PC 处理器&#xff0c;&#xff0c;搭载英特尔锐炬 Xe 显卡的全新第 11 代智能英特尔酷睿处理器&#xff08;代号“Tiger Lake”&#xff09;是全球性能领先的轻薄型笔记本处理器&#xff0c;能够为Windows 和 ChromeOS 系…

带闰年判断的正则表达式

作者&#xff1a; xixigongzhu(夕夕公主) http://search.csdn.net/Expert/topic/1974/1974227.xml?temp.6640131首先&#xff0c;你的年的范围是1800-3999润年&#xff1a;1800&#xff0c;1900&#xff0c;2100&#xff0c;2200&#xff0c;2300&#xff0c;2500&#x…

FTP命令解析

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

openresty 前端开发入门五之Mysql篇

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

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)

http://www.cnblogs.com/TomXu/archive/2012/01/12/2308594.html 本篇是ECMA-262-3 in detail系列的一个概述&#xff08;本人后续会翻译整理这些文章到本系列&#xff08;第11-19章&#xff09;。每个章节都有一个更详细的内容链接&#xff0c;你可以继续读一下每个章节对应的…

显示打印对话框

Montaque(Rain ManRainman) http://search.csdn.net/Expert/topic/1756/1756799.xml?temp.8004572加一个printdialog到form上&#xff0c;然后调用 printDialog1.ShowDialog() --------------------------------------------------------------- Dim pt As Printi…

百度CTO王海峰服贸会展示AI新基建成果,飞桨获“科技创新服务示范案例”奖

AI正在为各行各业注入新活力&#xff0c;而AI新基建也在为包括服务贸易领域在内的社会经济发展提供新动力。9月4日&#xff0c;万众瞩目的2020中国国际服务贸易交易会正式召开。这是疫情发生以来&#xff0c;我国在线下举办的第一场重大国际经贸活动&#xff0c;吸引了1.8万家境…

创建画布(验证码)

<?php //创建画布$width 500;$height 800;$imageimagecreatetruecolor($width,$height);//var_dump($image); //处理画布 //imagecolorallocate() 分配颜色到画布上&#xff0c;选择一个颜色。//分配颜色$greenimagecolorallocate($image,0,255,0);//填充&#xff08;油漆…

认知推理下的常识知识库资源、常识测试评估与中文实践项目索引

作者 | 刘焕勇责编 | 李雪敬出品 | CSDN博客Cognitive InferenceCognitive Inference&#xff0c;认知推理、常识知识库、常识推理与常识推理评估的系统项目&#xff0c;以现有国内外已有的常识知识库为研究对象&#xff0c;从常识知识库资源建设和常识推理测试评估两个方面出发…