bootc_internal_utils/
uki.rs1pub fn create_minimal_pe() -> Vec<u8> {
3 let mut pe = Vec::new();
4 let section_data_offset = 0x200u32; let section_data = b"quiet splash"; pe.extend_from_slice(b"MZ"); pe.extend_from_slice(&[0u8; 58]); pe.extend_from_slice(&0x80u32.to_le_bytes()); pe.resize(0x80, 0);
14
15 pe.extend_from_slice(b"PE\0\0");
17
18 pe.extend_from_slice(&0x8664u16.to_le_bytes()); pe.extend_from_slice(&1u16.to_le_bytes()); pe.extend_from_slice(&0u32.to_le_bytes()); pe.extend_from_slice(&0u32.to_le_bytes()); pe.extend_from_slice(&0u32.to_le_bytes()); pe.extend_from_slice(&0xF0u16.to_le_bytes()); pe.extend_from_slice(&0x2022u16.to_le_bytes()); pe.extend_from_slice(&0x020Bu16.to_le_bytes()); pe.extend_from_slice(&[0u8; 0xF0 - 2]); let mut section_header = [0u8; 40];
33 section_header[..8].copy_from_slice(b".cmdline"); section_header[8..12].copy_from_slice(&(section_data.len() as u32).to_le_bytes()); section_header[12..16].copy_from_slice(&0x1000u32.to_le_bytes()); section_header[16..20].copy_from_slice(&(section_data.len() as u32).to_le_bytes()); section_header[20..24].copy_from_slice(§ion_data_offset.to_le_bytes()); section_header[36..40].copy_from_slice(&0x40000040u32.to_le_bytes()); pe.extend_from_slice(§ion_header);
40
41 pe.resize(section_data_offset as usize, 0);
43
44 pe.extend_from_slice(section_data);
46
47 pe
48}