Создание моего собственного графического типа файла / расширения
Когда я устанавливаю игры на свой компьютер для профессионалов и любителей, я обнаруживаю, что такие ресурсы, как изображения, имеют странные расширения, поэтому я не могу их открыть.
Поскольку я не могу найти эти расширения в Google, я подумал, что это был метод защиты вашего произведения искусства, поэтому его нельзя так легко украсть.
У меня есть несколько файлов JPEG, PNG и растровых изображений, с которыми я хотел бы сделать это, чтобы люди не могли так легко скопировать их, когда я распространю свою игру.
Я использую C++ и DirectX, если это что-то меняет.
Кто-нибудь знает, как это делается? Я знаю, что могу изменить расширение.txt на что угодно, и моя программа будет читать его так же, но будет ли это работать с картинками?
2 ответа
Обычно программы не заботятся о расширениях при чтении файлов, поэтому изменение расширения на неизвестное не должно вызывать проблем.
Поскольку я не могу найти эти расширения в Google, я подумал, что это был способ защитить ваши произведения, поэтому их нельзя так легко украсть.
Создать собственное расширение легко, просто решите, как вы хотите интерпретировать ваше изображение, и создайте конвертер, чтобы создать их из существующих изображений...
... но... форматы выбираются ради программиста и художественных средств, а не для защиты. Вы никогда не сможете реально защитить свое искусство от кражи, так как в какой-то момент ваш код должен будет преобразовать графику в необработанный DDB (зависимый от устройства растровый рисунок) или DIB (независимый от устройства растровый рисунок), прежде чем отобразить их на экране или отправить их в DX/OpenGL. Честно говоря, коммерческие игры на картриджах, которые не соответствуют стандартным форматам, легко копируются. Хакеры даже делают редакторы уровней для проприетарных игровых движков, которые не известны широкой публике.
Я не использую png и jpg в своем игровом коде по той простой причине, что я не смог использовать libpng в своем коде или jpeg-декодер, и мне нужна была графика, поставляемая в виде плиток 8x8 с 4/8-битной палитрой (цвет 0 прозрачен) или 16-битный RGBA_555_1, чего нельзя добиться с помощью png и jpeg.
Самое большее, вы можете скрыть свою графику, храня ее в своем собственном формате, зашифровывая или даже сжимая, вот и все. Но будьте осторожны, ваш код должен будет расшифровать / декодировать его, и изображение в какой-то момент окажется в памяти вора.
Так что да, вы можете легко изменить тип файла, но это не помешает любому пользователю (а) изменить имя файла или (б) выяснить тип файла, поместив его в программу, которая может легко распознать тип файла. И как человек, который также занимался редактированием видео, я могу вам сказать, что многие программы с радостью интерпретируют любой файл и выясняют реальный формат. И это не остановит (с), скрупулезный хакер разорвет ваши произведения. На самом деле просто взгляните на то, что хакеры сделали с форматом Refill Propellerhead, поскольку они не могли понять, как его читать, они создали программу, которая использовала программу Propellerhead для его чтения - подумайте об этом. На самом деле не требуется много времени, чтобы использовать отладчик Vanjar Fukar для отслеживания вашего кода при загрузке изображений, определения кода загрузки вашего изображения и либо его копирования, либо запуска его самостоятельно (среди сотен других тактик взлома).