392 lines
23 KiB
C++
392 lines
23 KiB
C++
// ==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 <windhawk_api.h>
|
|
#include <windhawk_utils.h>
|
|
#include <winnt.h>
|
|
|
|
// 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();
|
|
}
|