无忧启动论坛

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

[分享] U+深度隐藏毫无意义

    [复制链接]
发表于 2013-5-4 22:17:41 | 显示全部楼层
zds1210 发表于 2013-5-4 22:10
U+不隐藏对uefi兼容性最好,其次是普通隐藏,再次是高端隐藏。稳定性及安全性相反。

不知普通隐藏与高端隐藏的区别
回复

使用道具 举报

发表于 2013-5-4 22:18:05 | 显示全部楼层
zds1210 发表于 2013-5-4 22:10
U+不隐藏对uefi兼容性最好,其次是普通隐藏,再次是高端隐藏。稳定性及安全性相反。

不知普通隐藏与高端隐藏的区别
回复

使用道具 举报

发表于 2013-5-5 05:07:43 | 显示全部楼层
本帖最后由 不点 于 2013-5-5 05:51 编辑
zds1210 发表于 2013-5-4 17:26
用最新版的grub,测试失败。


这显示读软盘fd3时失败。需要确定失败原因。
首先,请用的 cat 命令确定原始的0x80盘,即你的U盘是可以正确读出的,
用cat读这个隐藏分区的第一扇区,然后再读第二扇区,等等,确定最大能读出的扇区数目。

怀疑分区的第一扇区读不出来。可能是因为分区太靠后了,超出了 bios 的访问能力。
如果确实是这样的,那应该重新设置隐藏分区的物理位置,让它位于盘的开头,便于bios 访问它。
这属于grub4dos 的普通问题,很多人都犯这样的错误。
不要试图让bios去访问大的扇区号码。否则,你自己会受到惩罚。调试起来,十分困难。出了问题,莫名其妙,找不到原因。

还有一个问题是,你怎么知道你的u盘一定是硬盘0x80呢?它也有可能被bios识别成软盘fd0啊。假如真的如此,你的代码就失效了。这又是一个很容易犯的普通错误,即,想当然地认为所有的bios都把这个u盘识别为硬盘。

以上两点仅仅是举例,说明很多应用程序的开发者不关心bios问题,因而受到bios的惩罚。自己弄的一头雾水,怀疑grub4dos有大毛病,要求grub4dos应该"改进"。

当然,grub4dos也有可能出问题。那样的话,我们找出bug,为grub4dos再一次作出贡献。
回复

使用道具 举报

 楼主| 发表于 2013-5-5 07:54:58 | 显示全部楼层
不点 发表于 2013-5-5 05:07
这显示读软盘fd3时失败。需要确定失败原因。
首先,请用的 cat 命令确定原始的0x80盘,即你的U盘是可以 ...

不点老大说的对,我的NF3的机器只要一用U+隐藏,即使用HDD+,启动后就认定为zip,以上代码就更不行了。
回复

使用道具 举报

发表于 2013-5-5 08:17:09 | 显示全部楼层
hhh333 发表于 2013-5-5 07:54
不点老大说的对,我的NF3的机器只要一用U+隐藏,即使用HDD+,启动后就认定为zip,以上代码就更不行了。

这是小菜一碟,grub4dos 根本不怕识别为 zip 或 fd0 这件事。怕的是没有考虑这种情况,依旧认为 “这个 U 盘必定被 bios 认成 hd0”。

只要思维当中没有盲区、误区,就不会遇到实质的问题。办法总比问题多。这与 U+ 这种技术无关,与 UD 无关,与 syslinux 无关,与 grub4dos 无关。对于任何技术,遇到问题之后,都有解决问题的办法。办法是各种各样的。有的需要改进代码,有的仅仅需要改进使用的方式、方法。

U+、UD、syslinux、grub2、grub4dos,诸如此类,都是好软件,都是有用的软件。







回复

使用道具 举报

 楼主| 发表于 2013-5-5 08:47:52 | 显示全部楼层
不点 发表于 2013-5-5 08:17
这是小菜一碟,grub4dos 根本不怕识别为 zip 或 fd0 这件事。怕的是没有考虑这种情况,依旧认为 “这个 U ...

刚才又试了一下,虽然在启动菜单中识别为ZIP,但启动后我查看了%?_BOOT%,还是(hd0,3),这就是说hdd+方式会固定为hd0,3,那么写成hd0就没有错。
回复

使用道具 举报

发表于 2013-5-5 08:55:28 | 显示全部楼层
hhh333 发表于 2013-5-5 08:47
刚才又试了一下,虽然在启动菜单中识别为ZIP,但启动后我查看了%?_BOOT%,还是(hd0,3),这就是说hdd+方式 ...

那还真不一定。

需要看 grldr 是被谁加载的。加载 grldr 的软件,能够决定启动盘是什么。如果加载 grldr 的软件没有正确设置 grldr 的启动设备,那就有可能出现意想不到的效果,启动设备可能是不准确的。

回复

使用道具 举报

发表于 2013-5-5 09:58:59 | 显示全部楼层
本帖最后由 zhaohj 于 2013-5-5 14:59 编辑

那把代码改一下,启动设备改成读0x8280的值
set /a boot=*0x8280&0xffffffff
dd if=(%boot%)96+1 of=(md)0x200+1 bs=1 count=8 skip=502
set /a pe=*0x40000&0xffffffff  && set /a ps=*0x40004&0xffffffff
map (%boot%)%pe%+%ps%  (17)
map --hook
rootnoverify (17)

回复

使用道具 举报

发表于 2013-5-5 10:34:57 | 显示全部楼层
我在 37 楼提到的问题也很关键:grldr 是被谁加载的?是谁最后直接启动了 grldr?

这是一个焦点。没准问题的症结就在此处:即,加载 grldr 的程序(或软件)没有设置正确的启动设备,比如说,假如它总是设置 hd0 为启动设备,那么这却不一定反映实际的 bios 的情况,导致后续一连串的错误。

我觉得这是最值得怀疑的地方了。所以,请一定注意 37 楼所提到的这个问题。

回复

使用道具 举报

 楼主| 发表于 2013-5-5 11:03:06 | 显示全部楼层
本帖最后由 hhh333 于 2013-5-5 11:05 编辑
zhaohj 发表于 2013-5-5 09:58
那把代码改一下,启动设备改成读0x8280的值
set /a boot=*0x8280&0xffffffff
dd if=(%boot%)96+1 of=(md) ...


这句不对吧:set /a pe=*409600&0xffffffff  && set /a ps=*409604&0xffffffff
(md)0x200=(md)512而pe应该从512*512=262144=0x40000这个地方取值吧?

如果前面用0x200后面应该是:set /a pe=*262144&0xffffffff  && set /a ps=*262144&0xffffffff

P大原来的地址应该没什么问题,不用改吧。
回复

使用道具 举报

 楼主| 发表于 2013-5-5 11:17:37 | 显示全部楼层
本帖最后由 hhh333 于 2013-5-5 11:19 编辑
不点 发表于 2013-5-5 10:34
我在 37 楼提到的问题也很关键:grldr 是被谁加载的?是谁最后直接启动了 grldr?

这是一个焦点。没准问 ...


我这台NF3的机器反正是有问题,目前U+只能用USBHDD+方式就能正确识别为HDD,其它的任何组合如V2或隐藏等,在BIOS启动顺序中都识别为ZIP,深度隐藏即使加代码也不行,syslinux干脆就来个boot error根本进不了。

但HDD+不隐藏不V2就一切OK。这个是不是不点老大讲的情况。
回复

使用道具 举报

发表于 2013-5-5 11:38:08 | 显示全部楼层
hhh333 发表于 2013-5-5 11:17
我这台NF3的机器反正是有问题,目前U+只能用USBHDD+方式就能正确识别为HDD,其它的任何组合如V2或隐藏等 ...

完全不是你说的那样。你只要能够启动 grldr,那就表明你没有遇到实质性的困难。

如果有实质性的困难,BIOS 故意设置障碍,让 dos、syslinux、ud、grub4dos 等无法进入,那么你根本就不能进入 grub4dos 的环境。

只要能够进入 grub4dos 的环境,那就说明,谢天谢地,这里没有根本性的问题,全都是可以解决的。虽然有某些问题,但那都属于小毛病,通过认真设置、完善,都是可以解决的。当然,前提是,你想去解决。如果你选择放弃,那当然就是无解了。

回复

使用道具 举报

发表于 2013-5-5 12:09:38 来自手机 | 显示全部楼层
哇!看贴长知识呀。虽然有些听不懂…
回复

使用道具 举报

发表于 2013-5-5 14:09:58 | 显示全部楼层
于夜大一样“对u+隐藏无爱。。。。”
回复

使用道具 举报

发表于 2013-5-5 15:02:53 | 显示全部楼层
本帖最后由 zhaohj 于 2013-5-5 15:05 编辑
hhh333 发表于 2013-5-5 11:03
这句不对吧:set /a pe=*409600&0xffffffff  && set /a ps=*409604&0xffffffff
(md)0x200=(md)512而pe ...


抱歉,确实换算错误了。
我还是改成16进制,看着明白多了。
grub4dos没有说(md)768的地址段是给用户使用的,改成0x40000~0x44fff空间保险一点。
回复

使用道具 举报

 楼主| 发表于 2013-5-5 15:24:11 | 显示全部楼层
zhaohj 发表于 2013-5-5 15:02
抱歉,确实换算错误了。
我还是改成16进制,看着明白多了。
grub4dos没有说(md)768的地址段是给用户使 ...

16进制确实直观多了,我现在将grldr的默认菜单改成如下形式:
  1. pxe detect
  2. configfile
  3. default 0
  4. timeout 1

  5. title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
  6.         errorcheck off
  7.         configfile /boot/grub/menu.lst
  8.         configfile /grub/menu.lst
  9.         if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
  10.         if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu.lst && configfile /menu.lst
  11.         find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
  12.         find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
  13.         find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst

  14.         #----U+DEEPHIDE----
  15.         set /a boot=*0x8280&0xffffffff
  16.         dd if=(%boot%)96+1 of=(md)0x200+1 bs=1 count=8 skip=502
  17.         set /a pe=*0x40000&0xffffffff  && set /a ps=*0x40004&0xffffffff
  18.         map (%boot%)%pe%+%ps% (fd3)
  19.         map --hook
  20.         set pe= && set ps= && set boot=
  21.         rootnoverify (fd3) && configfile /menu.lst

  22.         errorcheck on
  23.         commandline

  24. title commandline
  25.         commandline

  26. title reboot
  27.         reboot

  28. title halt
  29.         halt
复制代码
应该没什么问题吧?
回复

使用道具 举报

发表于 2013-5-5 16:37:41 | 显示全部楼层
本帖最后由 不点 于 2013-5-5 17:12 编辑

46 楼的菜单代码,确实完善了不少。我粗略看过之后,没发现问题。

但正如前面解释的,最关键的焦点在于,grldr 是谁启动的,grldr 被启动的时候,需要设置正确的启动盘到 DL 寄存器。如果没有正确设置,那么启动盘的盘号就可能是错的,即,0x8280 处的值并非表示真正的、由 BIOS 所给予的 U 盘的盘号。那么,上述经过诸位辛辛苦苦好不容易完善了的菜单,也就 “无用武之地” 了。

再补充一点。

按照传统 dos 的规范,启动盘只有两种可能:软盘 0x00 和 硬盘 0x80。

所以,为了能够容错起见,诸位也可以继续完善菜单。

比如说,首先假定 U 盘是 0x80,然后去读 0x80 的扇区内容。当发现 0x80 符合 U+ 深度隐藏的特征的时候,就放心地把 0x80 强制设置为启动盘(即 boot 盘)和 当前工作盘(即 root 盘)。

否则,当 0x80 不是 U 盘的时候,此时 U 盘一定是软盘 fd0 了。由于你事先已经知道,启动盘必定是 U 盘,所以,当 0x80 不是 U 盘的时候,0x00 就一定是 U 盘。光盘启动以及 USB-CDROM 启动的情况,启动盘的盘号在 0x81 至 0xFF 之间变动,此处不讨论它们。

确定了启动盘是软盘 fd0 之后,同样地,可以强制把启动盘和当前工作盘都设置为软盘 fd0。

以上这段讨论,是假定没有 USB-CDROM 参与启动的情况。如果有 USB-CDROM 参与启动,那么情况会复杂一些。请诸位自己分析那样的场景。

回复

使用道具 举报

发表于 2013-5-5 18:36:18 | 显示全部楼层
弱弱的说一句,下载P大的最新OPE,不解开部署到U+V2-zip深度隐藏,外置加载成功。相当牛。实测对新版grub的深度隐藏代码相当成功。其核心代码如下:

dd if=(hd0)96+1 of=(md)768+1 bs=1 count=8 skip=502
set /a pe=*393216&4294967295 && set /a ps=*393220&4294967295
write 393216 0
write 393220 0
map (128)%pe%+%ps% (17)
map --hook
set pe= && set ps=
set eb=17
rootnoverify (17)
希望大家在最新版grub中更新这段代码,再来说兼容性。
还有两点问题:
1.
write 393216 0
write 393220 0
2.set eb=17
这三句起什么作用,如果精简了行吧?

回复

使用道具 举报

 楼主| 发表于 2013-5-5 19:39:42 | 显示全部楼层
本帖最后由 hhh333 于 2013-5-5 19:46 编辑
不点 发表于 2013-5-5 16:37
46 楼的菜单代码,确实完善了不少。我粗略看过之后,没发现问题。

但正如前面解释的,最关键的焦点在于, ...


usbcdrom可以不考虑,因为这个不是U+产生的。U+的U盘我看到的都是hd0,3。
另外,上面这行       rootnoverify (fd3) && configfile /menu.lst
应该可以改成          rootnoverify (fd3) && configfile          更简洁一点



回复

使用道具 举报

发表于 2013-5-6 08:00:18 | 显示全部楼层
本帖最后由 糊涂 于 2013-5-6 08:10 编辑
hhh333 发表于 2013-5-5 11:17
我这台NF3的机器反正是有问题,目前U+只能用USBHDD+方式就能正确识别为HDD,其它的任何组合如V2或隐藏等 ...


NF3及K8类的板子是一批较特殊的板子

除了这些板子,其他大部分加载U+V2没问题

希望老师们找到解决这个问题的方案
回复

使用道具 举报

发表于 2013-5-6 13:24:51 | 显示全部楼层
糊涂 发表于 2013-5-6 08:00
NF3及K8类的板子是一批较特殊的板子

除了这些板子,其他大部分加载U+V2没问题

这个应该是UI官方升级考虑的问题,大家可以发帖子到它的官方论坛去。
回复

使用道具 举报

发表于 2013-5-6 16:48:16 | 显示全部楼层
阿弥陀佛 发表于 2013-5-4 16:41
确实不能说是毫无意义。专业的维护人员还是多准备一些U盘和PE吧。

对头,多做几个U,爱咋咋滴!
回复

使用道具 举报

发表于 2013-5-6 16:50:44 | 显示全部楼层
hhh333 发表于 2013-5-4 21:20
刚才下掉一个硬盘,原来用不起的i3的机子可以用了。

您的意思是说双硬盘U+深度不能启动吗?

如果是的话,那么在我的机器上爽硬盘是可以启动!

如果我理解错了,请无视啦!
回复

使用道具 举报

发表于 2013-5-6 16:51:18 | 显示全部楼层
也不能说U+深度隐藏的兼容性不好。如果大家用easyboot做分区引导,估计出不了菜单的机子就没有几个了。本来要上传一个U+深度隐藏模式给大家测试,包括老版和新版本的grub,但又要出差了,过段时间吧。
回复

使用道具 举报

 楼主| 发表于 2013-5-6 17:06:47 | 显示全部楼层
讯极天度 发表于 2013-5-6 16:50
您的意思是说双硬盘U+深度不能启动吗?

如果是的话,那么在我的机器上爽硬盘是可以启动!

可能是我的那块硬盘有问题,已经带病在坚持工作,前次弄了一个1.5T的盘,原盘了没有卸下来,现在干脆干掉算了。
回复

使用道具 举报

 楼主| 发表于 2013-5-6 17:11:47 | 显示全部楼层
zds1210 发表于 2013-5-6 16:51
也不能说U+深度隐藏的兼容性不好。如果大家用easyboot做分区引导,估计出不了菜单的机子就没有几个了。本来 ...

出菜单是一回事,其他的工具等能够不出问题地使用才是硬道理。有一般隐藏和高端隐藏就够了,我想绝大多数人不会用这个来做U盘维护。对于比较大的ISO做整体启动也不一定好。离开了整体启动,这种方式真的是我标题说的了。

不过做一下技术探讨与研究是可以的。
回复

使用道具 举报

 楼主| 发表于 2013-5-6 17:16:50 | 显示全部楼层
zds1210 发表于 2013-5-6 13:24
这个应该是UI官方升级考虑的问题,大家可以发帖子到它的官方论坛去。

大家应该没听说过,不隐藏来不了,隐藏后可以来的机器吧?而反之已经有一批实例的机子了,你觉得谁的兼容性更强呢。

我想UI官方也不存在什么再升级让这些板子可以来,你不隐藏已经没有问题了,那你就不隐藏嘛!

点评

很有道理,兼容性高于一切才是硬道理!  详情 回复 发表于 2013-12-3 01:23
回复

使用道具 举报

发表于 2013-5-6 17:40:37 | 显示全部楼层
hhh333 发表于 2013-5-6 17:11
出菜单是一回事,其他的工具等能够不出问题地使用才是硬道理。有一般隐藏和高端隐藏就够了,我想绝大多数 ...

外置打包,直接map,不算整体启动吧。
easyboot菜单运行 PE和dos工具并没有问题。
回复

使用道具 举报

 楼主| 发表于 2013-5-6 20:10:31 | 显示全部楼层
zds1210 发表于 2013-5-6 17:40
外置打包,直接map,不算整体启动吧。
easyboot菜单运行 PE和dos工具并没有问题。

我确实有点纳闷,为什么非得深度隐藏,明显降低了兼容性并且有其他隐藏方式也可以保护文件,我真的不知道它的优势在什么地方。
回复

使用道具 举报

发表于 2013-5-7 08:20:50 | 显示全部楼层
一直使用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 02:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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