无忧启动论坛

标题: 不知道这个是不是GRLDR的BUG,之前好像讨论过 [打印本页]

作者: 红毛樱木    时间: 2018-1-25 14:41
标题: 不知道这个是不是GRLDR的BUG,之前好像讨论过
无法读取U盘的(hd0,1)分区,用一段时间就这样,但是其他分区软件能读取,也没有报错,不知道怎么处理,还需要提供哪些信息?


作者: tools241    时间: 2018-1-25 15:13
请参考:
[分享]Grub4Dos - 直接启动Win10,...,Win7, 第1个XP, XP.VHD, ISO, WIM, PE ==>
    http://bbs.wuyou.net/forum.php?mod=viewthread&tid=380990


作者: 不点    时间: 2018-1-25 15:16
本帖最后由 不点 于 2018-1-25 15:19 编辑

你是不是弄错盘号了?从你的贴图来看,并不能看出你是否弄错盘号了。

试试

ls (hd0,1)/
ls (hd1,1)/
ls (hd2,1)/

ls (fd0,1)/
ls (fd1,1)/

还有

geometry (fd0)
geometry (fd1)
geometry (hd0)
geometry (hd1)
geometry (hd2)

如果你确实没弄错盘号的话,你可以给出 cat 的结果:

cat   --hex   (hd0)+1

看看分区表对不对。




作者: 红毛樱木    时间: 2018-1-25 15:36
不点 发表于 2018-1-25 15:16
你是不是弄错盘号了?从你的贴图来看,并不能看出你是否弄错盘号了。

试试



来啦,我对grldr的命令不熟。。
作者: 红毛樱木    时间: 2018-1-25 15:41
不点 发表于 2018-1-25 15:16
你是不是弄错盘号了?从你的贴图来看,并不能看出你是否弄错盘号了。

试试


好像发现问题了,您看这个正常的U盘,能识别到(hd0,1)是fat32分区,而不正常的识别不到。这种有没有办法用grldr自动修复?
作者: 不点    时间: 2018-1-25 15:57
怀疑病毒破坏了 U 盘的某些数据(比如 FAT32 的 BPB 表上的某些标志位),导致 grub4dos 无法识别此分区。

很久以前我解决过类似问题。那时候,攻击的目标是 GNU GRUB legacy,而 grub4dos 只是躺枪罢了。那时候,病毒修改了 FAT 表开头的介质类型位,导致 grub legacy 无法挂上 FAT 分区。我通过忽略检查某些位,轻易化解了攻击。其实不是什么病毒干的,而是 gnu grub 的敌人干的。

你让 yaya 来排解问题吧,我猜一定可以找到它的 “机关”。


作者: 红毛樱木    时间: 2018-1-25 16:00
不点 发表于 2018-1-25 15:57
怀疑病毒破坏了 U 盘的某些数据(比如 FAT32 的 BPB 表上的某些标志位),导致 grub4dos 无法识别此分区。
...

是啊,这个问题好久了,一直没有条件反馈,正好今天有用户反馈,就让用户保留这个U盘别动,来反馈了。分区其实还在的,可能就是GRUB4DOS判断这个FAT32分区类型条件太苛刻太多了才导致这种问题。等yaya上线再提供进一步信息了。
作者: 不点    时间: 2018-1-25 16:10
红毛樱木 发表于 2018-1-25 16:00
是啊,这个问题好久了,一直没有条件反馈,正好今天有用户反馈,就让用户保留这个U盘别动,来反馈了。分 ...

不是 grub4dos 检查 FAT 格式的条件苛刻,而是攻击者有针对性的定点爆破。

grub4dos 是按规范来的。攻击者让 FAT 的某个地方 “不规范”,从而达到攻击 grub4dos 的目的。

攻击者也许能让别的软件不受影响,也许别的某个软件也会 “躺枪” 也说不定。

它的攻击做得 “好” 的话,只让 grub4dos 失效;做得 “差” 的话,让别的 “无辜” 软件也失效。

当我们通过分析,找到它的 “机关” 的时候,我们也就能适应它的 “不规范” 了。


作者: 红毛樱木    时间: 2018-1-25 16:27
不点 发表于 2018-1-25 16:10
不是 grub4dos 检查 FAT 格式的条件苛刻,而是攻击者有针对性的定点爆破。

grub4dos 是按规范来的。攻 ...

这个和攻击无关,平常使用用着用着grub4dos就读取不到这个分区了。
快来个补丁吧yaya
作者: 不点    时间: 2018-1-25 16:33
本帖最后由 不点 于 2018-1-25 17:13 编辑
红毛樱木 发表于 2018-1-25 16:27
这个和攻击无关,平常使用用着用着grub4dos就读取不到这个分区了。
快来个补丁吧yaya


换个说法:有软件偷偷写入 U 盘,或者破坏 grub4dos 的代码,或者破坏了 U 盘上的某些数据,导致 grub4dos 出问题。至于说这算不算攻击,自个决定。


“和攻击无关”——有这样的把握?这么肯定?攻击者也不可能敲锣打鼓说是他干的呀(世事也有例外,比如某某组织就声称对某个炸弹攻击事件负责;不过那是有目的的,他们想要形成 “震慑效应”,扩大影响力,而不需要偷偷摸摸的)。你的 U 盘如果从来不插到 Windows 下,也不插到别的电脑上,你或许还可以说 “没攻击”。你只要跟外界交流,不可避免地就可能伤风感冒。世上哪有那么干净的事情、一尘不染?不排除你确实能证明那纯粹是 grub4dos 自己毁了自己——假如你确实不曾有过任何染毒的机会的话(这意味着你十分确定,从不让这个 U 盘与外界有交流、外界没有任何写盘的机会,这是很苛刻的了,一般是很难做到的)。

“快来补丁,yaya?”——你不提供攻击细节,怎可能有补丁?难道你是说 grub4dos 自己在攻击自己?纯粹是 grub4dos 的 bug?别开玩笑了,grub4dos 都是读盘,不会随便写盘的,怎可能破坏盘上的数据?除非你自己使用了错误的命令,写盘了。再说了,要是漫无目的随机写盘,那它毁坏的恐怕就不是小范围,也很难是这么精准——只让 grub4dos 无法挂上分区,其他软件不受影响。

我扯这么多,真不知有用没用。


作者: 红毛樱木    时间: 2018-1-25 18:27
不点 发表于 2018-1-25 16:33
换个说法:有软件偷偷写入 U 盘,或者破坏 grub4dos 的代码,或者破坏了 U 盘上的某些数据,导致 grub4 ...

您记得读取分区格式的代码在源码中的哪个文件吗?
作者: 不点    时间: 2018-1-25 18:52
红毛樱木 发表于 2018-1-25 18:27
您记得读取分区格式的代码在源码中的哪个文件吗?

对了,你也可以调试的。只要在源代码中加入 printf 打印一些信息,就能定位出错的位置,一点也不难,我每次都是用这个笨办法调试的。

FAT 文件系统处理代码好像在 fsys_fat.c 里面。

是的,不需要开发者,你自己也可以搞定。我就是这么折腾的,从一个完全的外行,变成了开发者。

你是高手,肯定能搞定。


作者: 红毛樱木    时间: 2018-1-25 22:33
不点 发表于 2018-1-25 18:52
对了,你也可以调试的。只要在源代码中加入 printf 打印一些信息,就能定位出错的位置,一点也不难,我每 ...

fsys_fat.7z (5.83 KB, 下载次数: 0)

这个是我用的版本的fsys_fat.c
看不懂。。。  不点能看看改一下要显示什么信息出来给你们看?
作者: 不点    时间: 2018-1-25 22:59
红毛樱木 发表于 2018-1-25 22:33
这个是我用的版本的fsys_fat.c
看不懂。。。  不点能看看改一下要显示什么信息出来给你们看?

很不好意思,我现在不能投入开发 grub4dos 了。你要么自己弄,要么等着开发者替你弄。

我的精力是有限的,有很多事情都占用我的时间。我安排自己在 grub4dos 上的投入,不多也不少,就是目前这么多。只做自己愿意做并且力所能及的工作。就是说,既能给别人提供有限的建议或帮助,也不让自己受累。

我现在连上网都不容易了,小字看不见,要用大字了。

作者: 2011yaya2007777    时间: 2018-1-26 08:31
本帖最后由 2011yaya2007777 于 2018-1-26 08:42 编辑

把分区表 0x1d2 处的分区标记 0xef ,修改为 0x0c 试一试。
如果还不行,那就是分区起始太大,0x06915d14 扇区,52.4Gb。

我一般是使用手机浏览本网站。这几天不知为何,手机不能访问本网站。
作者: chiannet    时间: 2018-1-26 08:46
红毛樱木 发表于 2018-1-25 16:00
是啊,这个问题好久了,一直没有条件反馈,正好今天有用户反馈,就让用户保留这个U盘别动,来反馈了。分 ...


是的,此问题发现很久了。从MAXSKYPE、 USBZL到USBOS早期版本都有人提到过。数量不多,但挺烦人。

据反馈说都是用着用着,忽然某一天就这样了:GRLDR 读取UD区内的文件没有问题,而UD区之外,不论高端分区,低端分区都有报告说GRLDR读取不了。通常用fbinstool工具修复一下MBR就没问题了。

从2015年起,USBOS启动文件,加入了应对机制:就是制作完毕,调用BOOTICE备份U盘设备的mbr文件,存放到UD区,一旦gldr读取不到UD分区之外的其它文件时,就由GRLDR自动把UD区内备份的mbr文件还原到U盘。这样做之后,就没有人再报告此类问题了。

但是这样做弊端也明显,就是怕备份了mbr文件之后,人为更改分区状态而没有及时重新替换mbr备份文件。当再次发生此故障时,用过时的MBR恢复到U盘。

作者: 2011yaya2007777    时间: 2018-1-26 09:04
把 (hd0,1) 的引导扇区贴上来。即BPB表。
是不是被破坏了。
作者: gy0715    时间: 2018-1-26 09:32
本帖最后由 gy0715 于 2018-1-27 23:01 编辑
2011yaya2007777 发表于 2018-1-26 09:04
把 (hd0,1) 的引导扇区贴上来。即BPB表。
是不是被破坏了。


。。。
作者: 2011yaya2007777    时间: 2018-1-26 10:32
分区起始 0x06915d14 扇区。
使用 DiskGenius 打开磁盘,选中磁盘,点“扇区编辑”卡,点下面“偏移量”,选“起始”,“扇区”,“十六进制”,输入“6915d14”,点“确定”。
出来PBR。使用鼠标拖曳选中1扇区,点右键,复制选快->另存为新文件
作者: 2011yaya2007777    时间: 2018-1-26 10:36
Re gy0715
是楼主反映的坏U盘的数据吗?我只要楼主反映的坏U盘的数据。
作者: 2011yaya2007777    时间: 2018-1-26 10:47
分区表 0x1d2 处的分区标记 0xef,实测不影响。
有可能是BPB表被破坏了。
作者: 不点    时间: 2018-1-26 10:52
2011yaya2007777 发表于 2018-1-26 08:31
把分区表 0x1d2 处的分区标记 0xef ,修改为 0x0c 试一试。
如果还不行,那就是分区起始太大,0x06915d14  ...

grub4dos 忽略 ID 字节。所以,应该与 EF 字节无关。

另外,搜到 EE 和 EF 的解释(见下文),它们是用于 EFI 的专用分区类型。我估计用户不可以把它当成普通的分区类型来使用。我猜,操作系统有可能会按照 EFI 规范来写入此分区!

果真如此的话,那就不需要做任何事了(不是 grub4dos 该管的事),只要避免使用 EF 字节即可。

“分区起始扇区号太大”,这也不像是造成问题的原因。因为原先能访问该分区,好好的(分区位置没变化),突然有一天不行了。

https://www.win.tue.nl/~aeb/partitions/partition_types-1.html

ee Indication that this legacy MBR is followed by an EFI header
ef Partition that contains an EFI file system

    Bob Griswold (rogris@Exchange.Microsoft.com) writes: MS plans on using EE and EF in the future for support of non-legacy BIOS booting. Mark Doran (mark.doran@intel.com) adds: these types are used to support the Extensible Firmware Interface specification (EFI); go to developer.intel.com and search for EFI. (For the types ee and ef, see Tables 16-6 and 16-7 of the EFI specification, EFISpec_091.pdf.)

作者: 不点    时间: 2018-1-26 11:08
恕我直言,可启动 U 盘不应该使用多分区。因为有些 BIOS 不支持多分区,会在启动时卡死。楼主使用多分区 U 盘,不具有通用性。如果只是自己用,那也没啥,只要自己的 BIOS 支持多分区启动便可。但如果要推广到大众,则不可取。

可启动 U 盘采用多分区就已经 “不正确” 了,而采用 EF 这种专用分区 ID,那就更是 “找事” 了。请原谅,我是 “就事说事”,是 “幽默”;决不是批评、指责、教训、数落人。我们的目的是共同研究、讨论和解决问题。我只是谈谈见解、想法而已,也不一定说得对。

作者: gy0715    时间: 2018-1-26 11:11
本帖最后由 gy0715 于 2018-1-27 23:01 编辑
2011yaya2007777 发表于 2018-1-26 10:36
Re gy0715
是楼主反映的坏U盘的数据吗?我只要楼主反映的坏U盘的数据。


。。。
作者: 不点    时间: 2018-1-26 11:23
好的,假如当事人明知 EF 字节不可以用,但(由于某种原因)偏偏想用,并且 yaya 也愿意对此问题进行定位和调试的话,我认为最快捷方便的调试手段就是在 fsys_fat.c 里面插入 printf 打印信息,逐步定位。看看为何此分区未能成功识别为 FAT。
作者: 红毛樱木    时间: 2018-1-26 11:31
不点 发表于 2018-1-26 11:23
好的,假如当事人明知 EF 字节不可以用,但(由于某种原因)偏偏想用,并且 yaya 也愿意对此问题进行定位和 ...

和ef无关,以前用0B或0C也是一样问题。你的这个猜测要忽略
作者: 红毛樱木    时间: 2018-1-26 11:32
2011yaya2007777 发表于 2018-1-26 10:36
Re gy0715
是楼主反映的坏U盘的数据吗?我只要楼主反映的坏U盘的数据。

他的优盘就是我反馈的优盘
作者: 红毛樱木    时间: 2018-1-26 11:34
本帖最后由 红毛樱木 于 2018-1-26 11:35 编辑
不点 发表于 2018-1-26 11:23
好的,假如当事人明知 EF 字节不可以用,但(由于某种原因)偏偏想用,并且 yaya 也愿意对此问题进行定位和 ...


关键是我真不会C
或者改好那个C文件给我,我有编译环境,编译了把输出信息给你们看。
作者: 不点    时间: 2018-1-26 11:35
红毛樱木 发表于 2018-1-26 11:31
和ef无关,以前用0B或0C也是一样问题。你的这个猜测要忽略

既然如此,那你们就配合 yaya 来调试吧。
作者: 不点    时间: 2018-1-26 11:38
红毛樱木 发表于 2018-1-26 11:34
关键是我真不会C
或者改好那个C文件给我,我有编译环境,编译了把输出信息给你们看。

还是看 yaya 有什么调试计划吧。我只是谈了自己的调试方法和习惯,不一定适合 yaya。
作者: 2011yaya2007777    时间: 2018-1-26 15:02
本帖最后由 2011yaya2007777 于 2018-1-26 15:22 编辑
请看看附件是不是需要的信息

不是
点“确定“后,出现新数据,光标一般位于x000处,鼠标左键点光标所在字节,按住不放,拖曳至x200以后,放开左键,点右键,保存数据。

你使用DiskGenius再截几张图。
usm(h:) 分区参数,浏览文件
usmesi(i:)    分区参数,浏览文件

作者: 2011yaya2007777    时间: 2018-1-26 15:16
以前正常,后来不正常,说明与grub4dos无关。
1楼贴图反馈不能挂载所选分区,可能是:
1. MBR分区表有问题,通过他找不到BPB表;
2. BPB表有问题,grub4dos挂载分区时,判断某些参数,不符合要求时,放弃挂载,退出。

至于为什么DiskGenius可以识别,有可能他不判断某些参数。
作者: gy0715    时间: 2018-1-26 15:23
本帖最后由 gy0715 于 2018-1-27 23:00 编辑
2011yaya2007777 发表于 2018-1-26 15:02
不是
点“确定“后,出现新数据,光标一般位于x000处,鼠标左键点光标所在字节,按住不放,拖曳至x200以 ...


。。。
作者: 不点    时间: 2018-1-26 15:43
2011yaya2007777 发表于 2018-1-26 15:16
以前正常,后来不正常,说明与grub4dos无关。
1楼贴图反馈不能挂载所选分区,可能是:
1. MBR分区表有问 ...

可能性太多了,比如,有可能是 ud 某些数据被破坏,影响了 grldr。也或者 grldr 本身被破坏,当然也就不正常了。

先按照 “可能性大的情况” 去处理吧。哪种情况可能性大,就先处理它。

我觉得,应该先试试从硬盘启动 grldr,看看可否访问 U 盘的 FAT 分区。

如果硬盘的 grldr 没问题,那说明是 U 盘的 GRLDR 遭到了破坏造成的。

如果硬盘的 grldr 也是同样的问题,那就确定是 FAT 分区关键信息被修改造成的了。



作者: 不点    时间: 2018-1-26 15:47
gy0715 发表于 2018-1-26 15:23
请再看看附件。

你搞错了吧?截取的是无用的扇区。

yaya 如果直接给个调试版让他测试,就不难为他了。




作者: gy0715    时间: 2018-1-26 16:00
本帖最后由 gy0715 于 2018-1-27 23:00 编辑
不点 发表于 2018-1-26 15:47
你搞错了吧?截取的是无用的扇区。

yaya 如果直接给个调试版让他测试,就不难为他了。


。。。
作者: 不点    时间: 2018-1-26 16:22
gy0715 发表于 2018-1-26 16:00
截取错了吗?

太难了,还是不截取算了。

等着 yaya 给你一条 grub4dos 的命令,那样更容易一些吧。


我前面提的问题,你能回答吗?

就是,在硬盘启动 grldr,看看能否访问 U 盘的 FAT32 分区?这个试验你能做吗?


作者: 2011yaya2007777    时间: 2018-1-26 18:55
截取错了吗?

把“字节”变成“扇区”就对了。不用复制保存了,直接截图。
作者: gy0715    时间: 2018-1-26 19:54
本帖最后由 gy0715 于 2018-1-27 23:00 编辑
2011yaya2007777 发表于 2018-1-26 18:55
把“字节”变成“扇区”就对了。不用复制保存了,直接截图。


。。。
作者: 2011yaya2007777    时间: 2018-1-26 20:06
这次对了
作者: chenall    时间: 2018-1-26 21:41
像网上流传的那些大白菜,老毛桃之类的PE尽量少用,我有发现了好几起由于使用此类PE启动系统之后,系统引导被(修改)导致无法启动,还有插在电脑上的U盘里面的引导也被修改了。
作者: 红毛樱木    时间: 2018-1-26 21:50
chenall 发表于 2018-1-26 21:41
像网上流传的那些大白菜,老毛桃之类的PE尽量少用,我有发现了好几起由于使用此类PE启动系统之后,系统引导 ...

ud能引导啊,这时候
作者: dos时代菜鸟    时间: 2018-1-26 22:11
应该是 分区表问题,我用 grub4dos 引导ubuntu .iso 文件 对硬盘的空余空间进行划分和安装ubuntu 以后,grub4dos 也会这样,可以 find 到文件,却不能 ls 和 使用分区上的文件。
我就怀疑是 ubuntu 安装时用的分区软件 把分区表 弄乱了,虽然也能用,但是,把grub 弄糊涂了。


作者: 2012zhd    时间: 2018-1-26 22:25
chenall 发表于 2018-1-26 21:41
像网上流传的那些大白菜,老毛桃之类的PE尽量少用,我有发现了好几起由于使用此类PE启动系统之后,系统引导 ...

技术上的事我不懂,但是的确多次遇到把u盘插到某些电脑上以BIOS(grldr为主引导)启动pe后,再启动其他的电脑就不行了,用FbinstTool打开提示要修复什么的。efi启动倒是没受影响。后来干脆量产一个u盘应急。
作者: 红毛樱木    时间: 2018-1-26 22:45
2012zhd 发表于 2018-1-26 22:25
技术上的事我不懂,但是的确多次遇到把u盘插到某些电脑上以BIOS(grldr为主引导)启动pe后,再启动其他的 ...

这个反馈的和你的不同,混淆了。
这个ud正常
作者: 窄口牛    时间: 2018-1-26 23:25
本帖最后由 窄口牛 于 2018-1-26 23:29 编辑

遇到过,莫名其妙启动不了了,必须重写mbr,第一次以为自己操作硬盘点错,把优盘搞坏;后来不能启动,用bootice检查优盘还是g4d主引导,并没有被误操作改成nt6,说明不是自己主观所为。我说的和楼主不一样,无效插嘴。
作者: 不点    时间: 2018-1-27 08:41
窄口牛 发表于 2018-1-26 23:25
遇到过,莫名其妙启动不了了,必须重写mbr,第一次以为自己操作硬盘点错,把优盘搞坏;后来不能启动,用boo ...

这个情况我早发现了。恶意软件偷偷写入引导区,即磁盘开头的若干个磁道,造成破坏。楼主的报告,本质上也是这种情况,只不过表现形式不同而已。正如 yaya 所说,只要一开始没问题,那就与 grub4dos 无关。后来出的问题,都是别的软件的问题。

总共大致有以下这些可能性:

情况一:主板 bios 有 bug,它能破坏硬盘的引导区。或者是恶意的,故意破坏 grub4dos。

情况二:某(恶意、病毒)软件偷偷写入引导区,破坏了 grub4dos。

情况三:Windows 操作系统的工具软件或某个驱动程序写入了引导区,造成破坏。这种情况是可能的,因为 Windows 也使用第一磁道。当你不使用 Windows 的某些磁盘工具的时候,可能没事。一旦使用了 Windows 自带的磁盘分区操作工具,就可能触发写入第一磁道的动作。

情况四:grub4dos 的 bug,自己毁了自己(基本不可能是这种情况)。


大家应该首先确定究竟是上述哪种情况。

如果是情况一,那根本就无解,你只能忍受。
如果是情况二,大家通过大量试验逐步排查,应该能够抓住这个恶意软件。
如果是情况三,那很容易解决:当可启动 U 盘插在电脑上的时候,永远不要直接或间接使用 Windows 自带的磁盘命令。




作者: 2011yaya2007777    时间: 2018-1-27 08:48
Re gy0715:
你使用1楼第1幅截图的环境,也就是说在grub4dos的命令行,分别执行以下命令,然后截图:
root , geometry (hd0) , find , vol , ls (hd0)/ , ls (hd0,0)/ , ls (hd0,1)/
作者: gy0715    时间: 2018-1-27 08:57
本帖最后由 gy0715 于 2018-1-27 22:59 编辑
2011yaya2007777 发表于 2018-1-27 08:48
Re gy0715:
你使用1楼第1幅截图的环境,也就是说在grub4dos的命令行,分别执行以下命令,然后截图:
root ...


。。。
作者: 红毛樱木    时间: 2018-1-27 09:18
不点 发表于 2018-1-27 08:41
这个情况我早发现了。恶意软件偷偷写入引导区,即磁盘开头的若干个磁道,造成破坏。楼主的报告,本质上也 ...

严重了。
这里ud的引导正常,
(hd0,0)的NTFS访问正常,
(hd0,1)的fat32访问不正常。
作者: 2011yaya2007777    时间: 2018-1-27 09:26
本帖最后由 2011yaya2007777 于 2018-1-27 09:37 编辑

2013-04-19 0.4.5c版本。1楼是2017-12-23 0.4.6a版本。是同一个U盘吗?
这次 ls (hd0,1)/ 返回 “磁盘读错误”, 1楼却返回“不能挂载所选择的分区”。

你再截图一张,扇区是 6915f00
作者: 红毛樱木    时间: 2018-1-27 09:42
2011yaya2007777 发表于 2018-1-27 09:26
2013-04-19 0.4.5c版本。1楼是2017-12-23 0.4.6a版本。是同一个U盘吗?
这次 ls (hd0,1)/ 返回 “磁盘读错 ...

他现在出差了。不在。UD里有不同的GRLDR,是同一个U盘。
作者: 不点    时间: 2018-1-27 09:47
本帖最后由 不点 于 2018-1-27 09:57 编辑
红毛樱木 发表于 2018-1-27 09:18
严重了。
这里ud的引导正常,
(hd0,0)的NTFS访问正常,


UD区看似正常,其实可能不正常。你有没有逐个字节进行对比?看看 ud 引导区是否被修改?你没有对比,就不敢拍胸脯说 ud 区没问题。

而且还有这种可能性:ud 引导区没破坏,但是 grldr 遭到了病毒的修改!假如你没有核对,你同样不敢拍胸脯。

技术是严肃的,不是想当然的。必须通过实际排查,通过艰苦劳动,才会有收获,否则都是空谈。


ud 能启动,或者甚至能启动到 grub 环境,这并不表明 ud 区未被动手术!这个概念应该不难建立吧?不要被假象迷惑了!

不是有报告说,只要重建 ud 的代码,一切都正常了。你怎么解释这个现象?

最自然的解释,首先很容易想到,是 ud 区代码被篡改了,是不是呢?

当然也不排除别的可能性。然而首先就应该核查 ud 区的代码究竟怎么被改动了,是不是?可是你们完全不做这个基础工作,本来能定位、能缩小范围的事情,却不能定位,啥都确定不了。这样的报告是很糟糕的,会让开发者无所适从,多浪费很多精力,多做很多无用功。


作者: 红毛樱木    时间: 2018-1-27 09:56
本帖最后由 红毛樱木 于 2018-1-27 10:00 编辑
2011yaya2007777 发表于 2018-1-27 09:26
2013-04-19 0.4.5c版本。1楼是2017-12-23 0.4.6a版本。是同一个U盘吗?
这次 ls (hd0,1)/ 返回 “磁盘读错 ...


mbr.zip (2.97 KB, 下载次数: 1)
不知道这个有没有用。
他用bootice备份的mbr
里面两个文件:
1是默认的(备份扇区数:1)
63是选择备份扇区数:63
作者: 不点    时间: 2018-1-27 10:02
本帖最后由 不点 于 2018-1-27 10:22 编辑
红毛樱木 发表于 2018-1-27 09:56
不知道这个有没有用。
他用bootice备份的mbr
里面两个文件:


我不会去检查的,我只提供思路。检查病毒修改了哪些字节,是你们自己的事,这不难做到,不需要开发者介入,而且我也脱离项目的维护了。

不过我刚注意到你不是回复我,而是回复 yaya。抱歉。

作者: 红毛樱木    时间: 2018-1-27 10:25
不点 发表于 2018-1-27 10:02
我不会去检查的,我只提供思路。检查病毒修改了哪些字节,是你们自己的事,这不难做到,不需要开发者介 ...

退一万步说,即使真的如你所说是病毒攻击修改。但是这个U盘的情况是可以通过修改grub4dos的代码来避开的,我期望yaya能避开这个问题。

再说,这不是你说的病毒攻击
作者: 不点    时间: 2018-1-27 10:49
红毛樱木 发表于 2018-1-27 10:25
退一万步说,即使真的如你所说是病毒攻击修改。但是这个U盘的情况是可以通过修改grub4dos的代码来避开的 ...

假如 fat 分区 bpb 和 fat 确实被修改了,yaya 通过改进 grldr 就能适应。

假如是病毒攻击了 ud 区的引导代码或者 ud 区的 grldr 文件本身,yaya 根本就没法下手。

两个都是假如,看明白了吗?

您得排除其中的一个假如的情况,缩小范围,好让 yaya 去开展工作啊?是不是?


确实,我不能够说,我说它有病毒,那它就有病毒。我说的当然不算数。真理也不是掌握在我手上。

但是,ud 区被篡改了,这是你们自己暴露出来的,这能怪我吗?你们自己说的,只要重建 ud 区,一切正常。

那这算不算是病毒破坏呢?在我看来就是病毒,或者等价于病毒。

你不认为是病毒,那它遭到的破坏,总是存在的。比如说,你们使用某个工具来挂载 ud 区的文件。这个工具就有可能出现 bug,导致 ud 区被破坏。

还比如,某些 cgi 或 ghost 工具,也有可能写入引导区,破坏 ud 的代码或数据。

红毛大人记不记得?wee 当初是 63 扇区,后来为什么瘦身改成了 62 扇区?那是因为 Ghost 工具会毁掉末尾的扇区!没办法,只好让 wee 瘦身!

报告者很伟大!他确定了问题的根源,告诉了我这些细节,让我能够通过瘦身躲过了这个问题。

如果红毛大人也做个那样的报告者,那该多好啊!


作者: 红毛樱木    时间: 2018-1-27 11:09
不点 发表于 2018-1-27 10:49
假如 fat 分区 bpb 和 fat 确实被修改了,yaya 通过改进 grldr 就能适应。

假如是病毒攻击了 ud 区的 ...

假如 fat 分区 bpb 和 fat 确实被修改了,yaya 通过改进 grldr 就能适应。--------------------------------------------------------------此贴种种迹象表明就是这种情况

假如是病毒攻击了 ud 区的引导代码或者 ud 区的 grldr 文件本身,yaya 根本就没法下手。-----------------------------------------此贴种种迹象表明不是这种情况
作者: 不点    时间: 2018-1-27 11:53
本帖最后由 不点 于 2018-1-27 12:38 编辑
红毛樱木 发表于 2018-1-27 11:09
假如 fat 分区 bpb 和 fat 确实被修改了,yaya 通过改进 grldr 就能适应。----------------------------- ...


但愿如此。那就太简单了,对于一个开发者来说,很容易通过调试找到症结。

但我的感觉却与你不同。我感觉它好像复杂得多,不像是这么简单的病毒行为。

你们回忆一下,当你们重建 ud 区的时候,它正常了。你们记不记得?此时 FAT 分区有改动吗?

如果 FAT 分区没有任何改动,它居然都正常了,那说明 FAT 分区根本就没破坏,推论——> 只有 ud 区被破坏这一种可能性了。

我提议你们做的另一个试验,你们也不做。那就是,从硬盘启动一个未被修改的 grldr,看看它能否访问 U 盘上有问题的 FAT 分区。如果能访问,那就像铁一样证明了 FAT 分区并未被破坏。如果同样不能访问 U 盘 FAT 分区,那也像铁一样证明了确实是 FAT 分区信息遭到了破坏。可惜这个简单有效的试验你们拒绝去做。

你不做这些试验,就凭空 “坚信” 某一种情况是所谓的 “事实”,而那 “事实”,有可能只是 “假象” 而已。人有可能被假象欺骗。

我从你们所提供的哪些 “种种迹象” 中,看不出能够排除 “FAT 未被破坏” 的可能性,看不出 “ud 区未被破坏” 的那种 “必然性”。也许你们掌握了别的情况不愿意透露。但我从你们已经透露出来的信息当中,实在看不出有什么理由和 “迹象” 能够排除 ud 区本身被篡改的可能性。


既然我们有办法直接证明 FAT 分区是否被破坏(通过从硬盘启动 grldr 来证明),那么,首先就应该做这个验证。这是排解 bug 的顺序问题。就是,容易确定的事情,要早早地确定,事先完成。而那些确定不了的,则靠后进行。你这顺序都搞错了,一上来就去按照 FAT 已经被破坏的情况去处理。万一 FAT 没被破坏呢,这不累死开发者了吗?为什么可以避免的情况,而不去避免呢?做这个试验又不是要你们付出什么巨大代价,举手之劳啊!

在能够轻易证明 FAT 是否被破坏的情况下,为什么不去证明呢?你如果证明了的话,这样就把目标锁定了,开发者也就有目标了,何乐而不为呢?你如果证明了的话,大家也都不会再去想各种五花八门的情况了,你有说服力了,就可以避免很多没有意义的讨论,以及避免互相扯皮了。

我也退一万步说,就算你蒙对了(即,最后表明确实是 FAT 信息被破坏),那你这个处理问题的步骤和顺序也是不对的,是不符合逻辑的。


作者: freesoft00    时间: 2018-1-27 13:16
做好的可以启动的U盘,把grldr备份出来,然后把分区表和fat分区的关键扇区也都备份出来。
等出现无法启动了。然后再备份出一份内容。
两次比较。应该就可以弄明白修改了哪里。
作者: gy0715    时间: 2018-1-27 19:55
本帖最后由 gy0715 于 2018-1-27 22:57 编辑
2011yaya2007777 发表于 2018-1-27 08:48
Re gy0715:
你使用1楼第1幅截图的环境,也就是说在grub4dos的命令行,分别执行以下命令,然后截图:
root ...


谢谢
作者: 2011yaya2007777    时间: 2018-1-27 20:31
1楼是2017-12-23 0.4.6a版本。请使用这个版本测试.

你再截图一张,扇区是 6915f00
作者: gy0715    时间: 2018-1-27 20:39
本帖最后由 gy0715 于 2018-1-27 22:57 编辑
2011yaya2007777 发表于 2018-1-27 20:31
1楼是2017-12-23 0.4.6a版本。请使用这个版本测试.

你再截图一张,扇区是 6915f00


谢谢
作者: 2011yaya2007777    时间: 2018-1-27 21:13
本帖最后由 2011yaya2007777 于 2018-1-27 21:20 编辑

截图:
cat --hex (hd0)+1
截图:
cat --hex (hd0)0x06915d14+1
截图:
cat --hex (hd0,1)+1


作者: gy0715    时间: 2018-1-27 21:19
本帖最后由 gy0715 于 2018-1-27 22:58 编辑
2011yaya2007777 发表于 2018-1-27 21:13
截图:
cat --hex (hd0)+1
截图:


谢谢
作者: 2011yaya2007777    时间: 2018-1-27 21:24
必须在2017-12-23 0.4.6a版本测试!!!
截图:
cat --hex (hd0)0x06915d14+1
截图:
cat --hex (hd0,1)+1
作者: 不点    时间: 2018-1-27 21:30
gy0715 发表于 2018-1-27 20:39
扇区是 6915f00 什么意思啊?

看到没有?在 ls 试图列出 NTFS 文件时,末尾也出现错误 “不协调的文件系统结构”。我猜,很可能文件都没列完就出错了!

NTFS 分区也损坏了吗?那它毁的东西也太多了吧?

试试从硬盘启动,不从 U 盘启动,保证硬盘上的 grldr 是未被破坏的。看看结果是否一样?

越来越接近谜底了……

作者: gy0715    时间: 2018-1-27 21:35
本帖最后由 gy0715 于 2018-1-27 22:58 编辑
2011yaya2007777 发表于 2018-1-27 21:24
必须在2017-12-23 0.4.6a版本测试!!!
截图:
cat --hex (hd0)0x06915d14+1


谢谢
作者: 不点    时间: 2018-1-27 21:47
gy0715 发表于 2018-1-27 21:35
版本是2017-12-23 0.4.6a

看到没有?qemu 虚拟机竟然不能读出大扇区号,只能读小扇区号。怎么可能呢?要知道,正常的时候它是可以读大扇区的呀!

究竟可能是哪里不正常了呢?肯定是 grldr 不正常了,而不会是 qemu 的 bios 不正常了。qemu 的 bios 又没人动它,它怎会不正常?

那么,grldr 又怎会不正常了呢?这就该怀疑到 “ud 区的 grldr 本身已经被破坏了” 吧?是时候去验证一下了吧?给 qemu 挂上虚拟硬盘,用虚拟硬盘上的 grldr 启动试试,结果不就出来了?



作者: 2011yaya2007777    时间: 2018-1-27 21:51
按不点67#的方法,从硬盘的grub4dos命令行执行测试。不知是否可以做到?
作者: gy0715    时间: 2018-1-27 21:54
2011yaya2007777 发表于 2018-1-27 21:51
按不点67#的方法,从硬盘的grub4dos命令行执行测试。不知是否可以做到?

看不懂不点在说什么,也不懂怎么做
作者: 2011yaya2007777    时间: 2018-1-27 22:03
比如启动windows,进入菜单:
1. windows 7
2. grub4dos
选择2进入grub4dos环境。

或者从其他U盘启动,进入grub4dos命令行,再插入这个U盘,执行测试。
作者: 不点    时间: 2018-1-27 22:03
本帖最后由 不点 于 2018-1-27 22:12 编辑
gy0715 发表于 2018-1-27 21:54
看不懂不点在说什么,也不懂怎么做


好的,我解释一下。

你的贴图表明,grldr 本身被破坏了。换句话说,是 ud 区已经不正常了。

如果 grldr 没被破坏的话,它肯定能够成功读取扇区,而不是 disk read error。

道理就这么简单。

因此,你需要用软盘或硬盘上的 grldr 来启动测试,看看 ntfs 和 fat 分区能否正常访问。

实在不会做?

你下载个 DOS 软盘镜像,把新版的 grub.exe 拷进去,然后,把它挂到 qemu 上(作为软盘),启动到 dos 命令行,敲入 grub 回车,然后访问 U 盘(也就是你的 hd0 盘,即,含有 ud 区的那个盘),看看两个分区 (hd0,0) 和 (hd0,1) 能否正常访问?


作者: gy0715    时间: 2018-1-27 22:11
2011yaya2007777 发表于 2018-1-27 22:03
比如启动windows,进入菜单:
1. windows 7
2. grub4dos

1.对grldr的版本有要求吗?
2.用其它U盘启动,不知道如何进入grub2dos命令行
请多多指导
作者: 不点    时间: 2018-1-27 22:16
本帖最后由 不点 于 2018-1-27 22:25 编辑
gy0715 发表于 2018-1-27 22:11
1.对grldr的版本有要求吗?
2.用其它U盘启动,不知道如何进入grub2dos命令行
请多多指导


用我刚才给你的 DOS 软盘方案,最简单快捷,不需要安装 Windows。

你当然要用新版了,因为有新版,为何不用新版?

其实任何版本都行,只要保证 grldr 或 grub.exe 文件本身未被病毒破坏即可。


不知道 grub.exe 是啥?它就是 grub for dos 啊。它就是运行在 dos 下的 grub 啊。它就相当于后来的 grldr 的功能啊。


作者: 不点    时间: 2018-1-27 22:29
本帖最后由 不点 于 2018-1-27 22:42 编辑

其实没必要继续测试了,无论 FAT 分区是否被损坏,都不影响下结论,即,“ud 区肯定已经被破坏了”。确定无疑。

我觉得 yaya 终于 “解放” 了,不需要再费力去排解 “bug” 了。

节约点宝贵的时间和精力,去专心排解 “求道者” 报告的那个 bug 吧。已经好几天了,也没有见到更新,我猜可能不那么容易解决吧。

保重身体,要过年了,节日期间时间多,但键盘族最容易在节日期间累着。注意身体,多喝水,多吃点心。


作者: 求道者    时间: 2018-1-27 23:21
本帖最后由 求道者 于 2018-1-27 23:24 编辑

很简单嘛
假如是对现在的数据状况感兴趣
就直接dd裸备份u盘所有写了数据的扇区
压缩发网盘
如果是对谁偷偷修改了ud感兴趣的话
那就只能一点一点排查了
这很麻烦
而且很有可能根本查不出问题所在
毕竟有可能是病毒
也有可能是异常的驱动或者工具
这可以弄个驱动丢win里然后出现类似操作时就提醒你
但是要人写这种东西
如果是g4d某个0day的洞
那就差不多是大海捞针了吧
难道也写个类似的东西放到g4d里 让他后台出log?
不过说不定这也是grub legacy的洞(一起治了?)
只是治标的话更简单

买个带写保护的U盘
没事写保护
病毒 异常 什么都能避免
只要避免写操作
作者: 红毛樱木    时间: 2018-1-28 15:08
本帖最后由 红毛樱木 于 2018-1-28 15:49 编辑
2011yaya2007777 发表于 2018-1-27 22:03
比如启动windows,进入菜单:
1. windows 7
2. grub4dos


本地硬盘启动grldr,结果一样,不能访问u盘的1号分区,分区为未知。
0号分区正常。
和ud引导结果一模一样
作者: 江南一根葱    时间: 2018-1-28 17:20
咳咳,都是大师,我是啥编程都不懂的中老年屌丝,我觉得chkdsk一下ntfs区修复下卷位图错误,说不定啊fat区就正常了,
作者: 红毛樱木    时间: 2018-1-28 17:36
江南一根葱 发表于 2018-1-28 17:20
咳咳,都是大师,我是啥编程都不懂的中老年屌丝,我觉得chkdsk一下ntfs区修复下卷位图错误,说不定啊fat区 ...

chkdsk之后失败。
作者: 不点    时间: 2018-1-28 18:59
红毛樱木 发表于 2018-1-28 17:36
chkdsk之后失败。

失败?是谁失败?是 chkdsk 自己失败?还是 chkdsk 成功了,但 grldr 仍是无法访问 FAT 分区?

如果 chkdsk 失败,那说明 FAT 分区也被破坏了,破坏得严重。

你应该贴出 cat --hex (hd0,1)+1 的输出结果,这样好知道硬盘的 grldr 是否正常。它只要不出现 disk read error,就是成功。

另外,要从硬盘启动 grldr 才对。不可以从 ud 区用 chainloader 来启动硬盘上的 grldr。这是因为 ud 区已经被破坏了,已经不可靠了。


作者: 不点    时间: 2018-1-28 19:06
红毛樱木 发表于 2018-1-28 15:08
本地硬盘启动grldr,结果一样,不能访问u盘的1号分区,分区为未知。
0号分区正常。
和ud引导结果一模 ...

也可能你的 grldr 是已经被损坏了的。
作者: 红毛樱木    时间: 2018-1-28 19:09
不点 发表于 2018-1-28 19:06
也可能你的 grldr 是已经被损坏了的。

很明显我换了grldr也不行。
作者: 红毛樱木    时间: 2018-1-28 19:27
不点 发表于 2018-1-28 18:59
失败?是谁失败?是 chkdsk 自己失败?还是 chkdsk 成功了,但 grldr 仍是无法访问 FAT 分区?

如果 c ...

请不要太主管的认为我的反馈无效
作者: 不点    时间: 2018-1-28 20:33
红毛樱木 发表于 2018-1-28 19:27
请不要太主管的认为我的反馈无效

先比较一下 UD 区被破坏了多少个扇区。

如果不做这个工作,我估计没人愿意再来这里折腾了。



作者: 不点    时间: 2018-1-28 20:48
我还有一个建议,你制作一个最小的能反应问题的 U 盘镜像,放在百度云盘上,让 yaya 亲自测试,这样你就可以彻底撒手不管了,后续的调试全由 yaya 一人完成。你可以看自己方便的时候弄一个测试镜像便可。一个月,或半年能弄好都行,不必着急。

我这只是建议罢了。我不知道你是否同意,也不知道 yaya 是否同意。

最后如果真能从中找到什么有价值的东西,我们获得进步了,那么开发者会感谢你,用户们也会感谢你。


作者: 求道者    时间: 2018-1-28 21:51
不点 发表于 2018-1-28 20:48
我还有一个建议,你制作一个最小的能反应问题的 U 盘镜像,放在百度云盘上,让 yaya 亲自测试,这样你就可 ...


我觉得很对
从第一个扇区开始dd
完全复制整个磁盘


感觉现在测也只能是在瞎测
虽然为版区增加了活跃度(




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