一种通过BootCode修复硬盘ROM的方法_2

文档序号:9865347阅读:来源:国知局
XX XX XX”、CAP特征 “06 XX XX XX” 和SHELL特征 “0B XX XX XX”,该值为SAP、RAP、CAP和SHELL数据体的头部偏移特征,跳转即可得到SAP、RAP、CAP和SHELL数据体头部位置。
[0055]第二种为:ROM头部中以4字节为一组进行检索,找到SAP、RAP、CAP和SHELL基地址偏移特征“24 XX XX XX”,通过该特征跳转后以4字节为一组向后检索找到SAP特征“05 XXXX XX”、RAP特征 “04 XX XX XX”、CAP特征 “06 XX XX XX” 和SHELL特征 “0B XX XX XX”。
[0056]例如:SAP基地址特征为“24 00 00 01”,那么“0x10000”就是SAP基地址偏移特征,跳转后以4字节为一组向后检索到“05 86 68 00”,
[0057]通过“0x10000,,+ “0x6886” = “0x18668”得到SAP数据体头部偏移位置为“0x18668” ο
[0058]S202:计算SAP、RAP、CAP和SHELL数据体的大小,并提取;所述大小的计算方法为4个字节为一组,SAP、RAP、CAP和SHELL特征后的一组数据的后三个字节减去SAP、RAP、CAP和SHELL特征后三个字节的值等于SAP、RAP、CAP和SHELL数据体的大小。
[0059]例如SAP特征为“05 00 00 07”后面接着是RAP特征“06 00 50 07”,那么通过“0x075000” - “0x070000” 得到SAP 数据体大小。
[0060]S203:找一种适配的低版本(相对于当前ROM的低版本)ROM代码,找到适配ROM的SAP、RAP、CAP和SHELL数据体,将故障盘SAP、RAP、CAP和SHELL数据体覆盖到适配ROM中,组成新的ROM,并将新ROM写入故障盘。
[0061 ]所述S3的详细步骤如下:
[0062]S301:检查硬盘COM 口是否连接正常;
[0063]S302:判断硬盘是否处于boot code下(通过是否能获取Boot Cmds:字符串确定,能获取则代表是处于boot code下)。若是则执行S303;若不是则重新开电并连续向硬盘发送“U”指令,让硬盘打断它正常的引导进入boot code,重新执行S302;
[0064]S304:检查ROM完成性,是否为512kb大小,若是则执行S305,若不是则表示ROM不正常,重新返回S203;
[0065]S305:定位地址0x1000000;
[0066]S306:从该位置开始读256个字节返回到buf f er3 ;
[0067]S307:在buf fer3的OxAC处取4个字节进行判断,如果大于0x200000,则修改写入的引导文件使其可以正常写入执行S308,反之则无需修改执行S309;
[0068]S308:定位地址到0x400处,写入修改好的引导文件;
[0069]S309:接着定位地址到0x401处,开始ROM数据的写入。
[0070]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
【主权项】
1.一种通过Boot Code修复硬盘ROM的方法,包括下面步骤: S1:使用故障盘COM口通过Boot Code方式读取硬盘ROM; 52:找到ROM中SAP、RAP、CAP和SHELL数据体,并将上述数据体覆盖到适配ROM中,形成新的 ROM; 53:将适配之后的ROM重新回写硬盘。2.根据权利要求1所述的一种通过BootCode修复硬盘ROM的方法,其特征在于所述SI的详细步骤如下: SlO 1:检查硬盘COM 口是否连接正常; S102:判断硬盘是否处于boot code下,若是则执行S103 ;若不是则重新开电并连续向硬盘发送“U”指令,让硬盘进入boot code,执行S103 ; S103:偏移地址 “0x100000,,; S104:从该偏移地址开始,读取512个字节,并将返回的数据存入BufferI; S105:判断bufferl中偏移OxAC位置的值是否小于“0x200000”,若是则执行S106,若否则在boot code写入引导文件,初始化boot code; 5106:通过S105中OxAC位置的值和“OxFFFFFFOO”进行“与操作”,获得重取地址; 5107:偏移至重取地址,通过AP “Ox重取地址”偏移; 5108:读取重取地址后的512字节,并将返回数据存入buff er2 ; S109:在bufferl中取偏移OxAC处的低位一个字节与“OxFF”进行“与操作”,得到的低位一个字节作为BufTer2中用于确定重读的512字节的偏移位置; SI 10:从该位置向后取16字节长度的内容和“00 00 CO Cl Cl 81 01 40 C301 03 CO02 80 C2 41”比较;如果相等执行S111,如果不相等则修改引导文件使其能够正常读取ROM,执行Slll; Sm:将引导文件写入硬盘,定位到“0x401”,输入1024次GO获取返回ROM内容。3.根据权利要求2所述的一种通过BootCode修复硬盘ROM的方法,其特征在于所述S2的详细步骤如下: S201:找到ROM数据体内的SAP、RAP、CAP和SHELL数据体的存储位置; S202:计算SAP、RAP、CAP和SHELL数据体的大小,并提取;所述大小的计算方法为4个字节为一组,SAP、RAP、CAP和SHELL特征后的一组数据的后三个字节减去SAP、RAP、CAP和SHELL特征后三个字节的值等于SAP、RAP、CAP和SHELL数据体的大小; S203:找一种低版本的适配ROM代码,找到适配ROM的SAP、RAP、CAP和SHELL数据体,将故障盘SAP、RAP、CAP和SHELL数据体覆盖到适配ROM中,组成新的ROM,并将新ROM写入故障盘。4.根据权利要求3所述的一种通过BootCode修复硬盘ROM的方法,其特征在于所述S3的详细步骤如下: S301:检查硬盘COM 口是否连接正常; S302:判断硬盘是否处于boot code下,若是则执行S303 ;若不是则重新开电并连续向硬盘发送“U”指令,让硬盘打断它正常的引导进入boot code,重新执行S302; 5304:检查ROM完成性,是否为512kb大小,若是则执行S305,若不是则表示ROM不正常,重新执行S203; 5305:定位地址0x1000000 ; 5306:从该位置开始读256个字节返回到buffer3 ; 5307:在buffer3的OxAC处取4个字节进行判断,如果大于0x200000,则修改写入的引导文件使其可以正常写入执行S308,反之则无需修改执行S309; 5308:定位地址到0x400处,写入修改好的引导文件; S309:接着定位地址到0x401处,开始ROM数据的写入。
【专利摘要】本发明公开了一种通过Boot?Code修复硬盘ROM的方法,包括下面步骤:S1:使用故障盘COM口通过Boot?Code方式读取硬盘ROM;S2:找到ROM中SAP、RAP、CAP和SHELL数据体,并将上述数据体覆盖到适配ROM中,形成新的ROM;S3:将适配之后的ROM重新回写硬盘。本发明的有益效果如下:修复硬盘成功率高,减少因硬盘故障导致数据丢失所带来的损失;相比焊锡置换ROM芯片的方法更加安全稳定。
【IPC分类】G06F11/07
【公开号】CN105630622
【申请号】CN201511025577
【发明人】黄旭, 张佳强, 杨先珉, 董超
【申请人】四川秘无痕信息安全技术有限责任公司
【公开日】2016年6月1日
【申请日】2015年12月30日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1