2026-09-28

Структура 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

https://losst.pro/redaktirovanie-obrazov-v-linux

Linux-5.4 box 5.4.3-tinycore i686 Mon Sep 28 08:43:03 YEKT 2026