皮皮网

【音乐播放器 android 源码】【图们源码开发】【源码提取函数】硬盘锁源码

2024-11-23 03:28:38 来源:c 人员抽签 源码

1.解开硬盘逻辑死锁的硬盘一种有效方法
2.如何做硬盘锁
3.如何解密硬盘密码

硬盘锁源码

解开硬盘逻辑死锁的一种有效方法

       一·序言

       不知道你是否曾碰到过从软盘和硬盘都启动不了计算机的情形?一般计算机的硬盘分区表被病毒感染后,若不能启动机子,锁源通常从软盘可以启动。硬盘但在严重的锁源情形下 ,不但从硬盘不能启动机子,硬盘就是锁源音乐播放器 android 源码从软盘也不能启动。有的硬盘恶毒的病毒就能使硬盘被死锁。笔者一次在自己机子上玩弄硬盘锁时,锁源就被锁住过一次。硬盘结果在硬盘下选择DOS或WIN模 式启动机子都死机,锁源在软盘下用DOS启动也死机;在COMS中将硬盘类型选择None,硬盘虽然可以从软盘启动,锁源但启动后没有硬盘,硬盘使用软盘上的锁源FDISK命令,想重新分区或格式化都没门。硬盘 弄得我一筹莫展。

       本来,硬盘被锁住时,可以采用3.0以下的DOS版本启动机子,机子启动后虽然也不认硬盘,但其不认的原因在于其管理不了现在的大硬盘,因此可以用Debug修改硬盘 分区表,修改后可以启动。但在已进入WINDOWS的年代,3.0以下的DOS实难找到,即使找到,你的机子上恐怕也因没有5寸软驱而不能使用。因此,最好的办法是编制一个程序来解决 这个问题。笔者通过尝试和思考,找到一种比较实用的方法,可以轻松解开死锁的硬盘,当然也把自己的硬盘解开了。下面,我将这种方法介绍出来。

       二·硬盘锁住原理

       硬盘锁住通常是图们源码开发对硬盘的分区表做手脚,因此首先应该了解硬盘的分区表。硬盘分区表位于0柱面0磁头1区,这个扇区的前面多个字节是主引导程序,后面从BEH 开始的个字节是分区表。分区表共字节,分为4栏,每栏字节,用来描述一个分区。如果是用DOS的FDISK程序分区后,最多只用两栏,第一栏描述基本的DOS分区,第二栏描述 扩展的DOS分区。

       分区表一栏的结构与各字节的含义如下:

       H-标志活动字节,活动DOS分区为H,其它为H。

       H-本分区逻辑0扇区所在的磁头号。

       H-逻辑0扇区所在柱面中的扇区号。

       H-逻辑0扇区所在的柱面号。

       H-分区类型标志。

       H-本分区最后一个扇区的磁头号。

       H-最后一个扇区的扇区号。

       H-最后一个柱面的柱面号。

       H-硬盘上在本分区之前的扇区总数,用双字表示。

       0CH-本分区的扇区总数,从逻辑0扇区计数,不含隐藏扇区,用双字表示。

       在上面的介绍中给出的柱面号与扇区号虽然各占一个字节,但实际上扇区号用6位表示,柱面号用位表示,扇区号所在字节的最高两位实际上是柱面号的最高两位。

       分区表的最后两个字节是分区表的有效标志,如果将其改变,将不能从硬盘启动,源码提取函数这是一种简单的锁住硬盘的方法。解决的办法是从软盘启动,启动后硬盘仍然可以 使用。用Debug或Noratn中的Diskedit软件将硬盘该分区表中的标志恢复,则从硬盘启动也没有问题了。锁住硬盘的另一种方法是对分区参数做手脚,如果将分区参数全部变为0,则 启动时由于找不到分区参数,从硬盘是没法启动,从软盘启动后也不认硬盘,如果你敲入盘符C并回车,将出现提示Invalid

       driver

       specification。但所幸的是,毕竟可以启动机子,不认硬盘没关系,在A盘上用DOS的Debug仍然可以读出硬盘0柱面0磁头1扇区的内容,修改后再写入0柱面0磁头1扇 区,重新启动机子又没问题了。如果将分区表参数随意改为其它参数,则有可能不能用可以安装DOS的DOS系统盘启动,按F3退出后将出现内存分配错误,不能装载DOS的命令解释 器COMMAND的提示,系统就死机了,笔者就曾碰见过这种情形。但用一张格式化成系统盘的软盘则可以顺利启动,只要有Debug,你仍然可以将分区表参数修改回去。可怕的事情是, 如果你不幸将分区表参数改成一个循环链,即C盘的下一个分区指向D驱,D驱的下一个分区又指向C区,这样循环下去,DOS启动或WIN启动时由于无休止的读取逻辑驱动器,就只有 死机的份了。这是商业应用源码只要有硬盘存在,不管你用软盘还是硬盘都没法启动机子了,由于不能启动是由于硬盘造成的,即使你将硬盘下到其它计算机上,也没法使用,这样硬盘就彻底被 锁死了,笔者所遭遇就是此情形。不信,你只需将硬盘0柱面0磁头1扇区的1D0H处改为1(如果你的D驱开始柱面号不够大,此处本来就为1),将1D1H处改为0,表示D盘的开始柱面号 跟C盘一样,看看你的计算机还能不能启动,不过你在没有充分的准备前绝不要试。

       一个完整的硬盘锁程序,不过是重新改写0柱面0磁头1扇区的引导程序,并将分区表破坏或故意制造一个循环分区表,而将真正的硬盘分区表参数和引导程序放在其它 隐藏扇区并保护起来,如果启动时口令不对,则不能启动机子,口令对了则顺利启动。这种硬盘锁程序,情形好的还可以用软盘启动;情形严重的就是连软盘也不能启动,硬盘真被 锁住。

       三·解开硬盘锁的程序法

       如果硬盘被锁死,是否真的就无法解开呢?当然不是。看看问题的症结所在,根源在于DOS中的IO.SYS文件,它包含LOADER、IO1、IO2、IO3四个模块,其中IO1中包含 有一个很关键的程序SysInt_I,它在启动中很固执,非要去读分区表,而且不把分区表读完誓不罢休。pp页面源码如果碰上分区表是循环的,它就只有死机了。这是DOS的脆弱性和不完备性。其 实这也不能怪DOS,因为DOS为了获得硬盘使用权,就必需读分区表参数,而且DOS还约定驱动器号不能超过,只不过没有考虑到此等循环分区表情形。一句话,机子不能启动不过是 DOS操作系统造成的,如果另写一个操作系统,或许就能启动机子。当然这只是说个笑话。

       明白了病因在于DOS,问题就好办了。DOS启动中不是要读硬盘分区表吗?我不让你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁 的程序实现方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。

       看看计算机的启动过程,上电首先进行的多项硬件自测跟我们没有关系,我们关心的只是它最开始和磁盘打交道时是干什么。如果选择从硬盘启动,则计算机和磁盘 最开始打交道是将硬盘0柱面0磁头1扇区的内容读入内存:7C处并跳到:7C处执行;如果选择从软盘启动,则计算机和磁盘最开始打交道是将A盘0磁道0磁头1扇区的内容 读入内存:7C处并跳到:7C处执行,在执行过程中,计算机并不检查该扇区的内容是什么,只机械地执行读命令,这使得许多系统型病毒得以生存。但利用这一点,恰 恰使我们的程序解锁法有了用武之地。如果我们用DOS格式化一张可以启动机子的系统软盘,将该软盘的0磁道0磁头1扇区的内容移到后面的空白扇区中,而重新写一段程序到该软盘 的0磁道0磁头1扇区,这样用软盘启动时首先执行的是我们所写的程序了。在这段程序中,具备这样一些功能:在DOS启动前抢先拦截INT

       H,驻留高端内存并监视INT

       H,判断是否读硬盘,如果是读硬盘就直接返回,这样就禁止了读硬盘,也就避免了DOS读硬盘循环分区表造成的死机;同时拦截对软盘的读取,如果读软盘的0磁道 0磁头1扇区,就改成读真正有引导程序和磁盘参数表的扇区,免得DOS在启动中找不到软盘的磁盘参数表而死机。完成这些任务的同时,还要读取软盘真正的引导程序并把控制权交给 它。

       该方法可以称为万能的,因为它在用软盘启动中,始终不与硬盘打交道,这样不管你硬盘用什么方法加锁了,对DOS的启动都没有影响。当然,这样启动的机子是不认 硬盘的,但这没有关系。你可在机子启动后,用Debug调出驻留高端内存的新INT

       H程序,将其改为只有一条直接执行旧INT H的语句,这样在Debug下可以用INT

       H读取硬盘0柱面0磁头1扇区的内容,如果你有备份,将分区表参数恢复后再写入0柱面0磁头1扇区,重新启动计算机就可以了。如果实在没有备份,去掉分区表中的 循环链,用正常DOS启动盘重启机子后至少也可以重新对硬盘分区,不至于硬盘被锁住打不开了。

       四·程序及说明

       1·下面是写入软盘0磁道0头1扇区的源程序key.com,程序用debug输入。

       Cdebug

       -a

        CLI

        XOR AX,AX

        MOV DS,AX

        MOV ES,AX

        MOV SS,AX

        MOV AX,7C

       C MOV SP,AX

       E STI

       F MOV SI,AX

        MOV DI,7E

        CLD

        MOV CX,

        REPNZ

        MOVSB

       A JMP :7E1F

       F MOV CX,

        PUSH CX

        MOV AX,;读启动软盘的引导扇区

        MOV BX,7C

        MOV CX,4F

       C MOV DX,

       F INT

        POP CX

        DEC CX

        JNZ

        MOV AX,[C];抢先获取INT H的位置

        MOV [7E],AX

       B MOV AX,[E]

       E MOV [7E8A],AX

        MOV AX,[]

        DEC AX

        MOV [],AX

        MOV CL,

       A SHL AX,CL

       C MOV ES,AX

       E XOR AX,AX

        MOV DS,AX

        MOV SI,7E6D;复制改写的INT H程序到高端内存

        MOV DI,

        MOV CX,

       B REPNZ

       C MOVSB

       D MOV AX,;将新INT H位置写入中断向量表

        MOV [C],AX

        MOV AX,ES

        MOV [E],AX

        JMP :7C

       D PUSHF;新INT H程序

       E CMP DX,;是否是硬盘

        JNZ ;不是硬盘则继续

        POPF

        IRET;是硬盘则直接返回

        CMP DX, ;是否读软盘BOOT区?

        JNZ

       B CMP CX,

       E JNZ

        MOV CX,4F;是则读磁道1磁头1扇区

        MOV DX,

        POPF

        JMP :;此处跳转去执行旧INT ,

        ;旧INT H的位置由前面程序获得后写入。

       N key.com

       RCX

       

       W

       Q

       2·程序的装载

       在进行下面工作前,先用DOS格式化一张启动的系统盘,并保证没有坏扇区,最好进行启动测试,确保其可以启动机子。由于现在机子上大多只有3寸软驱,因此选 择1.M的3.5寸软盘。然后用debug

       key.com将程序key.com调入内存偏移地址为H,同时在H处写入一段装载程序。即:

       Cdebug key.com

       -a

        MOV CX,

        PUSH CX

        MOV AX,;将A盘引导程序读入内存H处

        MOV BX,;为确保成功,首次采用重复读3次

       A MOV CX,

       D MOV DX,

        INT

        POP CX

        DEC CX

        JNZ

        MOV AX,;将已读入内存的软盘引导程序写入软盘

        MOV BX,;最后一个磁道的首扇区

       C MOV CX,4F

       F MOV DX,

        INT

        MOV AX,;将key.com程序写入软盘0磁道0磁头1扇区

        MOV BX,

       A MOV CX,

       D MOV DX,

        INT

        INT 3

       为保证万无一失,最好将软盘这两个扇区的内容重新读出来看一看,以保证写成功了。做好这一切,保险的还是进行一次测试,即用该软盘启动一次机子,看能否成 功,若成功启动,你就可以用循环分区表法锁住硬盘,看从正常DOS下能否启动,然后再用此软盘启动机子试试,看看功效如何?

       从该软盘启动后,不认硬盘,并且在高端内存驻留了新INT

       H程序,该段程序实际上是key.com中从D到部分。由于有此段程序存在,在debug下也无法读硬盘,也就没法恢复硬盘分区表,因此机子启动后首先应修改这段 程序。现在的机子基本内存通常都为K,这样这段程序就位于内存中9FC0:处,在debug下,用U9FC0:0显示这段程序,可以看到位于9FC0:A处是一条跳转指令,该跳转指 令即转去执行最原始的INT

       H。由于BIOS版本不一样,跳转指令指向的位置可能不一样,如笔者机子上是一条JMP

       F:A5D4语句。这时在在debug下编写这样一语句:a9FC0:0 JMP

       F:A5D4。这样,对硬盘的禁写与禁读都不再起作用了,在debug下用INT

       H的2号子功能可以读出硬盘分区表,修改恢复后再用3号子功能将数据写回分区表。退出debug,重新用正常DOS启动计算机,就可以了。

       附带提一下,在正常DOS下,该软盘由于没有BOOT区,也就没有磁盘参数表,从而不能使用,用DIR A:命令会出现General

       failure reading drive A提示。不要理睬它,这并不影响它作特殊启动盘。

       五·建议

       为更好的保护你的硬盘,笔者建议你最好将你的硬盘分区表信息备份起来。备份有两种方式,一种是以文件形式将硬盘每个逻辑盘的分区信息存储起来;另一种是将 分区信息备份在硬盘隐藏扇区里。比如可以将0柱面0磁头1扇区备份在0柱面0磁头3扇区,将D盘开始柱面号0磁头1扇区备份在该柱面0磁头3扇区,其它逻辑盘也如此。这种方法简单、 方便,也很可靠。用NORTAN中的DISKEDI很容易操作和实现。有了备份分区表信息,就不怕破坏分区表的病毒了;再加上我给你的程序,即使有人真锁住了你的硬盘,你也可以轻而易 举解开了。

如何做硬盘锁

       1、首先将移动硬盘或者U盘插入电脑的USB接口。然后打开计算机的资源管理器,即打开我的电脑。在移动硬盘上点击鼠标右键,选择启用bitlocker。

       2、此时系统会自动调用bitlocker功能。要选择一种加密的方式,一般情况用到最多的是第一种加密方式,即密码加密方式。点选这个复选框,然后在下面的两个输入框中输入再次一样的所设定的密码,然后点击下一步。

       3、在此步骤中要选择保存密码的方式,这里提供了两种方式,一种是保存到文件,另一种是将密码打印出来,然后保存,一般采用第一种方式,即将密码保存到文件。

       4、点击之后,会出现一个保存密码的页面。将你的密码保存到一个安全的位置,点击保存后进入下一步骤。

       5、接下来会有一个加密确认页,选择启动加密按钮,开始磁盘的加密。此时会跳出一个驱动器加密的进度显示页,在此框中显示了加密的详细信息,包括进度等信息。此时要做的就是耐心等待。直到加密完成。

如何解密硬盘密码

       操作步骤如下:

       1、在电脑的右下角点击开始,然后可以看到控制面板并且点击控制面板。

       2、在电脑的控制面板中找到BitLockeer驱动器加密并且点击BitLocker驱动器加密。

       3、这时,可以看到当前的E盘处于启用BitLocke状态,接着点击其右侧的关闭BitLocker。

       4、进入到关闭BitLocke的页面以后,这时候选择解密驱动器。

       5、点击解密驱动器以后,系统会自动对驱动器进行解密,解密过程中你会发现E盘全是红条,这时候只需要等待系统完成解密就可以了。

扩展资料:

       硬盘锁的一些代码:

       安全密码设置SSP:(F1H) 

       安全解锁SU:(F2H) 

       密码主动删除SEP:(F3H) 

       单元删除SEU:(F4H) 

       冻结锁定SFL:(F5H) 

       取消密码SDP:(F6H) 

       安全模式仅限于IDE硬盘,SCSI硬盘不支持这些操作码。 

       密码有用户密码和主控密码,可以同时设置也可以单独设置。一般建议同时设置且不要相同。 

       主控密码可以由制造商或者销售商或者管理员等通过SSP(F1H)命令设置,设置主控密码不需要进入锁定状态。 

       用户密码由使用用户自己设置,设置了用户密码后,在硬盘下次加电后会自动进入锁定模式。