// ==WindhawkMod== // @id winver-customizer // @name Winver Customizer // @description Modify winver without system mods // @version 1.0.0 // @author Cynosphere // @github https://github.com/cynosphere // @homepage https://c7.pm // @include * // ==/WindhawkMod== // ==WindhawkModReadme== /* # Winver Customizer Customize winver without system mods - Choose different layouts from different OS iterations - Replace the banner with whatever image you want. **All pixels set to #FFFFFF will become transparent!** */ // ==/WindhawkModReadme== // ==WindhawkModSettings== /* - banner: "" $name: Banner path $description: Must be a bitmap - layout: default $name: Layout $description: What OS layout to use $options: - default: System default - 2k: Windows 2000 - xpsp1: Windows XP (SP1 and earlier) - xpsp2: Windows XP (SP2 and later) - vista: Windows Vista */ // ==/WindhawkModSettings== #include #include #include // https://www.codeproject.com/articles/13330/using-dialog-templates-to-create-an-inputbox-in-c static unsigned char TEMPLATE_LAYOUT_2K[] = { 0x01,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc8,0x80,0x0c, 0x00,0x14,0x00,0x14,0x00,0x13,0x01,0x8c,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x62, 0x00,0x6f,0x00,0x75,0x00,0x74,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x00,0x00,0x08, 0x00,0x00,0x00,0x00,0x00,0x4d,0x00,0x53,0x00,0x20,0x00,0x53,0x00,0x68,0x00,0x65, 0x00,0x6c,0x00,0x6c,0x00,0x20,0x00,0x44,0x00,0x6c,0x00,0x67,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x50,0x15,0x00,0x07,0x00,0x12, 0x00,0x14,0x00,0x09,0x30,0x00,0x00,0xff,0xff,0x82,0x00,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x46, 0x00,0x07,0x00,0xa5,0x00,0x0a,0x00,0x00,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x46, 0x00,0x11,0x00,0x96,0x00,0x0a,0x00,0x0b,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46, 0x00,0x1c,0x00,0xcd,0x00,0x0a,0x00,0x0a,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46, 0x00,0x26,0x00,0x91,0x00,0x14,0x00,0x0d,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46, 0x00,0x39,0x00,0x91,0x00,0x0a,0x00,0x12,0x35,0x00,0x00,0x53,0x00,0x79,0x00,0x73, 0x00,0x4c,0x00,0x69,0x00,0x6e,0x00,0x6b,0x00,0x00,0x00,0x54,0x00,0x68,0x00,0x69, 0x00,0x73,0x00,0x20,0x00,0x70,0x00,0x72,0x00,0x6f,0x00,0x64,0x00,0x75,0x00,0x63, 0x00,0x74,0x00,0x20,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x6c,0x00,0x69,0x00,0x63, 0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65,0x00,0x64,0x00,0x20,0x00,0x74,0x00,0x6f, 0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x50,0x46,0x00,0x44,0x00,0x91,0x00,0x0a,0x00,0x07,0x35,0x00,0x00,0xff, 0xff,0x82,0x00,0x75,0x00,0x73,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x6e,0x00,0x61, 0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46,0x00,0x4e,0x00,0x91,0x00,0x0a,0x00,0x08, 0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x6f,0x00,0x72,0x00,0x67,0x00,0x20,0x00,0x6e, 0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x10,0x00,0x00,0x50,0x46,0x00,0x5a,0x00,0xc6,0x00,0x01,0x00,0x27, 0x33,0x00,0x00,0xff,0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46,0x00,0x5f,0x00,0xe6,0x00,0x0a,0x00,0x02, 0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x50,0x00,0x68,0x00,0x79,0x00,0x73,0x00,0x69, 0x00,0x63,0x00,0x61,0x00,0x6c,0x00,0x20,0x00,0x6d,0x00,0x65,0x00,0x6d,0x00,0x6f, 0x00,0x72,0x00,0x79,0x00,0x20,0x00,0x61,0x00,0x76,0x00,0x61,0x00,0x69,0x00,0x6c, 0x00,0x61,0x00,0x62,0x00,0x6c,0x00,0x65,0x00,0x20,0x00,0x74,0x00,0x6f,0x00,0x20, 0x00,0x57,0x00,0x69,0x00,0x6e,0x00,0x64,0x00,0x6f,0x00,0x77,0x00,0x73,0x00,0x3a, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x50,0xca,0x00,0x5f,0x00,0x35,0x00,0x0a,0x00,0x03,0x35,0x00,0x00,0xff, 0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x00,0x01,0x50,0xdc,0x00,0x79,0x00,0x32,0x00,0x0e,0x00,0x01,0x00,0x00,0x00,0xff, 0xff,0x80,0x00,0x4f,0x00,0x4b,0x00,0x00,0x00,0x00,0x00 }; static unsigned char TEMPLATE_LAYOUT_XPSP1[] = { 0x01,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc8,0x80,0x0c, 0x00,0x14,0x00,0x14,0x00,0x13,0x01,0x96,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x62, 0x00,0x6f,0x00,0x75,0x00,0x74,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x00,0x00,0x08, 0x00,0x00,0x00,0x00,0x00,0x4d,0x00,0x53,0x00,0x20,0x00,0x53,0x00,0x68,0x00,0x65, 0x00,0x6c,0x00,0x6c,0x00,0x20,0x00,0x44,0x00,0x6c,0x00,0x67,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x50,0x15,0x00,0x07,0x00,0x15, 0x00,0x14,0x00,0x09,0x30,0x00,0x00,0xff,0xff,0x82,0x00,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x46, 0x00,0x07,0x00,0xa5,0x00,0x0a,0x00,0x00,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x4d, 0x00,0x69,0x00,0x63,0x00,0x72,0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,0x66,0x00,0x74, 0x00,0x20,0x00,0xae,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x46,0x00,0x12,0x00,0xc8, 0x00,0x0a,0x00,0x0b,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46,0x00,0x1c,0x00,0xaf, 0x00,0x0a,0x00,0x0a,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x43,0x00,0x6f,0x00,0x70, 0x00,0x79,0x00,0x72,0x00,0x69,0x00,0x67,0x00,0x68,0x00,0x74,0x00,0x20,0x00,0xa9, 0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x20,0x00,0x4d,0x00,0x69,0x00,0x63,0x00,0x72, 0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,0x66,0x00,0x74,0x00,0x20,0x00,0x43,0x00,0x6f, 0x00,0x72,0x00,0x70,0x00,0x6f,0x00,0x72,0x00,0x61,0x00,0x74,0x00,0x69,0x00,0x6f, 0x00,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x50,0x46,0x00,0x26,0x00,0x91,0x00,0x14,0x00,0x0d,0x35,0x00,0x00,0xff, 0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x50,0x46,0x00,0x3a,0x00,0x91,0x00,0x14,0x00,0x12,0x35,0x00,0x00,0x53, 0x00,0x79,0x00,0x73,0x00,0x4c,0x00,0x69,0x00,0x6e,0x00,0x6b,0x00,0x00,0x00,0x54, 0x00,0x68,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x70,0x00,0x72,0x00,0x6f,0x00,0x64, 0x00,0x75,0x00,0x63,0x00,0x74,0x00,0x20,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x6c, 0x00,0x69,0x00,0x63,0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65,0x00,0x64,0x00,0x20, 0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x74,0x00,0x68, 0x00,0x65,0x00,0x20,0x00,0x74,0x00,0x65,0x00,0x72,0x00,0x6d,0x00,0x73,0x00,0x20, 0x00,0x6f,0x00,0x66,0x00,0x20,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x20,0x00,0x3c, 0x00,0x41,0x00,0x3e,0x00,0x45,0x00,0x6e,0x00,0x64,0x00,0x2d,0x00,0x55,0x00,0x73, 0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x4c,0x00,0x69,0x00,0x63,0x00,0x65,0x00,0x6e, 0x00,0x73,0x00,0x65,0x00,0x20,0x00,0x41,0x00,0x67,0x00,0x72,0x00,0x65,0x00,0x65, 0x00,0x6d,0x00,0x65,0x00,0x6e,0x00,0x74,0x00,0x3c,0x00,0x2f,0x00,0x41,0x00,0x3e, 0x00,0x20,0x00,0x74,0x00,0x6f,0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x50,0x00,0x4e,0x00,0x91, 0x00,0x0a,0x00,0x07,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x75,0x00,0x73,0x00,0x65, 0x00,0x72,0x00,0x20,0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x50, 0x00,0x57,0x00,0x91,0x00,0x0a,0x00,0x08,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x6f, 0x00,0x72,0x00,0x67,0x00,0x20,0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x50,0x46, 0x00,0x64,0x00,0xc7,0x00,0x01,0x00,0x27,0x33,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x46, 0x00,0x69,0x00,0x82,0x00,0x0a,0x00,0x02,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x50, 0x00,0x68,0x00,0x79,0x00,0x73,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x6c,0x00,0x20, 0x00,0x6d,0x00,0x65,0x00,0x6d,0x00,0x6f,0x00,0x72,0x00,0x79,0x00,0x20,0x00,0x61, 0x00,0x76,0x00,0x61,0x00,0x69,0x00,0x6c,0x00,0x61,0x00,0x62,0x00,0x6c,0x00,0x65, 0x00,0x20,0x00,0x74,0x00,0x6f,0x00,0x20,0x00,0x57,0x00,0x69,0x00,0x6e,0x00,0x64, 0x00,0x6f,0x00,0x77,0x00,0x73,0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0xca,0x00,0x69,0x00,0x35, 0x00,0x0a,0x00,0x03,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x50,0xdc,0x00,0x82,0x00,0x32, 0x00,0x0e,0x00,0x01,0x00,0x00,0x00,0xff,0xff,0x80,0x00,0x4f,0x00,0x4b,0x00,0x00, 0x00,0x00,0x00 }; static unsigned char TEMPLATE_LAYOUT_XPSP2[] = { 0x01,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc8,0x80,0x0c, 0x00,0x14,0x00,0x14,0x00,0x13,0x01,0x97,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x62, 0x00,0x6f,0x00,0x75,0x00,0x74,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x00,0x00,0x08, 0x00,0x00,0x00,0x00,0x00,0x4d,0x00,0x53,0x00,0x20,0x00,0x53,0x00,0x68,0x00,0x65, 0x00,0x6c,0x00,0x6c,0x00,0x20,0x00,0x44,0x00,0x6c,0x00,0x67,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x50,0x07,0x00,0x07,0x00,0x15, 0x00,0x14,0x00,0x09,0x30,0x00,0x00,0xff,0xff,0x82,0x00,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x23, 0x00,0x07,0x00,0xc8,0x00,0x0a,0x00,0x00,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x24, 0x00,0x12,0x00,0xeb,0x00,0x0a,0x00,0x0b,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23, 0x00,0x1c,0x00,0xd2,0x00,0x0a,0x00,0x0a,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23, 0x00,0x26,0x00,0xb4,0x00,0x14,0x00,0x0d,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x23, 0x00,0x3a,0x00,0xb4,0x00,0x14,0x00,0x12,0x35,0x00,0x00,0x53,0x00,0x79,0x00,0x73, 0x00,0x4c,0x00,0x69,0x00,0x6e,0x00,0x6b,0x00,0x00,0x00,0x54,0x00,0x68,0x00,0x69, 0x00,0x73,0x00,0x20,0x00,0x70,0x00,0x72,0x00,0x6f,0x00,0x64,0x00,0x75,0x00,0x63, 0x00,0x74,0x00,0x20,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x6c,0x00,0x69,0x00,0x63, 0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65,0x00,0x64,0x00,0x20,0x00,0x75,0x00,0x6e, 0x00,0x64,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x20, 0x00,0x74,0x00,0x65,0x00,0x72,0x00,0x6d,0x00,0x73,0x00,0x20,0x00,0x6f,0x00,0x66, 0x00,0x20,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x20,0x00,0x3c,0x00,0x41,0x00,0x3e, 0x00,0x45,0x00,0x6e,0x00,0x64,0x00,0x2d,0x00,0x55,0x00,0x73,0x00,0x65,0x00,0x72, 0x00,0x20,0x00,0x4c,0x00,0x69,0x00,0x63,0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65, 0x00,0x20,0x00,0x41,0x00,0x67,0x00,0x72,0x00,0x65,0x00,0x65,0x00,0x6d,0x00,0x65, 0x00,0x6e,0x00,0x74,0x00,0x3c,0x00,0x2f,0x00,0x41,0x00,0x3e,0x00,0x20,0x00,0x74, 0x00,0x6f,0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x2d,0x00,0x4e,0x00,0xb4,0x00,0x0a,0x00,0x07, 0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x75,0x00,0x73,0x00,0x65,0x00,0x72,0x00,0x20, 0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x2d,0x00,0x57,0x00,0xb4, 0x00,0x0a,0x00,0x08,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x6f,0x00,0x72,0x00,0x67, 0x00,0x20,0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x50,0x23,0x00,0x64,0x00,0xea, 0x00,0x01,0x00,0x27,0x33,0x00,0x00,0xff,0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23,0x00,0x69,0x00,0x82, 0x00,0x0a,0x00,0x02,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x50,0x00,0x68,0x00,0x79, 0x00,0x73,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x6c,0x00,0x20,0x00,0x6d,0x00,0x65, 0x00,0x6d,0x00,0x6f,0x00,0x72,0x00,0x79,0x00,0x20,0x00,0x61,0x00,0x76,0x00,0x61, 0x00,0x69,0x00,0x6c,0x00,0x61,0x00,0x62,0x00,0x6c,0x00,0x65,0x00,0x20,0x00,0x74, 0x00,0x6f,0x00,0x20,0x00,0x57,0x00,0x69,0x00,0x6e,0x00,0x64,0x00,0x6f,0x00,0x77, 0x00,0x73,0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x00,0x50,0xa7,0x00,0x69,0x00,0x58,0x00,0x0a,0x00,0x03, 0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x01,0x50,0xdc,0x00,0x82,0x00,0x32,0x00,0x0e,0x00,0x01, 0x00,0x00,0x00,0xff,0xff,0x80,0x00,0x4f,0x00,0x4b,0x00,0x00,0x00,0x00,0x00 }; static unsigned char TEMPLATE_LAYOUT_VISTA[] = { 0x01,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0xc8,0x80,0x0c, 0x00,0x14,0x00,0x14,0x00,0x13,0x01,0xbf,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x62, 0x00,0x6f,0x00,0x75,0x00,0x74,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x00,0x00,0x08, 0x00,0x00,0x00,0x00,0x00,0x4d,0x00,0x53,0x00,0x20,0x00,0x53,0x00,0x68,0x00,0x65, 0x00,0x6c,0x00,0x6c,0x00,0x20,0x00,0x44,0x00,0x6c,0x00,0x67,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x50,0x07,0x00,0x07,0x00,0x15, 0x00,0x14,0x00,0x09,0x30,0x00,0x00,0xff,0xff,0x82,0x00,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x23, 0x00,0x07,0x00,0xc8,0x00,0x0a,0x00,0x00,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00,0x50,0x23, 0x00,0x12,0x00,0xeb,0x00,0x0a,0x00,0x0b,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23, 0x00,0x1c,0x00,0xd2,0x00,0x0a,0x00,0x0a,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23, 0x00,0x26,0x00,0xd2,0x00,0x28,0x00,0x13,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x54, 0x00,0x68,0x00,0x65,0x00,0x20,0x00,0x25,0x00,0x57,0x00,0x49,0x00,0x4e,0x00,0x44, 0x00,0x4f,0x00,0x57,0x00,0x53,0x00,0x5f,0x00,0x4c,0x00,0x4f,0x00,0x4e,0x00,0x47, 0x00,0x25,0x00,0x20,0x00,0x6f,0x00,0x70,0x00,0x65,0x00,0x72,0x00,0x61,0x00,0x74, 0x00,0x69,0x00,0x6e,0x00,0x67,0x00,0x20,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74, 0x00,0x65,0x00,0x6d,0x00,0x20,0x00,0x61,0x00,0x6e,0x00,0x64,0x00,0x20,0x00,0x69, 0x00,0x74,0x00,0x73,0x00,0x20,0x00,0x75,0x00,0x73,0x00,0x65,0x00,0x72,0x00,0x20, 0x00,0x69,0x00,0x6e,0x00,0x74,0x00,0x65,0x00,0x72,0x00,0x66,0x00,0x61,0x00,0x63, 0x00,0x65,0x00,0x20,0x00,0x61,0x00,0x72,0x00,0x65,0x00,0x20,0x00,0x70,0x00,0x72, 0x00,0x6f,0x00,0x74,0x00,0x65,0x00,0x63,0x00,0x74,0x00,0x65,0x00,0x64,0x00,0x20, 0x00,0x62,0x00,0x79,0x00,0x20,0x00,0x74,0x00,0x72,0x00,0x61,0x00,0x64,0x00,0x65, 0x00,0x6d,0x00,0x61,0x00,0x72,0x00,0x6b,0x00,0x20,0x00,0x61,0x00,0x6e,0x00,0x64, 0x00,0x20,0x00,0x6f,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x70, 0x00,0x65,0x00,0x6e,0x00,0x64,0x00,0x69,0x00,0x6e,0x00,0x67,0x00,0x20,0x00,0x6f, 0x00,0x72,0x00,0x20,0x00,0x65,0x00,0x78,0x00,0x69,0x00,0x73,0x00,0x74,0x00,0x69, 0x00,0x6e,0x00,0x67,0x00,0x20,0x00,0x69,0x00,0x6e,0x00,0x74,0x00,0x65,0x00,0x6c, 0x00,0x6c,0x00,0x65,0x00,0x63,0x00,0x74,0x00,0x75,0x00,0x61,0x00,0x6c,0x00,0x20, 0x00,0x70,0x00,0x72,0x00,0x6f,0x00,0x70,0x00,0x65,0x00,0x72,0x00,0x74,0x00,0x79, 0x00,0x20,0x00,0x72,0x00,0x69,0x00,0x67,0x00,0x68,0x00,0x74,0x00,0x73,0x00,0x20, 0x00,0x69,0x00,0x6e,0x00,0x20,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x20,0x00,0x55, 0x00,0x6e,0x00,0x69,0x00,0x74,0x00,0x65,0x00,0x64,0x00,0x20,0x00,0x53,0x00,0x74, 0x00,0x61,0x00,0x74,0x00,0x65,0x00,0x73,0x00,0x20,0x00,0x61,0x00,0x6e,0x00,0x64, 0x00,0x20,0x00,0x6f,0x00,0x74,0x00,0x68,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x63, 0x00,0x6f,0x00,0x75,0x00,0x6e,0x00,0x74,0x00,0x72,0x00,0x69,0x00,0x65,0x00,0x73, 0x00,0x2e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x50,0x23,0x00,0x4e,0x00,0xb4,0x00,0x14,0x00,0x0d,0x35,0x00,0x00,0xff, 0xff,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x50,0x23,0x00,0x62,0x00,0xb4,0x00,0x14,0x00,0x12,0x35,0x00,0x00,0x53, 0x00,0x79,0x00,0x73,0x00,0x4c,0x00,0x69,0x00,0x6e,0x00,0x6b,0x00,0x00,0x00,0x54, 0x00,0x68,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x70,0x00,0x72,0x00,0x6f,0x00,0x64, 0x00,0x75,0x00,0x63,0x00,0x74,0x00,0x20,0x00,0x69,0x00,0x73,0x00,0x20,0x00,0x6c, 0x00,0x69,0x00,0x63,0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65,0x00,0x64,0x00,0x20, 0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x65,0x00,0x72,0x00,0x20,0x00,0x74,0x00,0x68, 0x00,0x65,0x00,0x20,0x00,0x3c,0x00,0x41,0x00,0x3e,0x00,0x4d,0x00,0x69,0x00,0x63, 0x00,0x72,0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,0x66,0x00,0x74,0x00,0x20,0x00,0x53, 0x00,0x6f,0x00,0x66,0x00,0x74,0x00,0x77,0x00,0x61,0x00,0x72,0x00,0x65,0x00,0x20, 0x00,0x4c,0x00,0x69,0x00,0x63,0x00,0x65,0x00,0x6e,0x00,0x73,0x00,0x65,0x00,0x20, 0x00,0x54,0x00,0x65,0x00,0x72,0x00,0x6d,0x00,0x73,0x00,0x3c,0x00,0x2f,0x00,0x41, 0x00,0x3e,0x00,0x20,0x00,0x74,0x00,0x6f,0x00,0x3a,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x2d,0x00,0x76,0x00,0xb4, 0x00,0x0a,0x00,0x07,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x75,0x00,0x73,0x00,0x65, 0x00,0x72,0x00,0x20,0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x2d, 0x00,0x7f,0x00,0xb4,0x00,0x0a,0x00,0x08,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x6f, 0x00,0x72,0x00,0x67,0x00,0x20,0x00,0x6e,0x00,0x61,0x00,0x6d,0x00,0x65,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x50,0x23, 0x00,0x8c,0x00,0xea,0x00,0x01,0x00,0x27,0x33,0x00,0x00,0xff,0xff,0x82,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x50,0x23, 0x00,0x91,0x00,0xe6,0x00,0x0a,0x00,0x03,0x35,0x00,0x00,0xff,0xff,0x82,0x00,0x50, 0x00,0x68,0x00,0x79,0x00,0x73,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x6c,0x00,0x20, 0x00,0x6d,0x00,0x65,0x00,0x6d,0x00,0x6f,0x00,0x72,0x00,0x79,0x00,0x20,0x00,0x61, 0x00,0x76,0x00,0x61,0x00,0x69,0x00,0x6c,0x00,0x61,0x00,0x62,0x00,0x6c,0x00,0x65, 0x00,0x20,0x00,0x74,0x00,0x6f,0x00,0x20,0x00,0x25,0x00,0x73,0x00,0x3a,0x00,0x20, 0x00,0x25,0x00,0x73,0x00,0x20,0x00,0x4b,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x50,0xdc,0x00,0xaa,0x00,0x32, 0x00,0x0e,0x00,0x01,0x00,0x00,0x00,0xff,0xff,0x80,0x00,0x4f,0x00,0x4b,0x00,0x00, 0x00,0x00,0x00 }; typedef enum _LAYOUTTYPE { LAYOUT_DEFAULT = 0, LAYOUT_2K, LAYOUT_XPSP1, LAYOUT_XPSP2, LAYOUT_VISTA, } LAYOUTTYPE; struct { wchar_t *banner; LAYOUTTYPE layout; } settings; typedef HANDLE (CALLBACK *BrandingLoadImage_t)(wchar_t* a1, WORD* a2, UINT a3, int a4, int a5, UINT a6); BrandingLoadImage_t BrandingLoadImage_orig; HANDLE CALLBACK BrandingLoadImage_hook(wchar_t* a1, WORD* a2, UINT a3, int a4, int a5, UINT a6) { if (wcscmp(a1, L"Basebrd") == 0 && a2 == (WORD*)121) { if (wcscmp(settings.banner, L"") != 0) { HBITMAP hBanner = (HBITMAP)LoadImage(NULL, settings.banner, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if (hBanner) { return hBanner; } else { return BrandingLoadImage_orig(a1, a2, a3, a4, a5, a6); } } else { return BrandingLoadImage_orig(a1, a2, a3, a4, a5, a6); } } return BrandingLoadImage_orig(a1, a2, a3, a4, a5, a6); } typedef INT_PTR (CALLBACK *SHFusionDialogBoxParam_t)(HINSTANCE hInstance, LPCWSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam); SHFusionDialogBoxParam_t SHFusionDialogBoxParam_orig; INT_PTR CALLBACK SHFusionDialogBoxParam_hook(HINSTANCE hInstance, LPCWSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam) { if (lpTemplateName == (LPCWSTR)0x3810) { switch (settings.layout) { case LAYOUT_2K: return DialogBoxIndirectParamW(hInstance, (LPCDLGTEMPLATEW) TEMPLATE_LAYOUT_2K, hWndParent, lpDialogFunc, dwInitParam); case LAYOUT_XPSP1: return DialogBoxIndirectParamW(hInstance, (LPCDLGTEMPLATEW) TEMPLATE_LAYOUT_XPSP1, hWndParent, lpDialogFunc, dwInitParam); case LAYOUT_XPSP2: return DialogBoxIndirectParamW(hInstance, (LPCDLGTEMPLATEW) TEMPLATE_LAYOUT_XPSP2, hWndParent, lpDialogFunc, dwInitParam); case LAYOUT_VISTA: return DialogBoxIndirectParamW(hInstance, (LPCDLGTEMPLATEW) TEMPLATE_LAYOUT_VISTA, hWndParent, lpDialogFunc, dwInitParam); default: return SHFusionDialogBoxParam_orig(hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam); } } else { return SHFusionDialogBoxParam_orig(hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam); } return SHFusionDialogBoxParam_orig(hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam); } void LoadSettings(void) { settings.banner = (wchar_t *)Wh_GetStringSetting(L"banner"); LPCWSTR szLayout = Wh_GetStringSetting(L"layout"); if (wcscmp(szLayout, L"2k") == 0) { settings.layout = LAYOUT_2K; } else if (wcscmp(szLayout, L"xpsp1") == 0) { settings.layout = LAYOUT_XPSP1; } else if (wcscmp(szLayout, L"xpsp2") == 0) { settings.layout = LAYOUT_XPSP2; } else if (wcscmp(szLayout, L"vista") == 0) { settings.layout = LAYOUT_VISTA; } else { settings.layout = LAYOUT_DEFAULT; } Wh_FreeStringSetting(szLayout); } BOOL Wh_ModInit(void) { LoadSettings(); HMODULE hWinbrand = LoadLibraryW(L"winbrand.dll"); if (!hWinbrand) { Wh_Log(L"Failed to load winbrand.dll"); return FALSE; } WindhawkUtils::SYMBOL_HOOK bannerHook = { {L"BrandingLoadImage"}, (void **)&BrandingLoadImage_orig, (void *)BrandingLoadImage_hook, false }; if (!WindhawkUtils::HookSymbols(hWinbrand, &bannerHook, 1)) { Wh_Log(L"Failed to hook BrandingLoadImage"); return FALSE; } HMODULE hShell32 = LoadLibraryW(L"shell32.dll"); if (!hShell32) { Wh_Log(L"Failed to load shell32.dll"); return FALSE; } WindhawkUtils::SYMBOL_HOOK layoutHook = { {L"SHFusionDialogBoxParam"}, (void **)&SHFusionDialogBoxParam_orig, (void *)SHFusionDialogBoxParam_hook, false }; if (!WindhawkUtils::HookSymbols(hShell32, &layoutHook, 1)) { Wh_Log(L"Failed to hook SHFusionDialogBoxParam"); return FALSE; } return TRUE; } void Wh_ModSettingsChanged(void) { LoadSettings(); }