无忧启动论坛

标题: 用dd命令提取可启动镜像ISO的引导文件,怎样确定引导文件的起止偏移量 [打印本页]

作者: yjqd    时间: 2016-11-24 09:43
标题: 用dd命令提取可启动镜像ISO的引导文件,怎样确定引导文件的起止偏移量
启动镜像可分为三种类型:模拟软驱、模拟硬盘、非模拟型,它们的启动文件也不一样

怎样确定引导文件的起止偏移量,用dd命令提取可启动镜像ISO的引导文件,


作者: 不知    时间: 2016-11-24 13:46
硬盘复制前63个扇区,软盘复制第一扇区。
作者: yjqd    时间: 2016-11-24 14:03
不知 发表于 2016-11-24 13:46
硬盘复制前63个扇区,软盘复制第一扇区。

谢谢回复

如果iso引导文件为1.44M的dos镜像,复制iso的第一扇区算是把引导文件提取出来了吗
作者: 不知    时间: 2016-11-24 14:07
yjqd 发表于 2016-11-24 14:03
谢谢回复

如果iso引导文件为1.44M的dos镜像,复制iso的第一扇区算是把引导文件提取出来了吗

文件应该是要另外提取的(挂载并复制io.sys,command.com,config.sys),复制扇区只是把引导扇区提取出来了。而且光盘的引导扇区应该和软盘硬盘的不通用。
作者: yjqd    时间: 2016-11-24 14:23
不知 发表于 2016-11-24 14:07
文件应该是要另外提取的(挂载并复制io.sys,command.com,config.sys),复制扇区只是把引导扇区提取出来 ...

看来用命令方式提取可启动镜像ISO的引导文件要达到UltraISO提取可启动镜像ISO的引导文件的功能很难
作者: yjqd    时间: 2016-11-25 22:30
不知 发表于 2016-11-24 14:07
文件应该是要另外提取的(挂载并复制io.sys,command.com,config.sys),复制扇区只是把引导扇区提取出来 ...

制作了个提取微软iso的引导文件批处理,只是自己为了学习一下
微软的xp镜像或xpe镜像或win7的镜像的引导文件都有结束标志 55AA
win7的引导文件ETFSBOOT.COM一般为4k
xp的引导文件一般为2k

----------------------------------------------------------------------------------------

所需工具
hex2dec              10进制和16进制转换程序
strw                      处理文件的程序
dd for windows     windows下的dd工具

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@echo off
cd /d %~dp0

set /p ui=拖入要提取引导文件的iso:

echo 光盘引导记录扇描述符扇区:位于17扇区,其偏移地址0x8847是系统引导标识所在扇区号(十六进制) iso的一个扇区是2048个字节
for /f "tokens=2 delims= " %%a in ('strw %ui% 0x8847 1 /v') do set o=%%a
echo %o%

echo 系统引导标识扇区
for /f "tokens=2 delims== " %%a in ('hex2dec 0x%o%') do set kk=%%a
echo.
echo %kk%
set /a p=%kk%*2048+40
echo %p%

for /f "tokens=2 delims== " %%a in ('hex2dec %p%') do set kk=%%a
echo.
echo %kk%

echo 系统引导扇区
for /f "tokens=2 delims= " %%a in ('strw %ui% %kk% 1 /v') do set o=%%a
echo %o%

for /f "tokens=2 delims== " %%a in ('hex2dec 0x%o%') do set kk=%%a
echo.
echo %kk%
rem  iso的一个扇区是2048个字节
set /a p=%kk%*2048      
echo 引导文件开始地址:%p%

for /f "tokens=2 delims== " %%a in ('hex2dec %p%') do set kk=%%a
echo.
echo %kk%

pause
echo 微软的引导文件都有结束标志 55AA

for /f "skip=3 delims= " %%a in ('strw %ui% %p% 0 /F /hex:55AA') do (set /a a=1+%%a
echo.
)
echo %a%
for /f "skip=3 delims= " %%a in ('strw %ui% %a% 0 /F /hex:55AA') do (echo %%a
set /a a=2+%%a
echo.
)
echo %a%
set /a a=%a%-%p%
echo 引导文件大小为:%a%
pause
echo 提取引导文件
dd if=%ui% of=slic.bin bs=1 count=%a% skip=%p%
pause
exit
作者: 不知    时间: 2016-11-25 22:33
yjqd 发表于 2016-11-25 22:30
制作了个提取微软iso的引导文件批处理,只是自己为了学习一下
微软的xp镜像或xpe镜像或win7的镜像的引导 ...

学习了
作者: 不知    时间: 2016-11-25 22:51
yjqd 发表于 2016-11-25 22:30
制作了个提取微软iso的引导文件批处理,只是自己为了学习一下
微软的xp镜像或xpe镜像或win7的镜像的引导 ...

微软NT 6.0以上的光盘引导文件其实在对应系统的\windows\boot\DVD里可以找到。

1.png (26.19 KB, 下载次数: 30)

1.png

2.png (27.82 KB, 下载次数: 26)

2.png

作者: pseudo    时间: 2016-11-25 23:46
hex2dec、dd这两个工具貌似可以去掉不用。
作者: yjqd    时间: 2016-11-26 08:52
不知 发表于 2016-11-25 22:51
微软NT 6.0以上的光盘引导文件其实在对应系统的\windows\boot\DVD里可以找到。

谢谢回复

我原来还没注意到EFI的引导文件有1440kb这么大
作者: yjqd    时间: 2016-11-26 08:57
pseudo 发表于 2016-11-25 23:46
hex2dec、dd这两个工具貌似可以去掉不用。

谢谢回复

是不是用strw删除iso中的引导文件之外的内容,再保存为一个新文件,这个新文件就是引导文件
作者: 不知    时间: 2016-11-26 09:31
yjqd 发表于 2016-11-26 08:52
谢谢回复

我原来还没注意到EFI的引导文件有1440kb这么大

EFI的引导文件的实际是一个FAT文件系统镜像。

1.png (11.29 KB, 下载次数: 36)

1.png

作者: yjqd    时间: 2016-11-26 10:30
不知 发表于 2016-11-26 09:31
EFI的引导文件的实际是一个FAT文件系统镜像。

谢谢回复,学习了

你这个ImDisk在哪里下载的,有链接吗,我也想下载一个
是在windows环境下用的吗
作者: 不知    时间: 2016-11-26 10:44
yjqd 发表于 2016-11-26 10:30
谢谢回复,学习了

你这个ImDisk在哪里下载的,有链接吗,我也想下载一个

Imdisk本来就是windows下的,linux下直接mount就行了。
-----------------------------------------------------------------------------------
安装后会有英文的右键菜单。

ImDiskTk.7z

689.79 KB, 下载次数: 5, 下载积分: 无忧币 -2


作者: aztec    时间: 2016-11-26 11:10
好贴,必须顶
作者: yjqd    时间: 2016-11-26 12:01
不知 发表于 2016-11-26 10:44
Imdisk本来就是windows下的,linux下直接mount就行了。
--------------------------------------------- ...

谢谢回复

下载了


作者: 489432757    时间: 2016-11-26 12:32
yjqd 发表于 2016-11-25 22:30
制作了个提取微软iso的引导文件批处理,只是自己为了学习一下
微软的xp镜像或xpe镜像或win7的镜像的引导 ...

楼主能否上传这几个小工具呢?百度找不到呢
作者: yjqd    时间: 2016-11-26 13:31
489432757 发表于 2016-11-26 12:32
楼主能否上传这几个小工具呢?百度找不到呢

chenall大元帅推荐的str
http://chenall.net/post/post35/

dd for windows
http://www.chrysocome.net/dd

Hex2dec
https://technet.microsoft.com/en-us/sysinternals/bb545027
作者: pseudo    时间: 2016-11-26 13:55
yjqd 发表于 2016-11-26 08:57
谢谢回复

是不是用strw删除iso中的引导文件之外的内容,再保存为一个新文件,这个新文件就是引导文件

0PE有个批处理做的工作有点相似,用的是str。
作者: yjqd    时间: 2016-11-26 19:37
pseudo 发表于 2016-11-26 13:55
0PE有个批处理做的工作有点相似,用的是str。

谢谢回复

明白了

在批处理中设置变量等于16进制返回结果会是10进制,16进制运行结果也是10进制,不需要Hex2dec了

str的偏移地址可以用10进制

str 有复制功能,参数/c,不需要dd for windows了





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3