大家好,小阳来为大家解答以上的问题。江民杀毒软件序列号,江民炸弹这个很多人还不知道,现在让我们一起来看看吧!
1、KV300逻辑锁技术分析要不是亲自试一下,你一定不会相信。
2、运行下面的程序,你的机器将不能从软盘启动,更不能从硬盘启动。
3、而这个程序仅仅修改了你的硬盘的扩展DOS分区的首隐藏扇区。
4、代码如下(汇编): code segmentassume cs:code,ds:codeorg 100hbegin:xor ax,axmov dl,80hint 13h ;复位硬盘mov ax,201hmov bx,200hmov cx,1mov dx,80hint 13h ;读主引导扇区到200Hmov cx,ds:[3d0h]mov [3ceh],0mov bx,210hmov ax,301hint 13h ;写扩展分区首隐藏扇区int 19h ;快启动code endsend begin程序很短,你可以在DEBUG中输入并运行。
5、再编译成“.com”之后运行。
6、运行之前请保存好硬盘的扩展DOS分区的首隐藏扇区的内容,以备将来恢复时用。
7、笔者是在编制一个硬盘加锁程序时,因计算有误而偶然发现这一点的。
8、仅仅因为修改硬盘一个隐藏扇区,造成机器从软硬盘都不能启动,从未见资料提及。
9、作者当时很惊讶。
10、为了解决问题,笔者按复位键,进入CMOS设置,将硬盘设置为未安装,则可以从软盘启动,但是,使用INT13h仍不能读写硬盘,因此无法将被破坏的扇区复原。
11、笔者估计是引导过程中,读取硬盘分区表时形成循环的缘故。
12、理由有两点:因为仅仅修改硬盘一个扇区,造成了如此现象,而该扇区仅记录了硬盘分区表的一些信息;2、启动过程中,不管从软盘启动还是从硬盘启动,最终的现象都是硬盘灯第亮。
13、因此,换用不支持硬盘分区的低版本DOS系统盘也许能够启动,使用2.0版的系统盘,果然可以在CMOS设置为硬盘正常安装的情况下启动机器,启动后虽仍不能进入硬盘,但可以用INT13h读写硬盘。
14、在DEBUG中用正常的内容覆盖硬盘的扩展DOS分区的首隐藏扇,重新启动机器,成功。
15、为什么从软、硬盘启动都会造成读硬盘分区的死循环呢?笔者为此对硬盘分区表及DOS引导过程进行了分析,提出几点粗浅看法,供参考。
16、大家知道,硬盘分区表位于主引导扇区的1BEh与1FDh处,占64个字节,共4个分区项每个表项对应一个逻辑分区,每个表项占16个字节,其含义见表。
17、=====================================偏移量 含 义=====================================0 引导标志(80h表示活动分区,00h表示非活动分区,其他值非法)1 本分区的起始磁头号2-3 本分区的起始扇区号和起始柱号4 分区类型(1-DOS,12位FAT;2-XENIX;4-DOS,16位FAT,小于32M;5-扩展DOS;6-DOS,16位FAT,大于32M;0DBh-并发DOS.5 本分区的结束磁头号6-7 本分区的结束扇区号和结束柱号8-B 本分区的相对扇区号C-F 本分区的扇区数=====================================各逻辑分区首隐藏扇区与主引导扇区类似,在偏移1BEh到1DDh处,记录两个分区表项第一表项对应于本分区,第二表项则对应于下一分区,各字节含义同上。
18、这样,各逻辑分区通过首隐藏扇区的分区信息表串起来形成了DOS硬盘分区的所谓链式结构,使得DOS能够管理多个逻辑分区。
19、DOS引导时,不管是从软盘启动还是从硬盘启动,都将搜索这条链,以便为各逻辑盘建立磁盘基数表。
20、值得注意的是分区类型(偏移04h)中的扩展DOS分区是相对来说的,D盘相对于C是扩展DOS分区,但相对本身来说不是扩展的,因此在主引导扇区对应于D盘的分区表项中该字节为5,在D盘首隐藏扇区此处应为4或6。
21、相应地,某表项若04h字节为5,则01-03h三字节就记录所对应分区的首隐藏扇区的物理地址,若04h字节为4或6(此时该表项必为第一表项),则01-03h字节记录所对应分区的DOS引导扇区。
22、DOS搜索链表建立磁盘基数表的过程是这样的:首先检查分区类型,若为4或6,则从01h-03h取分区dos引导扇区地址,根据引导扇区和分区表信息建立该分区的磁盘基数表,然后转向下一表项(如果有的话);若为5,则从01h-03h取该分区首隐藏扇区地址,并转向该扇区,判断该扇区分区表,准备建立下一分区的磁盘基数表;若04h为其他值则跳过,而调试程序运行后,04h字节被误置为5。
23、引导时,DOS据此认为该表项指向下一个DOS扩展分区,于是从01h-03字节取“下一个”分区的起始物理地址,读取下一个分区的首隐藏扇区,而此处又被误置为D盘的首隐藏扇区的地址,于是机器就陷于读取D盘首隐藏扇区的死循环中。
24、虽然发生如此情况的可能性微乎其微,但一但出现,造成的危害不可低估,因为低版本的DOS已极度难找到,即使找到也需要对硬盘分区表了解较深,才能挽救。
25、作为一个完善的操作系统,应该在任何情况下都是无懈可击的,而且仅需加几条指令就可避免如此后果,这不能不说是设计者的一个失误。
26、更高版本的DOS是否注意到了这一点呢?笔者为此曾用dos3.30,5.0,6.20在多种型号的机器上试验,均出现上述现象。
27、虽然这是一个失误,但我们可以利用它做一些有益的事。
28、比如:很多硬盘加锁软件,虽然可以做到从软盘启动不能使用硬盘,但无法避免对硬盘了解较深的人通过修复主引导扇区进入硬盘,因此,要达到完全锁住硬盘,必须做到从软盘不能启动机器。
29、DOS的这个失误为此提供了可能。
30、笔者利用此点编写了一个硬盘主引导程序,使得机器只能从硬盘启动,并且必须输入正确的口令;从软盘启动则死机。
31、首先,《失误》文中所述DOS对逻辑分区的管理机制基本上正确的,DOS的这种链表式数据结构,可以说到处可见,在设备管理中、在内存管理中、在文件管理中,可谓比比皆是,而且严格地讲,不仅DOS如此,其他操作系统亦如此。
32、文中所述方法会造成死机,这是事实,但进而就说这是DOS的一个失误,可就不应该了。
33、原因很简单:在DOS的这些链表式结构中,不管改变了哪一个,都可能引起死机。
34、比如:改变了内存链(即MCB链),使之不符合DOS的要求,则马上就会死机。
35、能因此就说这是DOS的失误吗?显然是不合适的。
36、作为用户,要求DOS能在任何情况下,都能正常运行,是可以理解的,但这也是不可能的。
37、事实上,任何一种操作系统,进而言之,任何一种软件,都不可能做到。
38、那么,从开发的角度,或者说从程序设计的角度,用户要设计一个较低级(指管理上)一点的程序,使其能和DOS一起工作,甚至控制DOS的工作,可能就要牵扯到对这些链表的操作,怎么办呢?一句话,必须适应DOS!(不可能让操作系统去适应您)比如想自己去管理内存,就必须符合DOS的管理方式,使DOS认为是合理的,否则DOS就死了。
39、再比如想接管DOS的磁盘管理,也必须如此,否则,虽然DOS不至于马上就死,但会造成磁盘的混乱和数据的丢失。
40、其次,《失误》文中认为这是加密的一个好方法,实际上也不然。
41、应该说《失误》文中谈到的种种现象都确实是存在的,即:硬盘、软盘启动结果都是死机,硬盘灯常亮。
42、但并不是没有办法解决。
43、这里应该先明确一点, DOS为各逻辑盘建立磁盘基数表(即建立设备管理链表)的过程是由IO.SYS(或IBMBIO.COM)文件来完成的,明白了这一点,我们就可以在IO.SYS取得控制权之前,先行一步,即:对软盘的DOS引导扇区--0面0道1扇区直接编程,就可以排除《失误》文中所述的情况(不熟悉DOS引导过程的读者,可参考有关专著,这里不作叙述)。
44、有一个最简单的解决办法就是把硬盘的主引导扇区改为无效。
45、然后就可以用软盘启动了,也可以用一些磁盘维护工具(或者直接用INT13H),来对硬盘工作了。
46、比如:恢复主引导扇区和被破坏了的“扩展分区首隐藏扇区”。
47、具体操作如下。
48、首先用另一台计算机,找一张格式化好的软盘,插入A驱或B驱。
49、按如下输入:C〉DEBUG-a 100mov ax,0301mov bx,0200mov cx,0001mov dx,0000;如果您的软盘在B驱,这里应改为:mov dx,0001int 13int 3-a 200mov ax,0301mov bx,0200mov cx,0001mov dx,0080int 13int 3-g=100执行完后,将软盘从驱动器中取出,此时这张盘就成了开锁的钥匙,将其插入“病”计算机的A驱,打开电源,启动“病”计算机,显然这张盘并不是系统盘,不能真正启动“病”计算机,但待这张盘“启动”完后(硬盘灯亮了一下,显示器上无任何显示),再插入真正的系统盘,关机,再重新启动,就可以了。
50、当然,明白了这一道理后,可能会有更好的方法,以上就算是抛砖引玉吧。
51、注意:不要修改CMOS。
52、软错误当然软解决,千万不能将COMS设置硬盘为未安装 。
53、以上方法,已在多台机器上验证无误。
54、.。
本文到此分享完毕,希望对大家有所帮助。