Бета 1.4.0.1156 доступна по ссылке
http://blackstrip.ru/paintcad.exe
Интерфейс:
- ускорено пропадание стартового окна с названием программы с экрана
- функция "Случайная позиция курсора (Ctrl+R)" переименована в "Случайная позиция курсора (в выделении) (Ctrl+R)" и перенесена из меню "Команды" в новое меню "ГСЧ"
Новые функции:
- открытие файлов в 24bpp: добавлен двоичный режим открытия ???-файлов с загрузкой байтов как пикселей (1, 3 или 4 байта на точку)
- в главное меню добавлено новое меню "ГСЧ" для функций рисования и управления редактором с использованием генератора случайных чисел
- в меню "Утилиты"-"Обработка BMP/JPG кадров"-"Пакетная обработка" добавлен вариант обработки "ГСЧ", применяющий к каждому кадру "Случайное рисование" с текущими настройками ГСЧ
Исправления ошибок:
- убрана привязка exe-файла paintcad к directx-библиотеке d3d8.dll (планировалось ее использование для 3D редактора Hippo)
Итак, первое нововведение -
открытие двоичных файлов как картинок в 24-битном режиме. Можно искать несжатые картинки в файлах ресурсов старых игр и внутри любых файлов.
1) Жмем Ctrl+O и выбираем новый пункт открытия в двоичном режиме.
2) выбираем двоичный файл. Например, в конце многих exe и dll бывают ресурсы в виде иконок. Покажу на их примере. Открываем виндовский notepad.exe, у него есть иконка блокнота в конце.
3) выбираем цветность. У EXE-файлов иконки лежат внутри в виде нескольких картинок друг за другом разного размера и разной цветности (кто разными прогами типа Restorator их доставал, тот видел это), но у современных EXE среди них должны быть и картинки 4-байта на точку (R,G,B,альфа). Выбираем 4 байта на точку.
4) выбираем смещение. Если точки в файле записаны как R,G,B,a,R,G,B,a,R,G,B,a, то если паинткаду повезет и байт R попадется первым - то цвета будут восстановлены корректно. Если же нет, можно указать дополнительное смещение размером 1, 2 или 3 байта, от этого будет зависеть какие цвета будут считаны как пиксель
R,G,B,a,R,G,B,a,R,G,B,a
или
R,
G,B,a,R,G,B,a,R,G,B,a
или
R,G,
B,a,R,G,B,a,R,G,B,a
или
R,G,B,
a,R,G,B,a,R,G,B,a
Также можно указать большие смещения, чтобы прочитать файл не с начала, а где нибудь в конце.
Пока вводим смещение 0 байт. Читаем файл с самого начала.
5) Видим файл в виде набора точек. Он автоматически размазывается по картинке текущего размера. Смотрим повторяющиеся строки пикселей. В нижних строках пикселей они видны. Можно померить инструментом "линия" ширину такой одной строки - это и есть ширина картинки.
6) Но в случае с иконками я знаю что гарантировано там есть, скорее всего, 32х32 пикселя значок. Теперь создадим новый файл размером 32 пикселя по ширине и побольше, например 10000 пикселей, по высоте. И снова загрузим notepad.exe, размазав его по нашей 32х10000 пикселей картинке в виде "R,G,B,x" 4 байта на точку.
Вот она иконка. Но т.к. порядок цветов в этой иконке изменен - она не синяя, а желтая. Вызываем Эффекты - Доп.Эффекты - Обмен каналов и меняем R на B, а B на R. И она станет синяя, как у блокнота и должно быть.
Более точным подбором смещения при загрузке файла можно подобрать сдвиги строк картинки так, чтобы она точно вписывалась в наши 32 пикселя без смещения.
Например, в другой библиотеке shell32.dll с иконками в конце - можно увидеть иконки 48х48 пикселей (тоже каналы надо поменять R на B, а B на R обменом каналов как описано выше и потом еще картинку отразить сверху-вниз).
Таким образом, можно поискать несжатые картинки в любых двоичных файлах игр и программ.
Также можно использовать загрузку в виде 1 байта на точку (байт 0 превращается в RGB=0;0;0 пиксель, байт 255 превращается в RGB=255;255;255 пиксель, промежуточные значения 0-255 - в соответствующие серые оттенки) и получать необычные картинки, как будто в видеобуфер записали код exe-файла и его выбросило на экран. Вот, например, explorer.exe со смещения 2 миллиона байт на картинке 640х480 пикселей.
Кто нибудь увидит в такой картинке дом с окошками и речку перед ним, например) Можно даже почерпнуть вдохновение и идею для рисования своей картинки после осмотра таких двоичных файлов в виде графики.