Показать сообщение отдельно
Старый 14.07.2009, 21:45   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Lib_vault - Ресурсы под замком

Представляю вам первую версию библиотеки для работы с зашифрованными пакетами ресурсов. Для чего это нужно? Для ограждения ресурсов вашего мидлета от любопытных глаз и кривых рук взломщиков. Конечно, защита пока не идеальна, нужно будет ещё добавить шифрование заголовка и скроллинг битов, но пока можно пользоваться и такой версией, защита уже вполне есть и лучше пока пользоваться такой чем вообще никакой.

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

Итак, для начала нужно создать пакет с нашими ресурсами. Для этого запускаем запаковщик (он прилагается к данной статье, на момент написания самая свежая версия запаковщика это 3).

Нажимаем кнопку "Добавить" и выбираем файлы, которые нужно поместить в архив. У меня получилось примерно такой архивчик:



Потом поставьте галочку напротив строчки "Использовать шифрование" и наберите в текстовой строчке пароль для доступа к вашему архиву.

Ещё в качестве дополнительной меры можно добавлять фейковый (ложный, поддельный) файл в начало архива. Как видно из скриншота, я туда поместил файл с картинкой под названием "lock.png". Всё, теперь нажимаем кнопку "Запаковать", программа спросит имя файла и путь сохранения. Я указал название "logo.png". Архив готов. При создании архива появилось окошко с числом "2894". Запишем это число на бумажечке, оно нам ещё пригодится. Можете попробовать открыть полученный файл на компьютере, картинка откроется совершенно нормально, без ругани, что файл как-то странно перегружен. Ну и что, что такая маленькая картинка занимает 16 Кб. Может я ламер и запаковал картинку в плохом формате сжатия

Теперь приступаем к созданию нашего приложения.
Перед тем как начать, кратко опишу функции, которые поддерживает библиотека Lib_vault:

OpenVault(fnameStringofInteger) - Открыть файл с ресурсами
    fname 
имя файла с ресурсами (символ "/" в начале писать не нужно)
    
of отступ в байтах от начала файла (в случае добавления фейковых файлов перед заголовкоминаче 0)
    
Security(passStringscrollInteger) - Установить параметры безопасности для архива ресурсов
    pass 
пароль
    scroll 
циклический сдвиг каждого байта на N битов влево
    
(пока не поддерживается запаковщикомно уже забронированопока ставьте значение 0)
    
Image LoadImage(resInteger) - Загрузить картинку из архива
    res 
номер ресурса в архиве
    
String LoadText
(resIntegerencInteger) - Загрузить текстовый файл целиком
    res 
номер ресурса в архиве
    enc 
кодировка символов
    0 
не делать перекодировку
    1 
перекодировка Windows (cp1251) -- > UTF-8
    2 
перекодировка ANSI -- > UTF-8
    
LoadSound
(resIntegerformatStringloopInteger) - Загрузить мелодию из архива
    res 
номер ресурса в архиве
    format 
формат аудио (пример"audio/midi"подробнее смотри стандартный хелп по функции OpenPlayer
    loop 
количество разкоторое будет воспроизводиться мелодия
    
PlaySound 
Начать воспроизведение мелодии загруженной ранее функцией LoadSound

StopSound 
Закончить воспроизведение мелодии 
Ну а теперь собственно сама программа, я подробно всё откомментировал.
Думаю у вас не возникнет дополнительных вопросов.
Program VaultTest;
Uses vault;
Var
    
imimage;
    
sstring;
Begin
    
    im
:=LoadImage('/logo.png');  // Открываем наш архив как обычную картинку
    
DrawImage(im55); // Рисуем на экране симпатичный замочек (закрытый)
    
RepaintDelay(5000); // Ждем 5 секунд
    
    
SetColor(255255255); FillRect(00GetWidthGetHeight); // Очистка экрана
    
    
OpenVault('logo.png'2894); // Открываем наше хранилище (сдвиг от начала файла 2894 байт)
    
Security('1234567890'0); // Пароль 1234567890, циклический сдвиг битов не применялся (пока 0)
    
    
im:=vault.LoadImage(0); // Извлекаем ресурс #0 - картинку
    
DrawImage(im55); // Рисуем на экране симпатичный замочек (уже открытый!)
    
    
s:=vault.LoadText(11); // Загружаем текстовый файл целиком (кодировка Win-1251)
    
SetColor(000); DrawText(s270); // Рисуем текст на экране
    
    
vault.LoadSound(2'audio/midi'1); // Загружаем ресурс #2 - MIDI мелодию, играть будем 1 раз
    
vault.PlaySound// Начать воспроизведение
    
    
RepaintDelay(50000); // Ждем 50 секунд
    
End
В общем, это и всё, что я хотел сегодня рассказать. Я показал как успешно хранить ваши ресурсы в зашифрованном виде, как маскировать их под обычные файлы. Ждите выходов новых версий запаковщика и распаковщика соответственно тоже.
Вложения
Тип файла: zip Lib_vault.zip (2.9 Кб, 684 просмотров)
Тип файла: zip RESPacker3.zip (273.2 Кб, 739 просмотров)
Тип файла: zip VaultTest.zip (12.4 Кб, 654 просмотров)
(Offline)
 
Ответить с цитированием
Эти 16 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
Bananbl4 (28.03.2010), GRAY_WOLF (15.10.2009), im_zorg (11.01.2010), Ksanatos (31.08.2010), Mr.Twister (15.07.2009), NetBuilding (21.07.2010), Phantom (16.07.2009), PVD (27.02.2010), Pyth_ON (15.07.2009), Richik (21.07.2009), Romanzes (28.02.2010), scimitar (01.10.2011), Serg153 (15.07.2009), Trazzy (18.11.2009), ViNT (16.07.2009), VM (15.07.2009)