无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 25959|回复: 78

[讨论] 静默过安检及Grub2

    [复制链接]
发表于 2020-1-29 00:53:55 | 显示全部楼层 |阅读模式
本帖最后由 hhh333 于 2020-2-8 18:42 编辑

一、先说一下静默绕过Secure Boot
网上找了多个,有这样或那样的毛病,最后选用adef (http://bbs.wuyou.net/forum.php?m ... tra=page%3D1&page=1)发的那个问题较少
1、基本原理及启动过程
bootx64.efi(位于 /efi/boot下,能够过安检的,我理解这个是获得了MS授权的)-->fde_ld.efi(这个用来装配置文件的,与bootx64.efi位于同一位置不能改名)-->grub.cfg(固定在/boot/grub/,不能改名,但可以改内容)-->grubx64.efi(这个是一个跳转用的头文件,可以用来跳转其他启动器,因为是由grub.cfg来调用的,所以可以改名、改内容、改位置)-->其他各种不能过安检的启动器
可见,实际上的核心文件就前面两个,思路就是用能够过安检的二传一下到不能过安检的启动器。以下是我的配置文件grub.cfg的内容:
  1. # Configuration file for Kaspersky GRUB fd_ldr.efi
  2. # Remove embedded chainloader module, insert patched module with internal PE loader
  3. set timeout=10
  4. rmmod chain
  5. insmod /efi/grub/chain.mod

  6. function ldrpe {
  7. if [ "$root" == "cd0" ]; then
  8.         set ldr=$1bootx64.efi
  9. else
  10.         set ldr=fde2$1.efi
  11. fi
  12. #search -n -f -s /efi/boot/$ldr
  13. chainloader /efi/boot/$ldr
  14. boot
  15. }
  16. menuentry "1-Xorboot Secure Boot" {ldrpe xor;}
  17. menuentry "2-rEFInd Secure Boot" {ldrpe ref;}
  18. menuentry "3-Grub2 Secure Boot" {ldrpe g2;}
  19. menuentry "4-MS" {ldrpe ms;}
复制代码
其中fde2xor fde2ref 等都用grubx64.efi改名字和内容而来,分别用来启动xorboot rEFInd等,原文件是要求启动grubx64_real.efi,可以用winhex找到这个字串改成你想启动的启动器的名称,如我的xorboot启动器的名字为xorbootx64.efi,如下图,在偏移8588的位置,文件名长度不够的,后面全部改00(注意改左边):
捕获.PNG
如此这般把另外三个也改好,对应关系如下:
fde2xor--xorbootx64.efi--xorboot启动器
fde2ref--refbootx64.efi--rEFInd启动器
fde2g2--g2bootx64.efi--grub2启动器
fde2ms--msbootx64.efi--ms的原版启动器

2、测试
以上准备工作做好了,可以进行测试,我是在VM15最新的虚拟机上测试的,安全启动可开闭。本地盘格式为GPT模式,前面建立ESP分区,用来安装PE和一揽子启动器,我的ESP分区为FAT32-5G大小
结果:
A、以上菜单均成功启动,如下图:
Windows 10 x64-2020-01-28-19-47-37.png Windows 10 x64-2020-01-28-23-56-26.png Windows 10 x64-2020-01-28-14-41-26.png Windows 10 x64-2020-01-28-20-12-06.png Windows 10 x64-2020-01-28-20-12-51.png
B、各菜单项基本都能够正常启动,说明过安检是成功的。但grub2确实差,无论是官方的2.04还是W大的2.05都不能直接启动bootx64.efi,直接黑屏不知道在什么的干活,这一直是它的老毛病,但以前似乎测试过从U盘启动时,直接装bootx64.efi的是可以启动(第一菜单项),大概是放GPT磁盘中它找不到北了。但W大的run和文件管理器可以启动PE,利用的是wimboot或ntboot功能,不能算正宗的启动PE的方式。这里rEFInd不错,把能够启动的EFI都扫出来了,并且可以启动。
C、实际上有些启动器不需要跳转器,可以直接在grub.cfg菜单中chainloader,但rEFInd不行,xorboot要多试几次才成功,g2可以直接装载。但总的来讲,有跳转器更稳定。
3、光盘启动测试
把两个核心文件做到ISO打包用的启动映像中,fde_ld.efi可以优先找到光盘中的grub.cfg,但对光盘是有限制的:即不支持UDF也不支持Joliet,这两个都是MS当家的光盘格式,因此bootx64.efi将找不到bcd文件,更找不到bcd指向的文件,更不好弄的是那个由grub.cfg调用的跳转器更加找不到它对应的启动器,尽管放在同一个目录,这就是我为什么菜单中光启时不用跳转器的原因。经测试,grub.cfg中不调用跳转器直接启动,xorboot先出一个错,按ESC后再次回车可进入;rEFInd不能进入;grub2没有压力直接进入;xor和g2进入后都是不能装载ms的启动器进而启动pe的,又试了W大的run和FM,也不能启动PE,但关了SB就可以启动,说明这个安检还在起作用。
4、关于wimboot的测试
  1. function WimPeEfi {
  2.   wimboot @:bootmgfw.efi:/efi/grub/boot/$1 \
  3.           @:bcd:/efi/microsoft/boot/$2 \
  4.           @:boot.sdi:/BOOT/boot.sdi \
  5.           @:$3:/BOOT/$3
  6. }
  7. if [ "${grub_platform}" == "efi" ]; then
  8.         insmod /efi/grub/${grub_cpu}-${grub_platform}/wimboot.mod
  9.   if [ "${grub_cpu}" == "x86_64" ]; then
  10.           # 此处可添加EFI64工具
  11.                 if [ "$root" == "cd0" ]; then
  12.                         set ldrwinpe=shellx64.efi
  13.                 else
  14.                         set ldrwinpe=msbootx64.efi
  15.                 fi
  16.           menuentry "Windows 8/81/10 X64_EFI" --class windows --class os {
  17.                   search --no-floppy --file --set=root /efi/boot/$ldrwinpe
  18.                   chainloader /efi/boot/$ldrwinpe
  19.           }
  20.           menuentry "Windows 8 X64_EFI by Wimboot" --class windows --class os {
  21.                   WimPeEfi msbootx64.efi b64 H3_864.WIM
  22.           }
复制代码
用W大的2.05出现badfile,用官方的2.04想加入W大的wimboot.mod,谁知又要map组件,map组件可能又需要其他组件,没继续试了。
总的来讲,grub2的wimboot似乎并不好用,也许是我不知道用法。我觉得EFI中用winboot应该和BIOS中一样,不要mod直接装wimboot(已知现在是不能像IPXE一样直接装的,会提示出错,这大概就是做wimboot.MOD的原因吧),使用wimboot的语法也尽量与iPXE一致。正确的逻辑应该是grub2要尽量去适应wimboot,而不是根据源码去改造wimboot来适应grub2。我看iPXE不论是在bios下还是EFI下都使用一个wimboot文件,而且语法也是一样的,grub2也应该可以做到吧。


小结:
1、静默过安检的第三方启动器的光盘不好做,还是老老实实用证书方式或干脆关了SB;
2、GTP硬盘下grub2还是不能直接启动bootx64.efi;
3、建议W大优化wimboot的使用。
======================

1、经过与“从此消失”讨论,发现卡巴的那个并不是不认UDF和Joliet,而是要求boot\grub\grub.cfg必须要小写字母
2、经仔细分析,wimboot命令中路径与文件也要写对大小写
提供一个模板: H3CD.7z (2.39 MB, 下载次数: 232)

评分

参与人数 2无忧币 +10 收起 理由
qq2348227 + 5 赞一个!
jdcgzb + 5 很给力!

查看全部评分

发表于 2020-1-29 07:31:51 | 显示全部楼层
方法不错,值得一试
回复

使用道具 举报

发表于 2020-1-29 07:42:04 | 显示全部楼层
不好意思!误会了,我以为过海关检查冠状病毒呢?
回复

使用道具 举报

发表于 2020-1-29 07:59:11 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2020-1-29 08:10:50 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2020-1-29 16:40:05 | 显示全部楼层
绕过安全启动套装还是用乌邦图的Grub2来管理各种启动比较好
反正乌邦图的grub2也是通过认证的,除了在surface这类硬件上也要改过,而且现在efi下也有wimboot

点评

拿ubt看了一下,虽支持joliet,但不能装其他启动器,一装就提示double free 0xXXXX,不知道么意思。  详情 回复 发表于 2020-1-29 22:57
回复

使用道具 举报

 楼主| 发表于 2020-1-29 22:57:56 | 显示全部楼层
江南一根葱 发表于 2020-1-29 16:40
绕过安全启动套装还是用乌邦图的Grub2来管理各种启动比较好
反正乌邦图的grub2也是通过认证的,除了在sur ...

拿ubt看了一下,虽支持joliet,但不能装其他启动器,一装就提示double free 0xXXXX,不知道么意思。

点评

换用ubt签名文件好像只能过第一道门,若想加载自己未经签名的efi文件照样出错,而且试过无法安装sbspolicy,不知H3大有没有遇到?在ubt的签名文件下如何安装sbpolicy并生效,可能还得请W大出手。  详情 回复 发表于 2020-1-31 18:43
回复

使用道具 举报

发表于 2020-1-30 10:34:15 来自手机 | 显示全部楼层
我也说一句github上有w大的新版,1个小时前更新的,试试看能行不,俺们就静候佳音了!
回复

使用道具 举报

发表于 2020-1-30 10:40:21 来自手机 | 显示全部楼层
fde_ld是卡巴斯基定制的有签名的grub2吧?
回复

使用道具 举报

发表于 2020-1-30 11:00:32 来自手机 | 显示全部楼层
研究这些不如把从文件启动的bios启动项加到bios文件里刷主板,也就是白名单功能集成到bios里。
回复

使用道具 举报

 楼主| 发表于 2020-1-30 11:00:48 | 显示全部楼层
应该是,W大的说明似乎与这个无关吧,我这段时间天天看更新。万一W大又憋大招
回复

使用道具 举报

发表于 2020-1-30 16:53:07 | 显示全部楼层
善举天成
回复

使用道具 举报

发表于 2020-1-30 18:10:06 | 显示全部楼层
大佬,放出启动ISO啊,我等学习一下菜单怎么写,依样葫芦

点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=370573&extra=&page=1 应有尽有  详情 回复 发表于 2020-1-30 19:21
回复

使用道具 举报

 楼主| 发表于 2020-1-30 19:21:15 | 显示全部楼层
zhxy9804 发表于 2020-1-30 18:10
大佬,放出启动ISO啊,我等学习一下菜单怎么写,依样葫芦

http://bbs.wuyou.net/forum.php?m ... p;extra=&page=1
应有尽有

点评

看了一下,bootmgr加载grub2貌似没有啊,嘿嘿  详情 回复 发表于 2020-1-30 23:20
回复

使用道具 举报

发表于 2020-1-30 23:20:46 | 显示全部楼层
hhh333 发表于 2020-1-30 19:21
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=370573&extra=&page=1
应有尽有

看了一下,bootmgr加载grub2貌似没有啊,嘿嘿

点评

g2在bios下不擅长,只在g4d中有转g2的菜单项  详情 回复 发表于 2020-1-31 08:17
回复

使用道具 举报

 楼主| 发表于 2020-1-31 08:17:42 | 显示全部楼层
本帖最后由 hhh333 于 2020-1-31 08:21 编辑
zhxy9804 发表于 2020-1-30 23:20
看了一下,bootmgr加载grub2貌似没有啊,嘿嘿

g2在bios下不擅长,只在g4d中有转g2的菜单项。efi下MS似乎转不了其他,要么作一启。xorboot可转g2

点评

嗯嗯,总感觉用起来憋屈, 不过开发理念之类的都是很好的,  详情 回复 发表于 2020-1-31 08:25
回复

使用道具 举报

发表于 2020-1-31 08:25:38 | 显示全部楼层
hhh333 发表于 2020-1-31 08:17
g2在bios下不擅长,只在g4d中有转g2的菜单项。efi下MS似乎转不了其他,要么作一启。xorboot可转g2

嗯嗯,总感觉用起来憋屈,
不过开发理念之类的都是很好的,

点评

linux世界都用它来作装载器啊  详情 回复 发表于 2020-1-31 09:01
回复

使用道具 举报

 楼主| 发表于 2020-1-31 09:01:52 | 显示全部楼层
zhxy9804 发表于 2020-1-31 08:25
嗯嗯,总感觉用起来憋屈,
不过开发理念之类的都是很好的,

linux世界都用它来作装载器啊
回复

使用道具 举报

发表于 2020-1-31 18:43:19 | 显示全部楼层
hhh333 发表于 2020-1-29 22:57
拿ubt看了一下,虽支持joliet,但不能装其他启动器,一装就提示double free 0xXXXX,不知道么意思。

换用ubt签名文件好像只能过第一道门,若想加载自己未经签名的efi文件照样出错,而且试过无法安装sbspolicy,不知H3大有没有遇到?在ubt的签名文件下如何安装sbpolicy并生效,可能还得请W大出手。

点评

我也是两眼一摸黑,ubt弄不成。目前卡巴就是在光启上不好使,其他还凑合。  详情 回复 发表于 2020-1-31 18:53
回复

使用道具 举报

 楼主| 发表于 2020-1-31 18:53:08 | 显示全部楼层
2012kwy 发表于 2020-1-31 18:43
换用ubt签名文件好像只能过第一道门,若想加载自己未经签名的efi文件照样出错,而且试过无法安装sbspolic ...

我也是两眼一摸黑,ubt弄不成。目前卡巴就是在光启上不好使,其他还凑合。
回复

使用道具 举报

发表于 2020-1-31 20:28:57 来自手机 | 显示全部楼层
呵呵,看来无望,权当一梦
回复

使用道具 举报

发表于 2020-2-1 10:14:40 来自手机 | 显示全部楼层
很详细的经验分享!感觉secure boot以后只会越来越难以越过,微软太霸道了,到处收保护费啊!我也感觉grub2-wimboot还有改进的空间,grub2-map感觉挺好的,wintoflash一个人搞定了UEFI-map,已经很了不起了!      
回复

使用道具 举报

发表于 2020-2-1 11:57:01 | 显示全部楼层
不用wimboot的话,一个bootmgfw.efi就够了吧,还要其他启动器做甚?

点评

目前不太清楚为什么g2直接调用bootmgfw.efi会黑屏卡死,其他的启动器调用这个文件基本没有压力。  详情 回复 发表于 2020-2-1 20:59
回复

使用道具 举报

 楼主| 发表于 2020-2-1 20:59:28 | 显示全部楼层
江南一根葱 发表于 2020-2-1 11:57
不用wimboot的话,一个bootmgfw.efi就够了吧,还要其他启动器做甚?

目前不太清楚为什么g2直接调用bootmgfw.efi会黑屏卡死,其他的启动器调用这个文件基本没有压力。

点评

好像不能调用ntfs分区的bootmgfw.efi,  详情 回复 发表于 2020-2-1 21:03
回复

使用道具 举报

发表于 2020-2-1 21:03:03 | 显示全部楼层
hhh333 发表于 2020-2-1 20:59
目前不太清楚为什么g2直接调用bootmgfw.efi会黑屏卡死,其他的启动器调用这个文件基本没有压力。

好像不能调用ntfs分区的bootmgfw.efi,
回复

使用道具 举报

 楼主| 发表于 2020-2-1 21:12:40 | 显示全部楼层
匿名者 发表于 2020-2-1 21:03
terminal_output console

意思是调用之前,要用这个命令?
回复

使用道具 举报

 楼主| 发表于 2020-2-1 21:20:12 | 显示全部楼层
匿名者 发表于 2020-2-1 21:03
terminal_output console

确实可以了,这个有什么讲究?
回复

使用道具 举报

 楼主| 发表于 2020-2-1 21:46:07 | 显示全部楼层
匿名者 发表于 2020-2-1 21:29
bios/uefi下 都是有两套显示的系统.
第一套是基本的,bios内置的,只能显示ascii字符.(console)
第二套相 ...

哦,感谢解惑!
刚才试了一下光启g2作一启,还是要经过efi shell二传再启动,否则找不到光盘上的BCD。如果硬盘上有,可以找到硬盘上的启动,把硬盘上的删了就找不到光盘上的了。xorboot与rEFInd不需要二传。

点评

光盘上,现在可以统一用wimboot启动wim,wimboot也能过安全启动了。想"正宗"地启动wim,加上 --rawwim --rawbcd 参数就好了。  详情 回复 发表于 2020-3-4 15:39
回复

使用道具 举报

 楼主| 发表于 2020-2-8 18:44:48 | 显示全部楼层
反映的问题基本解决,见首页。
回复

使用道具 举报

发表于 2020-3-4 15:39:54 | 显示全部楼层
hhh333 发表于 2020-2-1 21:46
哦,感谢解惑!
刚才试了一下光启g2作一启,还是要经过efi shell二传再启动,否则找不到光盘上的BCD。如 ...

光盘上,现在可以统一用wimboot启动wim,wimboot也能过安全启动了。想"正宗"地启动wim,加上 --rawwim --rawbcd 参数就好了。

点评

wimboot启动加载内核会比shell慢不少,这个有什么讲究  详情 回复 发表于 2020-3-8 13:56
所谓正宗与不正宗如何理解? 那两个参数是加上好还是不加加上是这么用吗:wimboot --rawwim --rawbcd @:.....  详情 回复 发表于 2020-3-5 09:06
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 12:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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