- Структура ISO-файла
- Установка загрузчика в 0-й сектор диска HDD (LEGASY BOOT)
- Установка загрузчика в режиме UEFI
- Редактирование BCD
- Правка 7_boot_x64.wim (утилита Exe2Aut.exe)
- Создание загрузочного ISO при помощи mkisofs
Структура ISO-файла
0x8000 01 CD001 - первый заголовок
0x8800 00 CD001 - заголовок EL TORITO SPECIFICATION (указывает на первую 32бит запись 0x14*0x800=0xA000)
0x9000 02 CD001 - расширенный заголовок UNICODE
0x9800 FF CD001 - заголовок terminator
0xA000 01 ... AA55 - первая 32бит запись
0xA020 88 - (9й байт (например, 2D) это загрузчик, запускающий bootmgr (в конце этого сектора 0x2D*0x800=0x16800 и можно изменить имя файла bootmgr например на bl0tmgr)
0xA040 91 - последняя 32бит запись (если 90, то НЕ последняя, если второй байт = 0xEF, то запись UEFI)
0xA060 88 - (9й байт (например, 2E) первый сектор(?) 0x2E*0x800=0x17000
Установка загрузчика в 0-й сектор диска HDD (LEGASY BOOT)
hex-редактором скопировать 446(0x1BE) байт с любой загрузочной флешки Windows
0x1BE - начинаются записи 4-х разделов по 16 байт каждый
Первый байт активного раздела должен быть 0x80
0x1C6 (если 1-я запись раздела) - LBA сектора первого раздела
Это загрузчик, запускающий bootmgr (полный адрес: LBA * размер сектора, т.е. 0x800*0x200=0x100000)
Установка загрузчика в режиме UEFI
В случае загрузки UEFI сектор 0 будет заполнен 0х00
Модификация bootmgr
Взять 7_boot_x64.wim\1\Windows\Boot\PXE\bootmgr.exe, изменить пути (например, BOOT на BL0T для boot\bcd, boot\bootstat.dat, boot\fonts) бинарным редактором и запаковать в bootmgr при помощи BOOTMGR_Recompiler
Можно изменить и имя менеджера загрузки (например на bl0tmgr) в секторе загрузчика, запускающего bootmgr
Редактирование BCD
bl0t_01_bcd.bat создает необходимые записи в файле bl0t_bcd
set bcdfile=./bl0t_bcd
bcdedit /store %bcdfile% /create {bootmgr}
bcdedit /store %bcdfile% /set {bootmgr} description "Windows Boot Manager"
bcdedit /store %bcdfile% /set {bootmgr} locale en-US
bcdedit /store %bcdfile% /set {bootmgr} nointegritychecks Yes
bcdedit /store %bcdfile% /create {ramdiskoptions}
bcdedit /store %bcdfile% /create /d "Boot from HDD" /application bootsector
bcdedit /store %bcdfile% /create /d "Grub4Dos Menu" /application bootsector
bcdedit /store %bcdfile% /create /d "Windows 7 Setup" /application osloader
pause
В bl0t_02_bcd.bat указать полученные GUID и он пропишет параметры для каждой записи
set bcdfile=./bl0t_bcd
set entry1={5a90d7c7-334a-11f1-85a6-5254001324ad}
set entry2={5aa2b96a-334a-11f1-85a6-5254001324ad}
set entry3={5a64bc46-334a-11f1-85a6-5254001324ad}
bcdedit /store %bcdfile% /set {bootmgr} default %entry1%
bcdedit /store %bcdfile% /set {default} device boot
bcdedit /store %bcdfile% /set {default} path \bl0t\boot\start_os.bin
bcdedit /store %bcdfile% /set {bootmgr} default %entry2%
bcdedit /store %bcdfile% /set {default} device boot
bcdedit /store %bcdfile% /set {default} path \bl0t\boot\grldr
bcdedit /store %bcdfile% /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store %bcdfile% /set {ramdiskoptions} ramdisksdipath \bl0t\boot\boot.sdi
bcdedit /store %bcdfile% /set {bootmgr} default %entry3%
bcdedit /store %bcdfile% /set {default} device ramdisk=[boot]\bl0t\7_boot_x64.wim,{ramdiskoptions}
bcdedit /store %bcdfile% /set {default} path \Windows\system32\boot\winload.exe
bcdedit /store %bcdfile% /set {default} osdevice ramdisk=[boot]\bl0t\7_boot_x64.wim,{ramdiskoptions}
bcdedit /store %bcdfile% /set {default} systemroot \Windows
bcdedit /store %bcdfile% /set {default} detecthal Yes
bcdedit /store %bcdfile% /set {default} winpe Yes
bcdedit /store %bcdfile% /set {default} nointegritychecks Yes
bcdedit /store %bcdfile% /set {bootmgr} default %entry1%
bcdedit /store %bcdfile% /set {bootmgr} displayorder %entry1% %entry2% %entry3%
pause
c:\admin\>bcdedit /store .\bl0t_bcd /enum all - вывод полной информации из хранилища ./bl0t_bcd
https://learn.microsoft.com/en-us/windows/deployment/configure-a-pxe-server-to-load-windows-pe
Linux-11.1 box 5.4.3-tinycore i686 Tue May 12 14:12:03 YEKT 2026
Правка 7_boot_x64.wim (сборка StartSetup_x64.exe заново с измененными скриптами при помощи утилиты Exe2Aut.exe)
Файлы Setup2.au3, Setup2.ini содержатся в 7_boot_x64.wim в открытом виде, достаточно извлечь их при помощи архиватора 7z, изменить содержимое и поместить измененные версии обратно в 7_boot_x64.wim
7_boot_x64.wim\1\Windows\Setup2.au3 изменить Func srcdrv()
7_boot_x64.wim\1\Windows\Setup2.ini изменить Path
А вот StartSetup_x64.exe представляет собой скрипт, упакованный при помощи AutoIt
Извлечь 7_boot_x64.wim\1\Windows\StartSetup_x64.exe
Распаковать при помощи exe2aut (см. autoit-v3.2.8.1\Extras\Exe2Aut\#_readme_#.txt)
Найти в скомпилированном файле (например, StartSetup_x64.exe в сборке SMBB) hex-значение 0xA3484BBE986C4AA9994C530A86D6487D и удалить (СКОПИРОВАТЬ???) все данные, начиная с него и до конца файла
Дописать в конец файла 32-битную заглушку (ИЛИ Дописать эти данные в конец файла 32-битной заглушки???) .\autoit-v3.2.8.1\Aut2Exe\AutoItSC.bin
Переименовать AutoItSC.bin в AutoItSC.exe и можно декомилировать
Либо родным Exe2Aut.exe, если версия скриптов не старше autoit-v3.2.5.1
Либо exe2aut-new.exe (это Exe2Aut.exe с сайта https://exe2aut.com/ (но на 2026-04-12 он тоже работает ТОЛЬКО с х32)
Изменить Func _tl()
Запаковать обратно при помощи Aut2Exe
Создание загрузочного ISO при помощи mkisofs
Файл isolinux.bin можно взять либо из установленного syslinux (/usr/local/share/syslinux), либо с любого рабочего загрузочного ISO-образа с isolinux (вместе с boot.cat), либо собрать из исходных текстов (см. здесь)
При этом, boot.cat даже не является обязательным: при сборке ISO программа создаст файл boot.catalog самостоятельно в корне файловой системы образа ISO
tc@box~$ mkisofs -o output.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -no-emul-boot -boot-load-size 4 -boot-info-table -J -l -V "Новый образ" /tmp/isowork/
К файлам isolinux необходимо указывать относительный путь (полный в данном случае /tmp/isowork/isolinux/isolinux.bin). Подробнее: ./syslinux-4.05/doc/isolinux.txt
vi ./syslinux-4.05/doc/isolinux.txt
Linux-5.4 box 5.4.3-tinycore i686 Mon Sep 28 08:43:03 YEKT 2026