| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- 파일관리자
- 분석 도구
- 레시피
- 백신
- v3
- 한글 2022
- 노령연금
- 한글화
- 오토잇
- 티스토리챌린지
- 디스크샷
- Directory Opus
- 한글 패치
- 오블완
- 이녁하늘
- Soluling
- 7z
- 국민연금
- 탐색기
- 파솔로 2022
- 여행
- 개인연금
- 건강
- 지역화
- 이녁 하늘
- 파일 탐색기
- 안다르
- ANDAR
- 한글패치
- 반디집
- Today
- Total
이녁 하늘 아래
WIM 1회 부팅 도구 제작 본문
WIM 1회 부팅 도구 제작
WIM 1회 부팅 도구(1BootBCD)는 Windows 재부팅 시 지정한 WIM이나 VHD/VHDX 이미지를 단 1회만 임시로 부팅시킨 뒤, 다음 재부팅 때 자동으로 원래 OS로 돌아오도록 BCD(부팅 구성 데이터)를 제어하는 유틸리티입니다.
주요 특징 및 핵심 기능
- 안전한 1회성 부팅 (/bootsequence): BCD 부팅 메뉴에 항목을 영구 등록하지 않고, 다음 1회 재부팅에만 해당 이미지를 로드하므로 기존 부팅 환경을 더럽히지 않습니다.
- WIM 및 VHD/VHDX 완벽 지원: RAMDisk 기반의 WinPE(.wim) 부팅에 필요한 boot.sdi 자동 추출/연결 기능과 가상 하드디스크(.vhd/.vhdx) 직접 부팅을 모두 지원합니다.
- 트랜잭션 기반 안정성 & 자동 롤백: BCD 객체 생성 중 에러가 발생하거나 최종 검증에 실패하면, 작업 전 상태로 자동 롤백되어 BCD 손상으로 인한 부팅 불능 위험을 차단합니다.
- 펌웨어 자동 감지: UEFI(winload.efi) 및 Legacy BIOS(winload.exe) 환경을 자동으로 판별하여 적절한 부트 로더 경로를 구성합니다.
- 탐색기 우클릭(컨텍스트) 메뉴 지원: 인자 없이 실행 시 .wim, .vhd 파일 우클릭 메뉴에 "1회성 부팅" 항목을 자동으로 등록하거나 삭제할 수 있습니다.
동작 프로세스
- 대상 및 환경 검증: 이미지 파일 존재 여부, 경로 형식, 관리자 권한 및 WIM 부팅용 필수 파일(boot.sdi) 유효성을 검증합니다.
- 기존 BCD 상태 백업: 현재 설정된 BootSequence 상태와 이전 1BootBCD 잔여 항목을 백업 및 수집합니다.
- BCD 객체 생성:
- WIM: RAMDisk 장치 생성 및 boot.sdi 연결 $\rightarrow$ OS Loader 생성 $\rightarrow$ winpe yes 속성 설정
- VHD: VHD 장치 생성 $\rightarrow$ OS Loader 연결 $\rightarrow$ inherit 및 nx 속성 설정
- 1회성 부팅 지정: 생성된 Loader GUID를 BootManager의 /bootsequence 항목으로 지정합니다.
- 최종 검증 및 재부팅: BCD에 값이 정확히 반영되었는지 검증을 거친 후 시스템을 즉시 재부팅합니다.
주요 활용 분야
| 활용 목적 | 설명 |
| 시스템 복구/백업 | 복구용 PE(.wim)로 1회 진입하여 OS 백업/복구 작업 후 원래 OS로 자동 복귀 |
| OS 설치 및 테스트 | 가상 하드디스크(.vhd)에 설치된 타 OS를 멀티부팅 메뉴 추가 없이 임시 진입 |
| 원격 유지보수 | 원격 접속 환경에서 부팅 메뉴 선택 화면 없이 1회성 PE 부팅 후 자동 작업 수행 |

준비물 :
- 위 소스를 RC 소스로 변환 사용
Initialize
│
├─ 관리자 권한 확인
│
├─ WIM/VHD 경로 검증
│
├─ 내장 boot.sdi 추출
│ │
│ ├─ 실패 → 종료
│ └─ 성공
│
├─ 기존 1회BootBCD 확인
│
├─ 새 BCD 객체 생성
│ │
│ ├─ 실패 → 새 객체 삭제
│ └─ 성공
│
├─ ramdiskoptions 구성
│
├─ boot.sdi 연결
│
├─ WIM 연결
│
├─ 모든 BCD 설정 검증
│
├─ BootSequence 설정
│ │
│ ├─ 실패 → 새 BCD 전체 롤백
│ └─ 성공
│
└─ 재부팅
위의 구조로 스크립트 구성됨.
<< 최종적으로 >>
새 항목 생성
↓
boot.sdi 확인
↓
WIM 확인
↓
BCD 모든 옵션 확인
↓
BootSequence 확인
↓
성공
↓
기존 1회BootBCD 삭제
↓
재부팅
<< 설명 >>
새로운 WIM 부팅 항목 생성 중 오류가 발생해도 기존 부팅 설정을 최대한 보존할 수 있으며, (1BootBCD_x64.pb 기준)
boot.sdi를 EXE에 RCDATA로 내장하고, 실행 시 자동 추출 → BCD 연결 → 실패 시 삭제/롤백까지 포함됨.
첨부 파일 :
- 64용
- 제작 언어 :
- 프로세스 개선(2026.08.19)
[1] InitializeApplication()
└─ 환경변수(WINDIR) 취득, bcdedit.exe 존재 여부 확인 및 언어 감지
[2] Main() - 인자(Parameter) 분석
├─ 인자 0개 : 레지스트리 컨텍스트 메뉴(우클릭) 등록/해제 (ToggleContextMenu)
├─ -restore : 기존 1BootBCD 관련 BCD 객체 삭제 정리 (Delete1BootBCD)
└─ 파일 경로 : 절대경로, 확장자(.wim, .vhd, .vhdx), WinPE X: 드라이브 제한 검증
[3] boot.sdi 추출 및 검증
└─ 대상 경로에 boot.sdi 추출 (ExtractEmbeddedBootSDI) -> 매직 헤더($SDI0001) 검증 (VerifyBootSDI)
[4] Build1BootBCD() - BCD 트랜잭션 빌드
├─ ① Collect1BootBCD() : 기존 1BootBCD 객체 목록 수집
├─ ② CaptureBootSequence() : 현재 부팅 시퀀스 상태 백업
├─ ③ WOW64 리디렉션 비활성화
├─ ④ BCD 객체 생성 (WIM인 경우 RAMDisk 장치 -> OS Loader 생성 / VHD인 경우 OS Loader 직접 생성)
├─ ⑤ BCD 속성 설정 (osdevice, device, path, winpe/nx, detecthal 등)
├─ ⑥ bcdedit /bootsequence 설정 (영구 메뉴 변경인 displayorder 대신 1회성 적용)
├─ ⑦ VerifyCreatedBcd() : BCD 적용 상태 최종 검증 (실패 시 즉시 RollbackNewBcd 및 RestoreBootSequence)
└─ ⑧ 구형 1BootBCD 잔재 정리 (DeleteBcdObject)
[5] RebootSystem()
└─ 일반 윈도우(shutdown.exe) 또는 WinPE(wpeutil.exe reboot)를 통한 시동 재부팅
'Autoit3 및 PureBASIC' 카테고리의 다른 글
| Snapshot Native System Restore 도구 개발일지 (0) | 2026.08.15 |
|---|---|
| Snapshot SysRestorer 프로그램의 주요 특징 및 관련 정보 (0) | 2026.08.14 |
| 오토잇3 / 스냅샾 런처 2부 (0) | 2026.08.11 |
| 오토잇3 / Snapshot 실행기 (0) | 2026.08.11 |
| 오토잇 Deobfuscator 도구 (0) | 2026.08.11 |
