eddyx
@eddyx

Как раскрасить notepad?

Всем привет! Поделитесь своими рассуждениями на тему tutorial-задачки: как сделать шрифт старого-доброго блокнота (notepad.exe), к примеру, ... красным, или фон - не белым, а зелёным. Не менее интересна последовательность предлагаемых действий реверсинга и инструментарий. Буду признателен любым комментариям.
  • Вопрос задан
  • 692 просмотра
Решения вопроса 1
@nirvimel
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 ....
В общем задачка очень серьезная и с наскока такое не решается.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Denormalization
@Denormalization
А в чем проблема?
Инструментарий:
- MSDN
- OllyDbg
- любой дизассемблер

Действия:
- Найти на MSDN название функции которая отвечает за создание окна\установку его параметров
- Открыть OllyDbg и найти в нем нужное место в программе.
- Пропатчить на "горячую" и посмотреть на результат
- Если прошлый пункт сработал, найти в дизассемблерре нужное место и записать нужны адрес.
- Написать патчер на любом известном языке, который будет в по нужном адресу проставлять нужное значение.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Можно сделать 3-мя способами:
1. Патч (или офф-лайн дебаг):
1.1 Resource Hacker: angusj.com/resourcehacker
1.2 PE Explorer: www.heaventools.com/overview.htm
1.3 И старый добрый Restorator: www.bome.com/products/restorator/whatsnew

2. "На-лету": https://msdn.microsoft.com/ru-ru/library/windows/d... , отослав сообщение окну чтобы поменять свойства.

3. Дизассемблирование и сложнее в разы...
3.1 www.thefreecountry.com/programming/disassemblers.shtml
3.2 www.smidgeonsoft.prohosting.com/pebrowse-pro-inter...
PEBrowseDbg64ScreenShot6.jpg(PEBrowseDbg64ScreenShot)
Всё зависит от конкретной задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы