无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5323|回复: 8
打印 上一主题 下一主题

请p大写段G4D下恢复BOOTICE备份的U盘DPT到U盘的代码

[复制链接]
跳转到指定楼层
1#
发表于 2015-10-8 11:28:03 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
请p大写段G4D下恢复BOOTICE备份的U盘DPT到U盘的代码。谢谢。
2#
 楼主| 发表于 2015-10-8 12:35:19 | 显示全部楼层

pseudo 发表于 2015-10-8 12:13
我写不好。提供点思路。
g4d支持dd命令,在g4d命令行输入
help dd



Multiple Card__Reader 7.2GB.dpt.7z (1.35 KB, 下载次数: 3)

这是一个样本。
110h--30fh 疑似mbr+dpt?不是很明白。

320h-51fh

530h-72fh
回复

使用道具 举报

3#
 楼主| 发表于 2015-10-9 00:04:40 | 显示全部楼层
pseudo 发表于 2015-10-8 22:10
看了一下,dpt文件结构大致是这样的:
除了头部,它从110h开始记录硬盘首扇区和各分区首扇区的内容。每个 ...

set dst=ud
set src=(ud)/my.dpt
dd if=%src% of=(%dst%)+1   bs=1 count=512 skip=0x110
dd if=%src% of=(%dst%,0)+1 bs=1 count=512 skip=0x320
dd if=%src% of=(%dst%,1)+1 bs=1 count=512 skip=0x530
dd if=%src% of=(%dst%,2)+1 bs=1 count=512 skip=0x740
dd if=%src% of=(%dst%,3)+1 bs=1 count=512 skip=0x950

谢谢P大,我明天试试。
回复

使用道具 举报

4#
 楼主| 发表于 2015-10-9 07:02:22 | 显示全部楼层
本帖最后由 chiannet 于 2015-10-9 07:17 编辑
pseudo 发表于 2015-10-8 22:10
看了一下,dpt文件结构大致是这样的:
除了头部,它从110h开始记录硬盘首扇区和各分区首扇区的内容。每个 ...

测试:
1、创建了一个三分区U盘、PE相关文件统统至于高端隐藏区,此时测试能顺利EFI及BIOS引导。
2、用bootice立即备份dpt并藏在UD里。
3、用PECMD删除高端隐藏区,此时测试已不能EFI引导,BIOS引导仅能到fb菜单。
4、UD区就3文件:(ud)/fb.cfg、(ud)/my.dpt及(ud)/grldr 20131130 0.45C ,修改内置菜单如下后再次启动,EFI及BIOS引导均成功修复。






set /a m=0
set dst=%@root:~1,3%
# %dst%=hdx
# 万一存在%@root%=(hd12,0)呢?即大于9的情形怎么自适应



:BA
if "%@root:~1,1%"=="f" && find --set-root --devices=f /52PE/SETUPLDR.BIN && goto A
find --set-root --ignore-floppies --ignore-cd /52PE/SETUPLDR.BIN && goto A
map (ud)/USBZLv2.iso (0xff) && map --hook && root (0xff) && goto A
set src=(ud)/my.dpt
#实际上仅仅使用了if的自0x110起的512字节用dd写到of,再请P大分析分析
if %m%==0 dd if=%src% of=(%dst%)+1  bs=1 count=512 skip=0x110
set /a m=%m%+1
if %m%==1 goto :BA
goto B


:A
command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS
chainloader /52PE/SETUPLDR.BIN
boot

:B
commandline

回复

使用道具 举报

5#
 楼主| 发表于 2015-10-9 10:31:12 | 显示全部楼层
本帖最后由 chiannet 于 2015-10-9 10:33 编辑






这个内置菜单写成了以下这个样子,有些啰嗦,但管用。

#--
configfile
default 0
timeout 0
title USBZL
set reb=Y
if "%@root:~1,1%"=="f" && find --set-root --devices=f /52PE/SETUPLDR.BIN && command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS && set reb=N && chainloader /52PE/SETUPLDR.BIN && boot
find --set-root --ignore-floppies --ignore-cd /52PE/SETUPLDR.BIN && command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS && set reb=N && chainloader /52PE/SETUPLDR.BIN && boot
map (ud)/USBZLv2.iso (0xff) && map --hook && root (0xff) && command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS && set reb=N && chainloader /52PE/SETUPLDR.BIN && boot
# set dst=%@root:~1,3%
if "%reb%"=="Y" && dd if=(ud)/my.dpt of=(%@root:~1,3%)+1  bs=1 count=512 skip=0x110
if "%@root:~1,1%"=="f" && find --set-root --devices=f /52PE/SETUPLDR.BIN && command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS  && chainloader /52PE/SETUPLDR.BIN && boot
find --set-root --ignore-floppies --ignore-cd /52PE/SETUPLDR.BIN && command ()/BOOT/GRUB/F6IMG ()/BOOT/SRS && chainloader /52PE/SETUPLDR.BIN && boot
commandline

回复

使用道具 举报

6#
 楼主| 发表于 2015-10-9 18:46:32 | 显示全部楼层
本帖最后由 chiannet 于 2015-10-9 18:47 编辑
pseudo 发表于 2015-10-9 18:29
set dst=ud
...
dd if=%src% of=(%dst%)+1   bs=1 count=512 skip=0x110


如果是0.46agrldr,要加这句
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff


......

set dst=%@root:~1,4%
if "%@root:~4,1%"=="," && set dst=%@root:~1,3%
if "%@root:~4,1%"==")" && set dst=%@root:~1,3%
dd if=(ud)/my.dpt of=(%dst%)+1  bs=1 count=512 skip=0x110
.......




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-5 21:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表