|
本帖最后由 2011whp 于 2021-7-16 20:37 编辑
title 启动第一硬盘的 bootx64.efi
!BAT
command
# 无害命令command 使菜单可选中
set @extend 0x60200 1
# 利用,定义扩展变量,清空 (md)0x301+1 扇区的内容
find /efi/boot/bootx64.efi > (md)0x301+1
set @extend 0x60000 1
# 定义扩展变量
write (md)0x300+1 hdaaaa
# 强制写入 变量名 hdaaaa , 下面 开始 逐字符循环
:forstar
if "%%hdaaaa%%a"=="a" goto :end
# 下面的 hd0 改为 hd1 即为启动 第二硬盘
if "%%hdaaaa:~0,4%%"=="(hd0" chainloader %%hdaaaa:~0,7%%/efi/boot/bootx64.efi && boot
set hdaaaa=%hdaaaa:~1%
goto :forstar
:end
附加: 内存观察
查看 0x60200 开始的 16字节
cat --hex (md,0x60200,0x200)0x0+1,16
(详见:2015版帮助 4.1节 5.5节 6.14节 10章)
字节输入方式:
echo -e \x00\x65 管道至变量 或 内存 文件
内存是 数值时 的提取(要计算一下), 同样适用 @retval 变量 存储 的是数值时
set /a syz=*0x60000
内存数值引用是 32位的小端序数值
|
|