Защита файлов содержимого - PullRequest
1 голос
/ 18 мая 2010

Я хочу простой уровень защиты для файлов содержимого (ресурса) в моем приложении. Например, у меня есть различные звуковые и графические файлы, используемые в моем приложении. Я думаю, я могу обернуть их в архив SFX (возможно, упакованный с WinRAR), а затем в моем приложении запустить SFX exe с некоторыми параметрами, например, -silent. Но, возможно, это не лучший способ сделать это, поэтому, если вы можете дать мне несколько советов, это было бы здорово.

P.S. Я знаю, что это не звучит недостижимо (как, например, есть), но это необходимо по некоторым причинам.

P.S. Я мог бы использовать некоторую справку для метода, чтобы скрыть файлы после полного извлечения SFX (или другого пакета).

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 мая 2010

Не использовать архив SFX.

Ну, многое зависит от того, как вы используете свои ресурсы. Если у вас много библиотечного кода, для которого требуются имена файлов, тогда файлы имеют , чтобы некоторое время сохранять их на жестком диске. Если вы можете, вы хотите выяснить, могут ли ваши звуковые и мультимедийные библиотеки передаваться по указателю - тогда вы сами загружаете файлы, дешифруете их и передаете указатели на расшифрованные буферы в API-интерфейсы мультимедиа.

Что касается фактического шифрования. Либо используйте формат файла архива, что-то вроде zlib . Это дает вам возможность хранить все ваши файлы данных в одном зашифрованном архиве и расширять их в памяти.

Или сверните свое собственное шифрование для каждого файла. Преимущество шифрования XOR в домашних условиях заключается в том, что он очень быстрый.

Практически все шифрование файлов сводится к:

  • Начните с «ключа». Короткая строка.
  • Используйте ключ для инициализации генератора случайных чисел.
  • XOR байтов из rng с данными, которые должны быть зашифрованы для его шифрования.
  • Позже, чтобы расшифровать данные:
  • начать с того же ключа, инициализировать rng
  • Который будет генерировать тот же поток байтов,
  • XOR их с зашифрованными данными для расшифровки.

Проблема (очевидно) в том, что ключ должен существовать в клиенте, чтобы любой решительный хакер мог его получить. Таким образом, нет никакого смысла в том, чтобы быть здесь слишком модным. Просто сгенерируйте 256 байтов «случайных» данных и используйте их для шифрования и дешифрования ваших файлов при загрузке их в память или для записи во временную папку.

Если вам нужно записать ttemp-файлы, вы можете использовать FILE_FLAG_DELETE_ON_CLOSE , чтобы обеспечить временную очистку временной папки, не оставляя незашифрованных ресурсов на диске.

0 голосов
/ 18 мая 2010

Заархивируйте ваши файлы ресурсов, а затем выполните XOR каждого 32-битного блока файла архива с выбранным вами ключом. Во время выполнения XOR каждый входящий 32-битный блок с ключом снова перед передачей его в zip-библиотеку для распаковки в памяти.

Очень легкое запутывание, но оно должно помешать кому-либо просто открыть zip-файл.

...