无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4044|回复: 23
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2016-11-24 09:43:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
启动镜像可分为三种类型:模拟软驱、模拟硬盘、非模拟型,它们的启动文件也不一样

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

推荐
 楼主| 发表于 2016-11-25 22:30:59 | 只看该作者
不知 发表于 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

点评

微软NT 6.0以上的光盘引导文件其实在对应系统的\windows\boot\DVD里可以找到。  详情 回复 发表于 2016-11-25 22:51
学习了  详情 回复 发表于 2016-11-25 22:33
回复

使用道具 举报

2#
发表于 2016-11-24 13:46:14 | 只看该作者
硬盘复制前63个扇区,软盘复制第一扇区。

点评

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

使用道具 举报

3#
 楼主| 发表于 2016-11-24 14:03:31 | 只看该作者
不知 发表于 2016-11-24 13:46
硬盘复制前63个扇区,软盘复制第一扇区。

谢谢回复

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

点评

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

使用道具 举报

4#
发表于 2016-11-24 14:07:42 | 只看该作者
yjqd 发表于 2016-11-24 14:03
谢谢回复

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

文件应该是要另外提取的(挂载并复制io.sys,command.com,config.sys),复制扇区只是把引导扇区提取出来了。而且光盘的引导扇区应该和软盘硬盘的不通用。

点评

制作了个提取微软iso的引导文件批处理,只是自己为了学习一下 微软的xp镜像或xpe镜像或win7的镜像的引导文件都有结束标志 55AA win7的引导文件ETFSBOOT.COM一般为4k xp的引导文件一般为2k -------------------  详情 回复 发表于 2016-11-25 22:30
看来用命令方式提取可启动镜像ISO的引导文件要达到UltraISO提取可启动镜像ISO的引导文件的功能很难  详情 回复 发表于 2016-11-24 14:23
回复

使用道具 举报

5#
 楼主| 发表于 2016-11-24 14:23:57 | 只看该作者
不知 发表于 2016-11-24 14:07
文件应该是要另外提取的(挂载并复制io.sys,command.com,config.sys),复制扇区只是把引导扇区提取出来 ...

看来用命令方式提取可启动镜像ISO的引导文件要达到UltraISO提取可启动镜像ISO的引导文件的功能很难
回复

使用道具 举报

7#
发表于 2016-11-25 22:33:36 | 只看该作者
yjqd 发表于 2016-11-25 22:30
制作了个提取微软iso的引导文件批处理,只是自己为了学习一下
微软的xp镜像或xpe镜像或win7的镜像的引导 ...

学习了
回复

使用道具 举报

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

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

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

1.png

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

2.png

点评

谢谢回复 我原来还没注意到EFI的引导文件有1440kb这么大  详情 回复 发表于 2016-11-26 08:52
回复

使用道具 举报

9#
发表于 2016-11-25 23:46:43 | 只看该作者
hex2dec、dd这两个工具貌似可以去掉不用。

点评

谢谢回复 是不是用strw删除iso中的引导文件之外的内容,再保存为一个新文件,这个新文件就是引导文件  详情 回复 发表于 2016-11-26 08:57
回复

使用道具 举报

10#
 楼主| 发表于 2016-11-26 08:52:03 | 只看该作者
不知 发表于 2016-11-25 22:51
微软NT 6.0以上的光盘引导文件其实在对应系统的\windows\boot\DVD里可以找到。

谢谢回复

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

点评

EFI的引导文件的实际是一个FAT文件系统镜像。  详情 回复 发表于 2016-11-26 09:31
回复

使用道具 举报

11#
 楼主| 发表于 2016-11-26 08:57:50 | 只看该作者
pseudo 发表于 2016-11-25 23:46
hex2dec、dd这两个工具貌似可以去掉不用。

谢谢回复

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

点评

0PE有个批处理做的工作有点相似,用的是str。  详情 回复 发表于 2016-11-26 13:55
回复

使用道具 举报

12#
发表于 2016-11-26 09:31:40 | 只看该作者
yjqd 发表于 2016-11-26 08:52
谢谢回复

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

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

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

1.png

点评

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

使用道具 举报

13#
 楼主| 发表于 2016-11-26 10:30:52 | 只看该作者
不知 发表于 2016-11-26 09:31
EFI的引导文件的实际是一个FAT文件系统镜像。

谢谢回复,学习了

你这个ImDisk在哪里下载的,有链接吗,我也想下载一个
是在windows环境下用的吗

点评

Imdisk本来就是windows下的,linux下直接mount就行了。 ----------------------------------------------------------------------------------- 安装后会有英文的右键菜单。  详情 回复 发表于 2016-11-26 10:44
回复

使用道具 举报

14#
发表于 2016-11-26 10:44:00 | 只看该作者
yjqd 发表于 2016-11-26 10:30
谢谢回复,学习了

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

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

ImDiskTk.7z

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

点评

谢谢回复 下载了  详情 回复 发表于 2016-11-26 12:01
回复

使用道具 举报

15#
发表于 2016-11-26 11:10:44 | 只看该作者
好贴,必须顶
回复

使用道具 举报

16#
 楼主| 发表于 2016-11-26 12:01:14 | 只看该作者
不知 发表于 2016-11-26 10:44
Imdisk本来就是windows下的,linux下直接mount就行了。
--------------------------------------------- ...

谢谢回复

下载了

回复

使用道具 举报

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

楼主能否上传这几个小工具呢?百度找不到呢

点评

chenall大元帅推荐的str http://chenall.net/post/post35/ dd for windows http://www.chrysocome.net/dd Hex2dec https://technet.microsoft.com/en-us/sysinternals/bb545027  详情 回复 发表于 2016-11-26 13:31
回复

使用道具 举报

18#
 楼主| 发表于 2016-11-26 13:31:24 | 只看该作者
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
回复

使用道具 举报

19#
发表于 2016-11-26 13:55:56 | 只看该作者
yjqd 发表于 2016-11-26 08:57
谢谢回复

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

0PE有个批处理做的工作有点相似,用的是str。

点评

谢谢回复 明白了 在批处理中设置变量等于16进制返回结果会是10进制,16进制运行结果也是10进制,不需要Hex2dec了 str的偏移地址可以用10进制 str 有复制功能,参数/c,不需要dd for windows了  详情 回复 发表于 2016-11-26 19:37
回复

使用道具 举报

20#
 楼主| 发表于 2016-11-26 19:37:40 | 只看该作者
pseudo 发表于 2016-11-26 13:55
0PE有个批处理做的工作有点相似,用的是str。

谢谢回复

明白了

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

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-10 09:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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