无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: sunsea

[求助] 零扇区有隐藏分区的BPB和一个可见区如何找到隐藏分区

[复制链接]
发表于 2015-2-10 20:04:44 | 显示全部楼层 |阅读模式
如题

现在MBR处有:
、1.参数正确的隐藏分区的BPB,且没有分区表项
2.一个正常分区的分区表记录

如何找到隐藏分区并访问?附上测试镜像

test.rar

500.77 KB, 下载次数: 25, 下载积分: 无忧币 -2

发表于 2015-2-11 09:05:10 | 显示全部楼层
这个必须要有!
回复

使用道具 举报

发表于 2015-2-11 10:11:53 | 显示全部楼层
你能说得更详细一些,好让人明白你的大致意思吗?

我猜猜看,你是不是下面这个意思?

MBR 上没有分区表,一开始就是文件系统的引导扇区,含有 BPB。

不过,既然没有分区表项,那么,隐藏不隐藏,就没意义了,因为隐藏标志是存在于分区表上的,既然没有分区表,也就无法说隐藏不隐藏的问题了。

换句话说,你的映像格式就是一个普通的软盘格式。从经典的角度来说,软盘就是不含分区表的,硬盘是含分区表的,这是软盘与硬盘的差别所在。当然,grub4dos 已经可以适应软盘含有分区表的情况,也能适应硬盘不含分区表的情况,所以,两者的界限已经模糊了。

但不要忘了,如果硬盘没有分区表,那么 DOS 是认不到硬盘的。同理,如果软盘有分区表,DOS 也认不得这个软盘。

主板 BIOS 在通电自检的时候,会把控制权传递给磁盘最开头的扇区,不管它是否含有分区表,也不管它是否含有 BPB。只要它的扇区结尾处是 55 AA 的引导扇区合法标志,即可执行控制的转移。

不含分区表的硬盘 MBR,从逻辑上讲肯定行得通,完全可以启动。但是不敢保证某些 OEM 制造商会永远支持这样的引导扇区布局。就连 BIOS 都要消失了,因此,什么都保证不了。

grub4dos 以及 wee,都在第二扇区上保留了一个扇区的空间,用于存放原先的 MBR,也可以存放任何一个分区的引导代码。但空间只有一个扇区,所以,放置 NTFS 的引导扇区是不行的,只够放置 FAT 的引导扇区。只要相应的引导扇区被加载在 0000:7C00 处,并且 DL 寄存器设置正确,那就可以引导了。这正是通电自检程序最后要执行的任务,即,它会把硬盘的引导扇区加载在 0000:7C00 处,并传递正确的 DL 盘号。所以,从原理上讲,引导是没问题的。

点评

0扇区,这个地方既是隐藏分区的一份复制的BPB(FAT16分区),他还有正常分区的分区表,具体可以看测试镜像  详情 回复 发表于 2015-2-11 10:15
回复

使用道具 举报

 楼主| 发表于 2015-2-11 10:15:47 | 显示全部楼层
不点 发表于 2015-2-11 10:11
你能说得更详细一些,好让人明白你的大致意思吗?

我猜猜看,你是不是下面这个意思?

0扇区,这个地方既是隐藏分区的一份复制的BPB(FAT16分区),他还有正常分区的分区表,具体可以看测试镜像
回复

使用道具 举报

发表于 2015-2-11 10:36:35 | 显示全部楼层
很抱歉,我没有下载你的映像。我觉得可以说得清楚的。

你是说,MBR 上既有分区表,也有 BPB 吧?这种情况只对 FAT 有效。如果是 NTFS,那么这个 BPB 所在的扇区,无法成为 NTFS 的第一扇区。

三重 mbr 以及后来的 multimbr,都是这样的结构,即,引导扇区同时含有 FAT 的  BPB 和 分区表。

你自己可以写一个引导程序,用来引导你的内核文件。但是难度比较高,因为 BPB 和 分区表同时存在,那么扇区的代码空间被压缩得很少了,通常是不够用来查找你的内核文件的。但你可以曲径通幽,分步骤实现。第一扇区有限的代码,可以用来直接加载某个固定的扇区序列(假定这个扇区序列是已知的)。这样,你就可以达到目的了。但这样做的代价是通用性降低,只能加载你所设定的扇区序列,别人用起来不方便。multimbr 的第一扇区就是这样设计的,你可以参考一下,没准可以有值得借鉴的地方。

点评

嗯,的确是这样的。那么我在g4d中如何访问这个隐藏分区?  详情 回复 发表于 2015-2-11 10:47
回复

使用道具 举报

 楼主| 发表于 2015-2-11 10:47:10 来自手机 | 显示全部楼层
不点 发表于 2015-2-11 10:36
很抱歉,我没有下载你的映像。我觉得可以说得清楚的。

你是说,MBR 上既有分区表,也有 BPB 吧?这种情 ...

嗯,的确是这样的。那么我在g4d中如何访问这个隐藏分区?

点评

其实换一个思路就简单了。在ud扩展分区上放一个文件UD.IMG,可以占满整个ud分区。 只要map (ud)/UD.IMG (fd0)就可以了。 IMG文件本身就是一个分区,除了EFI启动,也能有其他用法吧。  详情 回复 发表于 2015-2-11 14:36
回复

使用道具 举报

发表于 2015-2-11 11:36:22 | 显示全部楼层
Grub4dos 一直支持隐藏分区。grub4dos 从来不检查分区的隐藏标志,一直能够访问隐藏的分区,就和访问非隐藏的分区一样。

点评

我的意思是这个隐藏分区从来就没有分区表项就mbr那的一个bpb  详情 回复 发表于 2015-2-11 12:01
回复

使用道具 举报

 楼主| 发表于 2015-2-11 12:01:35 来自手机 | 显示全部楼层
不点 发表于 2015-2-11 11:36
Grub4dos 一直支持隐藏分区。grub4dos 从来不检查分区的隐藏标志,一直能够访问隐藏的分区,就和访问非隐藏 ...

我的意思是这个隐藏分区从来就没有分区表项就mbr那的一个bpb
回复

使用道具 举报

发表于 2015-2-11 13:47:09 | 显示全部楼层
本帖最后由 hxwgz 于 2015-2-11 14:03 编辑

在G4D(v0.4.4)下, test.img 作为文件
map --mem /test.img (fd0)
...
chainloader (fd0)+1
...
之后引导test.img中grldr(v0.4.5), root 变为 (fd0,0)
文件只有grldr
dd if=(fd0) of (fd0) count=1 skip=1
find 后会发现多出(fd0,1),(fd0,0)的文件变为ntldr等文件,(fd0,1)只有文件grldr。
此时的(fd0)是存放文件的磁盘,分为两个分区.

如果将test.img文件写盘,启动后应引导grldr并进入(fdx)。此模式没作测试。

点评

能用不实际写盘的方法解决吗?  详情 回复 发表于 2015-2-11 14:37
对不起口气略大了点  发表于 2015-2-11 14:30
您家终于通网了啊,0.4.4都什么时候的了  详情 回复 发表于 2015-2-11 14:22
回复

使用道具 举报

 楼主| 发表于 2015-2-11 14:22:17 来自手机 | 显示全部楼层
hxwgz 发表于 2015-2-11 13:47
在G4D(v0.4.4)下, test.img 作为文件
map --mem /test.img (fd0)
...

您家终于通网了啊,0.4.4都什么时候的了
回复

使用道具 举报

发表于 2015-2-11 14:36:30 | 显示全部楼层
sunsea 发表于 2015-2-11 10:47
嗯,的确是这样的。那么我在g4d中如何访问这个隐藏分区?

其实换一个思路就简单了。在ud扩展分区上放一个文件UD.IMG,可以占满整个ud分区。
只要map (ud)/UD.IMG (fd0)就可以了。
IMG文件本身就是一个分区,除了EFI启动,也能有其他用法吧。

点评

好吧我是说在通常部署条件下(比如楼顶的测试用例)如何读到隐藏分区?  详情 回复 发表于 2015-2-11 14:39
回复

使用道具 举报

 楼主| 发表于 2015-2-11 14:37:01 | 显示全部楼层
hxwgz 发表于 2015-2-11 13:47
在G4D(v0.4.4)下, test.img 作为文件
map --mem /test.img (fd0)
...

能用不实际写盘的方法解决吗?
回复

使用道具 举报

 楼主| 发表于 2015-2-11 14:39:22 | 显示全部楼层
sp_star 发表于 2015-2-11 14:36
其实换一个思路就简单了。在ud扩展分区上放一个文件UD.IMG,可以占满整个ud分区。
只要map (ud)/UD.IMG  ...

好吧我是说在通常部署条件下(比如楼顶的测试用例)如何读到隐藏分区?

点评

这个可能就要用到高级功能了,是不是这个方法? map (hd0)xxxxxx+yyyyyy (0) 在"支持含有碎片的文件仿真"这个帖子里看到的。  详情 回复 发表于 2015-2-11 14:54
回复

使用道具 举报

发表于 2015-2-11 14:54:27 | 显示全部楼层
sunsea 发表于 2015-2-11 14:39
好吧我是说在通常部署条件下(比如楼顶的测试用例)如何读到隐藏分区?

这个可能就要用到高级功能了,是不是这个方法?
map  (hd0)xxxxxx+yyyyyy (0)
在"支持含有碎片的文件仿真"这个帖子里看到的。

点评

[attachimg]209249[/attachimg]  详情 回复 发表于 2015-2-11 15:12
回复

使用道具 举报

 楼主| 发表于 2015-2-11 15:12:50 | 显示全部楼层
sp_star 发表于 2015-2-11 14:54
这个可能就要用到高级功能了,是不是这个方法?
map  (hd0)xxxxxx+yyyyyy (0)
在"支持含有碎片的文件仿 ...

{:soso_e101:}
QQ截图20150211151013.jpg

点评

这个要找高手问问了,但应该没有(fd0,0)吧?直接ls (fd0)/呢?  详情 回复 发表于 2015-2-11 16:24
回复

使用道具 举报

发表于 2015-2-11 16:24:23 | 显示全部楼层

这个要找高手问问了,但应该没有(fd0,0)吧?直接ls (fd0)/呢?

点评

无效,E17  详情 回复 发表于 2015-2-11 16:31
回复

使用道具 举报

 楼主| 发表于 2015-2-11 16:31:15 来自手机 | 显示全部楼层
sp_star 发表于 2015-2-11 16:24
这个要找高手问问了,但应该没有(fd0,0)吧?直接ls (fd0)/呢?

无效,E17

点评

可能是grldr检查不合法。(hd0)的0扇区应该是mbr,不是bpb,不能作为分区的开头。 实际放入一个img文件,用它的其实扇区和长度试试。我这都是纸上谈兵  详情 回复 发表于 2015-2-11 16:39
回复

使用道具 举报

发表于 2015-2-11 16:39:30 | 显示全部楼层

可能是grldr检查不合法。(hd0)的0扇区应该是mbr,不是bpb,不能作为分区的开头。
实际放入一个img文件,用它的其实扇区和长度试试。我这都是纸上谈兵
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 08:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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