Как раскрасить notepad?
D' Normalization расписал все правильно, только в действительности все несколько сложнее. Функции создания окна (меню и все элементы управления - тоже окна; windows же) нигде не принимают цвет через параметр. По умолчанию окна отрисовываются в цветах системной "темы". Чтобы переопределить цвета, надо перехватывать WndProc соответствующего окна, в нем на событие WM_PAINT устанавливать цвет Pen и Brush, пересылать сообщение оригинальному обработчику и надеяться на то что он сам не переопределяет Pen и Brush на каждый вызов WM_PAINT.
Придется дописывать много кода, компилировать его так что-бы в нем или совсем не было абсолютных адресов (относительные short jumps) или все абсолютные адреса точно попадали в ту область, в которую предполагается вставка. Тут уже без ассемблера не обойтись (сколько же на Тостере за последнее время вопросов: "Где ассемблер незаменим?").
Далее идет внедрение кода, как у вирусов. На эту тему можно много литературы найти. Если коротко, то есть два варианта: 1) дописать свой код в "хвост" секции кода, если поместится;  2) создать еще одну секцию кода в конце файла, это вариант открывает больше возможностей, но большинство антивирусов будут ругаться на такой exe-шник.
Потом найти точку для патча, вырезать оттуда часть кода (например, вызов api-функции с подготовкой аргументов), перенести в свой код, а в той точке пропатчить что-то типа call our_code_block \ nop \ nop \ nop ....
В общем задачка очень серьезная и с наскока такое не решается.
А в чем проблема?
Инструментарий:
- MSDN
- OllyDbg
- любой дизассемблер
Действия:
- Найти на MSDN название функции которая отвечает за создание окна\установку его параметров
- Открыть OllyDbg и найти в нем нужное место в программе.
- Пропатчить на "горячую" и посмотреть на результат
- Если прошлый пункт сработал, найти в дизассемблерре нужное место и записать нужны адрес.
- Написать патчер на любом известном языке, который будет в по нужном адресу проставлять нужное значение.