问题是这样的,我有一个移动硬盘,里面拷贝了一个XP的OS,BIOS里面我设置成从我的移动硬盘启动,OK没有问题,但是我将这个硬盘加密以后,再启动就不行了,回在DOS界面停留2秒,然后就从当前硬盘的OS启动了,我想一直在DOS界面停留,提示输入密码,输入密码成功,就能启动加密的移动盘了,如果要实现这样的功能,请问各位我应该怎么做!!!谢谢啦

解决方案 »

  1.   

    你的描述不太容易理解。如果你想实现启动OS前先输入密码,需要自己写一个MBR程序,用MBR加载另外一段启动代码(因为MBR空间有限,不能放太多代码),启动代码处理密码输入,检查无误后加载系统引导程序。注意:启动代码没有OS支持,只能调用BIOS功能,或者直接I/O。
      

  2.   

    我的意思是,如果硬盘被加密了,当然就要输入密码了,如果没有加密的话就不用输入,有没有关于如何写MBR程序的资料,麻烦各位指点一下,启动代码没有OS支持,只能调用BIOS功能,或者直接I/O能不能麻烦楼上的说详细一点点,我刚开始接触这个,一时还很茫然,希望各位高手不吝赐教!!!!
      

  3.   

    代码要用汇编语言来写,你先熟悉一下DOS下汇编和常用的BIOS功能。
      

  4.   

    我觉得这个貌似比较可行http://blog.csdn.net/jackjoy/archive/2005/10/19/508907.aspx,能否这样做呢,加密的时候就去修改MBR,其中一段地址存储密码,启动的时候,如果有密码就读出来,然后解密就行了????这样可行吗?
      

  5.   

    这篇文章只是给出了一个MBR的示例代码,你所要实现的功能需要自己写代码。
    如果按你的思路把密码储存在硬盘上,那加密岂不是没有意义了。
      

  6.   


    能不能贴段代码啊,呵呵还不会写MBR程序
      

  7.   

    自己做一个MBR程序引导操作系统,在MBR程序实现加密,MBR程序在linux中有源程序,可以参考一下
      

  8.   

    这不是贴段代码就能解决的问题,需要有汇编语言和DOS编程基础。另外,前面只提到了启动的部分,因为磁盘数据做了加密,还需要动态加/解密,在系统启动前要Hook BIOS Int 13H,系统中还需要有磁盘过滤驱动程序。
      

  9.   

    那你还不如在bios里设置密码,每次启动都输入密码。
      

  10.   


    你讲的固然没有错了,可惜我没有汇编语言和DOS编程的基础,如果要做的话,得一步步来了,能不能麻烦高手再看看这篇文章有参考价值吗?http://www.codeproject.com/KB/tips/boot-loader.aspx
      

  11.   

    按照这上面的方法我编译了一个StartPoint.com的文件出来,但是怎么将这个文件写到硬盘的0扇区呢(MBR)
      

  12.   

    把程序复制到MBR中0~0x1B7的位置上,不要覆盖分区表。手动操作可以用WinHEX等磁盘编辑工具;用程序写入可以调用CreateFile打开硬盘设备,ReadFile读出原MBR,将0x1B8开始的64字节分区表覆盖到新MBR上,再用WriteFile写入(注意要把文件指针设置为0),最后CloseHandle。
      

  13.   


    谢谢啊,你的建议很好,我已经做出一点效果了,能象codeproject上面的例子一样能打出一段文字了
      

  14.   

    不过很奇怪的是,没有加密的时候可以在屏幕上打印一个字符串,如果我去把盘符加密了就不行了,那段MBR程序都没有运行,就直接的跳转到本地硬盘启动了,为什么MBR程序会没有运行呢,难道加密后它也一起加密了???
      

  15.   

    MBR不能加密。电脑启动后BIOS会直接读出MBR来运行,如果MBR被加密了,代码也就都乱掉了。
    直接从本地硬盘启动是因为MBR要求以0xaa55作为结尾标记,加密后这个标记被改变了,BIOS会检查这个位置,如果不是0xaa55则认为MBR无效,不能从该盘启动。
      

  16.   


    呵呵我有去试过你说的,没有加密的时候读出来的没有问题,加密后去读出来的全部都是一个值了,其实就相当于乱码了,结尾标记根本就不是0XAA55了,怎么会这样呢?
      

  17.   

    这种功能最好用DSP硬件来实现
    用软件来实现搞一年都不一定稳定
      

  18.   

    希望了,你得在加载硬盘数据之前进行解密。 
    最起码得留一些数据存引导程序。引导系统解密磁盘上面的数据。eiya