有经验的请来帮个忙,没有经验请来捧个场,小弟感激涕零!! 问题是这样的,我有一个移动硬盘,里面拷贝了一个XP的OS,BIOS里面我设置成从我的移动硬盘启动,OK没有问题,但是我将这个硬盘加密以后,再启动就不行了,回在DOS界面停留2秒,然后就从当前硬盘的OS启动了,我想一直在DOS界面停留,提示输入密码,输入密码成功,就能启动加密的移动盘了,如果要实现这样的功能,请问各位我应该怎么做!!!谢谢啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的描述不太容易理解。如果你想实现启动OS前先输入密码,需要自己写一个MBR程序,用MBR加载另外一段启动代码(因为MBR空间有限,不能放太多代码),启动代码处理密码输入,检查无误后加载系统引导程序。注意:启动代码没有OS支持,只能调用BIOS功能,或者直接I/O。 我的意思是,如果硬盘被加密了,当然就要输入密码了,如果没有加密的话就不用输入,有没有关于如何写MBR程序的资料,麻烦各位指点一下,启动代码没有OS支持,只能调用BIOS功能,或者直接I/O能不能麻烦楼上的说详细一点点,我刚开始接触这个,一时还很茫然,希望各位高手不吝赐教!!!! 代码要用汇编语言来写,你先熟悉一下DOS下汇编和常用的BIOS功能。 我觉得这个貌似比较可行http://blog.csdn.net/jackjoy/archive/2005/10/19/508907.aspx,能否这样做呢,加密的时候就去修改MBR,其中一段地址存储密码,启动的时候,如果有密码就读出来,然后解密就行了????这样可行吗? 这篇文章只是给出了一个MBR的示例代码,你所要实现的功能需要自己写代码。如果按你的思路把密码储存在硬盘上,那加密岂不是没有意义了。 能不能贴段代码啊,呵呵还不会写MBR程序 自己做一个MBR程序引导操作系统,在MBR程序实现加密,MBR程序在linux中有源程序,可以参考一下 这不是贴段代码就能解决的问题,需要有汇编语言和DOS编程基础。另外,前面只提到了启动的部分,因为磁盘数据做了加密,还需要动态加/解密,在系统启动前要Hook BIOS Int 13H,系统中还需要有磁盘过滤驱动程序。 那你还不如在bios里设置密码,每次启动都输入密码。 你讲的固然没有错了,可惜我没有汇编语言和DOS编程的基础,如果要做的话,得一步步来了,能不能麻烦高手再看看这篇文章有参考价值吗?http://www.codeproject.com/KB/tips/boot-loader.aspx 按照这上面的方法我编译了一个StartPoint.com的文件出来,但是怎么将这个文件写到硬盘的0扇区呢(MBR) 把程序复制到MBR中0~0x1B7的位置上,不要覆盖分区表。手动操作可以用WinHEX等磁盘编辑工具;用程序写入可以调用CreateFile打开硬盘设备,ReadFile读出原MBR,将0x1B8开始的64字节分区表覆盖到新MBR上,再用WriteFile写入(注意要把文件指针设置为0),最后CloseHandle。 谢谢啊,你的建议很好,我已经做出一点效果了,能象codeproject上面的例子一样能打出一段文字了 不过很奇怪的是,没有加密的时候可以在屏幕上打印一个字符串,如果我去把盘符加密了就不行了,那段MBR程序都没有运行,就直接的跳转到本地硬盘启动了,为什么MBR程序会没有运行呢,难道加密后它也一起加密了??? MBR不能加密。电脑启动后BIOS会直接读出MBR来运行,如果MBR被加密了,代码也就都乱掉了。直接从本地硬盘启动是因为MBR要求以0xaa55作为结尾标记,加密后这个标记被改变了,BIOS会检查这个位置,如果不是0xaa55则认为MBR无效,不能从该盘启动。 呵呵我有去试过你说的,没有加密的时候读出来的没有问题,加密后去读出来的全部都是一个值了,其实就相当于乱码了,结尾标记根本就不是0XAA55了,怎么会这样呢? 这种功能最好用DSP硬件来实现用软件来实现搞一年都不一定稳定 希望了,你得在加载硬盘数据之前进行解密。 最起码得留一些数据存引导程序。引导系统解密磁盘上面的数据。eiya 完成端口 客户端1秒发10次,服务端1秒收一次,会拼包吗? 特别急!!如何给VC程序打安装包 installshield 高手请进,高分求救!installshield可能忽略的一个问题。 基础问题 得到了另一个程序中某控件(由listview派生)的hwnd,怎么读出该控件中的内容? 看Windows程序设计时几个狠菜的问题 ¥2000收购VC代码(关于UDP大文件传输) 一个内存映射文件问题,急! 修改WINDOWS窗口风格的问题,高手请进! [-------大虾帮忙啊--------] 关于try{}catch(){} 问一下这是什么“结构”的?
如果按你的思路把密码储存在硬盘上,那加密岂不是没有意义了。
能不能贴段代码啊,呵呵还不会写MBR程序
你讲的固然没有错了,可惜我没有汇编语言和DOS编程的基础,如果要做的话,得一步步来了,能不能麻烦高手再看看这篇文章有参考价值吗?http://www.codeproject.com/KB/tips/boot-loader.aspx
谢谢啊,你的建议很好,我已经做出一点效果了,能象codeproject上面的例子一样能打出一段文字了
直接从本地硬盘启动是因为MBR要求以0xaa55作为结尾标记,加密后这个标记被改变了,BIOS会检查这个位置,如果不是0xaa55则认为MBR无效,不能从该盘启动。
呵呵我有去试过你说的,没有加密的时候读出来的没有问题,加密后去读出来的全部都是一个值了,其实就相当于乱码了,结尾标记根本就不是0XAA55了,怎么会这样呢?
用软件来实现搞一年都不一定稳定
最起码得留一些数据存引导程序。引导系统解密磁盘上面的数据。eiya