分享

Acronis 恢复光盘结构解析

 ZackEdge 2015-02-16
预先说明:

1. 最近论坛上有多个帖子提到说提取光盘中的引导映像文件不成功,主要原因应该是在扇区的
    计算,因为本文中的方法是针对原始的光盘数据进行分析,这需要对光盘的数据存储结构、
    引导记录数据结构和硬盘影像数据结构有一定的了解,建议如果提取结果出错的话应该检查
    一下步骤,对基础知识加深理解;

2. 本文的主要目的在于分析 Acronis 恢复光盘的结构,不主要为了去提取映像文件,因为获得
     映像文件有更好的方法,这在论坛的其他帖子中都有详细的介绍,建议学习参考。

3. 参照已有帖子,下面详述了制作可安装 F11 恢复管理器的 Acronis TrueImage 恢复光盘的
    具体方法:

    如果你使用 Acronis Rescue Media Builder 直接生成 ISO 映像并刻录成光盘的话,以下步骤省了。

    如果你要制作更复杂的启动光盘且只想把 Acronis 的软件作为一个工具加入,那么请继续。


    第一种方法:

    a. 制作引导映像文件

        Acronis Rescue Media Builder 除了支持生成 ISO 可启动映像文件外,还支持将软盘和移动磁盘
       (如 U 盘或移动硬盘)制作成可启动恢复磁盘。

        生成引导映像文件就有以下两种方法:

        (1) 插入移动磁盘(U 盘或移动硬盘),然后由 Acronis Rescue Media Builder 将其制作成可启动
              恢复盘,并用 Winimage 保存为引导映像文件。

        (2) 如果没有 U 盘,你需要一个“虚拟磁盘工具”,如在论坛原有帖子上提到的 Ramdisk NT,当然
              可以由其他具有同样功能的软件代用,需要注意的是,Acronis 对有些虚拟的磁盘不识别,
              推荐使用的工具有 Ramdisk NT 和以下两个非常好的软驱模拟工具:

                    Virtual Floppy Drive (VFD) for Windows v2.1 ( 见附件)
                        Free  software under GNU General Public License

                    Floppy Image Creator v5.3
                        商业软件,网上有破解版本

              模拟成标准软盘格式的话那就要生成很多个映像文件了,当然是推荐模拟成移动磁盘,并生
              成可启动恢复磁盘,最后用 Winimage 保存为引导映像。

        注意:
            
        (1) 论坛有帖子提到“古老方式生成可安装 F11 的磁盘引导映像”的方法,其实质是因为 Acronis 生
              成软盘映像和移动磁盘映像有区别导致两种映像文件结构主要是引导文件不同,文中目的是
              说必须使用软盘映像的结构和引导文件,然后再扩容加入其他文件(这些文件由制作可启动
              移动磁盘获得,因为软盘映像大小有限制不能一次获得所有必须文件),而如果使用直接生
              成的移动磁盘映像文件并加入恢复光盘的话并不能正常使用  F11 功能。
              
              然而,我并没有遇到该文提到的情况,即只需要直接模拟成移动磁盘并获得映像文件即可,
              推测原因可能是磁盘虚拟工具的原因,本文所采用的工具是 FLOPPY IMAGE CREATOR v5.3。

        (2) 只有 Full 版本才能安装 F11,也就是说如果第一次使用必须使用 Full 版建立 Acronis Secure
              Zone 并安装 F11 恢复管理器,更准确的说就是只有 Full 版本才能建立 Acronis Secure  Zone,
              建立好 Acronis Secure  Zone,完全可以只用 Safe 版来管理,即改变安全区的大小,启用或
              禁用 F11 功能;

        (3)  调整好映像文件的 C,H,,S 参数。
               在 Winimage 中选择 映像 --> 更改格式 --> 选择自定义映像格式 :

               
               这里要调整三个参数:

               每磁道扇区数( S ):32 ( <=63 即可 )
               磁头( H ):16 ( <=255 即可 )
               扇区总数( C×H×S ):82944( C为柱面数,<=1023 ),扇区总数/2即为映像文件大小。
              
                可以按照这样的步骤:
               1> 首先选择适当的 S,H 参数;
               2> 根据映像文件中文件的总大小确定初始扇区总数;
               3> 用初始扇区总数除以 H×S,并取不小于这个值的最小整数即为 C,若大于1023则回第
                     一步修改 S,H 参数;
               4> 计算的扇区总数( C×H×S )。
        

    b. 新建 ISO 文件,这是很关键的一步,因为 ISO 映像的属性参数必须设置正确!
        下图即为正确的 ISO 属性参数截图:

        

        建立好ISO 文件并设置参数后加入 Rocovery Manager 恢复管理器文件夹和引导映像文件。

        注意:

        ISO 映像文件属性参数设置不正确是不能成功安装使用 F11 的主要原因,请仔细设置,
        不要点选“优化文件”选择框!              

  
    c. 加载引导文件,通常制作的是非模拟方式的启动光盘,请加载如 Easy Boot, BCDW, CD Shell,
        GRUB等的引导文件,并在 ISO 加入相对应的其他必需文件和配制正确的引导参数。
         
        以 GRUB 为例:

        (1) 加载引导文件 ( ISOGrub.bin,2k ),Gandalf 的作品;

        (2) 加入 GRUB 引导的其他必须文件:
              BOOT 文件夹,包含 GRLDR 和 MEMDISK ( GRLDR 来自 Grub For Dos,MEMDISK 来自 ISOLinux );
              MELU.LST, GRUB 的引导配置文件,文本文件,内容:

                  timeout 30
                  default 0

                  title TrueImage Workstation
                  kernel (cd)/BOOT/MEMDISK c=165 h=16 s=32 floppy
                  initrd (cd)/TIW.IMG

      
              其中 TIW.IMG 为引导映像文件,请配置正确的 C,H,S 参数。


    第二种方法:

    这种方法仅对于 GRUB 和 ISOLINUX 而言,即省去第一步的生成引导映像一步,而是直接加入
    kernel.dat 和 ramdisk.dat,GRUB 的参数配置在后面有。



开始

由Acronis Disk Director 系列或 Acronis Trueimage 系列软件生成的恢复光盘映像(.iso),
通常当你用 UltraISO 等光盘映像编辑器打开这个映像时看不到任何文件(由 Trueimage 生成的
ISO文件中通常可以看到 F11 一键恢复的文件,即 Recovery Manager文件夹),如果用 UltraISO
提取启动文件并将其后缀名改为 .img 的话用 Winimage 还是不能打开编辑,那这个隐蔽的光盘
里到底包含了什么文件?

1.  工具准备

    Hexwork        功能强大且易用的 Hex 编辑器,你也可以用诸如 UltraEdit,WinHex等替代
    UltraISO        最常用的光盘映像编辑工具
    ISOBuster        非常好的光盘映像编辑工具

2.  知识准备

    El-torito.pdf        “El-torito”,启动光盘格式规范,如果愿意你可以仔细看看

3.  恢复光盘映像
   
    使用由 Acronis Trueimage Workstation 9.1.3633 生成的全功能恢复光盘映像 TIW.ISO,56.7M



4.  分析光盘映像
       
    1. 基于用 UltraISO 文件不能正确识别该恢复光盘映像,尝试用其他软件,本文中使用ISOBuster

       下图显示了用 ISOBuster 打开 TIW.ISO 的识别结果,只有一个 2k 的引导文件,这与该ISO
       文件所隐藏的 40 多 M 的空间并不相符合,这里如果是对非模拟方式启动比较了解的话也许就
       可以直接跳到第 5 步了,如过不理解这两个文件是什么,那么还得一步一步来。



    2. TIW.ISO 所采用的启动光盘格式探讨:

    下图展示了三种光盘格式规范(图引用自El-torito.pdf):

[img] [/img]

    a. 非启动型

    b. 单启动型光盘规范,通常具有支持光盘启动的 BISO 至少都支持这种启动光盘格式,它通过读
       取启动编录的默认入口条目取得启动映像文件的地址并加载该映像以启动,该启动映像为软件
       映像或者硬盘映像,如通常的 1.44M,2.88M映像软盘映像,这种方式即为最常用的模拟方式。
      
       最重要的,在现在所有的启动光盘制作工具大都采用的是另一种被称为非模拟启动的方式。
       如 Easyboot,BCDW,GRUB等,这是为了弥补单启动光盘规范只能支持一个启动映像的不足,在
       这种方法下启动编录所指向的并不是真正的映像文件,而是一个常称为 Boot Loader 的启动管
       理器,应该说这样的管理器是一个特殊的 Mini OS,具有简单的内存管理,加载程序,设备驱
       动和文件系统驱动功能,如 GURB,通过这个 Load 来加载合适的映像,这就给予用户很大的自
       定义功能,比如可以管理多个启动映像,还可以实现特效如启动画面、背景等,甚至以后在加上其
       他功能如 Logon 等,试想想操作系统所能实现的功能都可以在这个 Loader 上实现的,Amazing!

    c. 多启动型,这种规范下启动编录中有多个入口,每个编录入口指向一个启动映像,这种情况下
       El-torito 就相当于定义了最简单的 Loader 功能,而对启动映像是放在固定位置的,查找该
       映像是通过地址偏移来实现,这和 LILO 的原理是一样的,但是 El-torito 做为一个启动光盘
       规范当然只能定义最通用的定义,不会定义具体的如那些强大的启动光盘制作工具的功能,因
       此这个多启动规范就有如鸡肋,这也是为什么很多 BIOS 不支持它的一个原因。

    由上分析可知,TIW.ISO 最有可能采用单启动规范的硬盘映像模拟方式,或者非模拟方式。

    3. 查看引导记录卷
   
    为了验证猜测,首先查看 TIW.ISO 的引导记录卷,即光盘的第 17 扇区(注意一个扇区大小为
    2k bytes)。



    结合下图给出的 El-torito 规范所定义的引导记录卷的数据结构:

[img] [/img]

    这里最重要的一个数据结构是 47-4A 的 DWORD 数据,它表示启动编录的首地址:
        47-4A:27 00 00 00
    按高位到低位转换即为 00 00 00 00 27,转换为十进制为 39,即启动编录首地址为第 39 扇区。

    4. 查看启动编录

[img] [/img]

    这需要结合 El-torito 规范所定义的启动编录的数据结构分析,下两图给出了格式:
    第一部分为 Validation Entry,共 20h 个字节:



    第二部分为 Default Entry,即默认入口(20h 字节),表示启动映像文件的首地址:

[img] [/img]
   
    第二部分即默认入口的数据分析(即所截图的第三行和第四行共 20h 字节)如下:
        00h        88        ;可启动映像文件
        01h        00        ;非模拟方式启动光盘
        02h-03h        00 00        ;默认内存段加载方式,即将 Loader 加载到 0000:7C00 运行
        04h        00        ;系统类型,0 表示80x86
        05h        00        ;未使用
        06h-07h        04 00        ;高地位转换后为 4 ,即要加载到内存的扇区为 4 个扇区,大小为 2k
        08h-0Bh        28        ;转换为十进制为 40,即 Loader 的首地址为第 40 扇区
        0C-1Fh        00        ;全 0

    5. 查看 Acronis Loader



    6. 提取引导映像

    由对第二部分的数据分析得知,Acronis Loader 大小为 2k,那么紧跟在存放 Loader 后面的是不
    是存放的就是引导映像呢,于是查看第 41 扇区:

[img] [/img]

    显然让人失望,因为这个扇区没有软盘或硬盘映像引导记录的特征,猜测这应该还是属于 Acronis
    Loader 的数据,继续向后查找,不妨用 Hexwork 搜索磁盘引导记录的结束标志 55 AA。
    Great!就在第 51 扇区发现了引导记录:
       
[img] [/img]

    于是我们猜测这接着的部分为引导磁盘映像,那如何确定大小呢,这好办,在 20h-23h 为总扇区
    数,在上图中为 43 47 01 00,高地位地址调换并转换为十进制为 83779 个扇区, 即为 42894848 字
    节,41889.5k 字节,和隐藏容量的大小很接近,于是我们将这部分提取出来,并保存为 TIW.IMG。



   最后用 Winimage 验证!打开 TIW.IMG,果然是引导映像文件,这大家就熟悉了吧,当然还要稍微
   调整一下扇区总数。



   7. 关于 Acronis 的光盘校验

   有人认为 Acronis Trueimage 生成的光盘存在校验,我以前也遇到过这样的问题,但是在最新的
   版本中并没有出现这种情况,所以我觉得应该是光盘制作时的问题。
   如我并没有制作任何映像,包括光盘映像和硬盘映像,而是直接用 GRUB 引导 Acronis Trueimage
   的 kernel.dat 和 ramdisk.dat,都可以成功安装 F11。
   注:MELU.LST
   kernel kernel.dat rw vga=788 mbrcrcs=on load_ramdisk=1 ramdisk_size=32768 quiet
   initrd ramdisk.dat /S




   8.  到此完成,其他工作个人水平有有限,若有哪位愿意的话分析一下 Acronis Loader 的代码并
    公布给大家。

   9. 说明:对于 Acronis disk director 生成的光盘或生成光盘时没有选择全功能的恢复光盘,在地址
   的偏移上是不同但类似的,方法相同。

   a.  附件
   El-Torito.pdf
    El-Torito.rar (54.32 KB, 下载次数: 938)




   以下是回复:



      TO: chen463

      1. 关于计算
      由 20h-23h 的数值为 43 47 01 00,这是十六进制的数值,而且可以看出这是从低位到高位排列的,于是
      我们必须将它转化为从高位到低位排列,即为 00 01 47 43,至于转换为十进制就比较容易了,具体计算
      过程是1×16^4 + (4×16+7)×16^2 + 4×16+3 = 65536 + 18176 + 67 = 83779,对于一个硬盘映像大小通常
      是 512 bytes 每扇区(这由 0B-0Ch 决定),那么可以得到要提取的数据大小 83779/2 = 41889.5k bytes。

      2. 关于大小调整
      进行大小调整的原因主要是,因为使用 ISOBuster 提取数据是按一个光盘扇区大小为单位进行提取的,
      而光盘扇区大小为 2k bytes,因此提取的数据大小略将有偏差(2k bytes 以内),所以建议提取的时候
      当然是可多不可少了,同时由于必须由映像的引导扇区来指示映像的相关参数,所以必须进行一下调整,
      使生成正确的参数,这只需要在 Winimage 中进行 映像 --> 更改格式 --> 选择自定义映像格式 操作,然后
      将扇区总数稍微改大一点即可。

   
      TO: cjzzz

      El-Torito.pdf在网上有下载,我也上传了一个。


      TO: chen463 cjzzz zhxush

      我省略了提取扇区数那一步看来是失误,下图演示了如何从 TIW.ISO 中提取出 TIW.IMG。

      说明:
      1. 先在 ISOBuster 左边侧栏的 Track 01 上单击右键并选 “抽取数据:指定节段地址 ”,将出现下图所示;
      2. 几个参数:
          起点地址: 51
          长度:         20945 (这是因为光盘扇区大小为 2k bytes,是硬盘映像扇区大小的 4 倍,因此长度=83779/4)
          抽取类型: 用户数据(标准扇区数据长度,ISO9660,前面的 “引导记录卷” 中说明了 1-5 字节的 “CD001”表明了
                                                光盘采用了标准 ISO9660 数据存储格式,实际上其他格式仅用于 Audio CD 等 )。
      3.  用其他工具提取的结果应该是一样的,大小:42894848 bytes。

      


=======================================
惭愧中。。。。。
在上次发布那个多合一的隐藏扇区光盘时就应该把这方法写出来了,可惜没有功夫及时写出来,让更多的朋友浪费时间,实在不好意思,下面做一下简要补充!



1.提取模拟的 硬盘镜像时,可以用WINHEX等工具直接打开光盘ISO引导区(用ULTRAISO或者WINISO保存引导文件为TIW.BIN),用搜索功能查找FAT16关键字,然后直接从这一行开始到结尾的所有内容保存为IMG文件就行了,这样大家可以看得更明白,操作也简单些!引导文件TIW.BIN开头到FAT16之间的内容就是BOOTWIZ.SYS的内容!

2.至于用其他引导器制作全功能光盘的方法,以前曾经发过,在这里就再重复一下:可以用GRUB,ISOLINUX加以参数引导ACRONIS的LINUX GUI,
kernel kernel.dat rw vga=788 ramdisk_size=32768 quiet  
initrd ramdisk.dat /S

RAMDISK_SIZE的大小根据RAMDISK.DAT的体积大小而设置(修改DAT后缀为ZIP解压),基本上40M够用,如果启动不正常可以适当增加。
VGA的常用参数值如下:
depth              640x480      800x600       1024x768        1280x1024
8bit                  769                 771                 773                 775
15bit                 784                 787                 790                 793
16bit                 785                 788                 791                 794
24bit                 786                 789                 792                 795
=======================================

[ 本帖最后由 kallry001 于 2006-6-23 09:56 PM 编辑 ]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多