Не использовать архив SFX.
Ну, многое зависит от того, как вы используете свои ресурсы. Если у вас много библиотечного кода, для которого требуются имена файлов, тогда файлы имеют , чтобы некоторое время сохранять их на жестком диске.
Если вы можете, вы хотите выяснить, могут ли ваши звуковые и мультимедийные библиотеки передаваться по указателю - тогда вы сами загружаете файлы, дешифруете их и передаете указатели на расшифрованные буферы в API-интерфейсы мультимедиа.
Что касается фактического шифрования. Либо используйте формат файла архива, что-то вроде zlib . Это дает вам возможность хранить все ваши файлы данных в одном зашифрованном архиве и расширять их в памяти.
Или сверните свое собственное шифрование для каждого файла. Преимущество шифрования XOR в домашних условиях заключается в том, что он очень быстрый.
Практически все шифрование файлов сводится к:
- Начните с «ключа». Короткая строка.
- Используйте ключ для инициализации генератора случайных чисел.
- XOR байтов из rng с данными, которые должны быть зашифрованы для его шифрования.
- Позже, чтобы расшифровать данные:
- начать с того же ключа, инициализировать rng
- Который будет генерировать тот же поток байтов,
- XOR их с зашифрованными данными для расшифровки.
Проблема (очевидно) в том, что ключ должен существовать в клиенте, чтобы любой решительный хакер мог его получить. Таким образом, нет никакого смысла в том, чтобы быть здесь слишком модным. Просто сгенерируйте 256 байтов «случайных» данных и используйте их для шифрования и дешифрования ваших файлов при загрузке их в память или для записи во временную папку.
Если вам нужно записать ttemp-файлы, вы можете использовать FILE_FLAG_DELETE_ON_CLOSE , чтобы обеспечить временную очистку временной папки, не оставляя незашифрованных ресурсов на диске.