Комплекс защиты ПО с помощью флешки
Автор: Joseph L.Shrago
Дата: 07.2015
Скачать статью в формате Word.
Примечание редакции:
Данная работы была представленная на заочном конкурсе работ по OS/2 «Зазеркалье 2015». И хотя она не имеет прямого отношения к языку Rexx, я решил опубликовать её на сайте. Затронутая в статье тема защиты программ актуальна для людей пишущих на языке программирования Rexx, так как программы могут быть упакованы в .exe файлы. А проекты могут потребовать дополнительную защиту, и данный материал может оказаться весьма полезным.
1. Принципы работы
- Связывает код и флешку информацией построенной на уникальном описании флешки.
- Позволяет записывать информацию на флешке и использовать ее во время исполнения задачи.
2. Программирование
Файлы secobj.obj и secobj.h позволяют встраивать в код элементы защиты:
decript(char *src, char *dest, int length , int num_of_flash);
- дешифрование c usb флешкой.
encript(char *src, char *dest, int length , int num_of_flash);
- шифрование c usb флешкой.
test_guard0() - проверка наличия защиты, отсутствия отладчика и неизменности кода возвращает 0 если все в порядке.
test_guard() - то же что и test_guard0 плюс проверяет факт наличия защиты и соответствующей флешки.
add_key_object(char *object, int length_of_object, char *name_of_object);
- добавляет на флешку информационный объект и возвращает его номер или -1.
update_key_object(int number_of_object, char *object, int length_of_object);
- обновляет информационный объект и возвращает 0 или -1, если все плохо.
*get_key_object_by_num(int number_of_object);
- помещает в память заданный номером объект и возвращает указатель на него.
*get_key_object_by_name(char *name);
- помещает в память заданный именем объект и возвращает указатель на него.
int get_object_len(); - вызывается после get_key_object_by_name или get_key_object_by_name для получения длины объекта.
Примечание:
- Вы сами ответственны за освобождение памяти, возвращаемой функциями get_key_object_by_ххх
- Постарайтесь организовать код таким образом, чтобы вызовы этих функций не пересекались во времени, поскольку они используют одну и ту же внутреннюю память.
3. Связывание с флешкой
Связывание программы и флешки производится задачей m_uguard.exe c помощью команды:
m_uguard task.exe file_object_0 file_object_1 .. file_object_n
где:
task.exe - защищаемая задача.
file_object_х - файлы записываемые на флешку. Всего можно записать 29 файлов общим размером в 32 мегабайта.
Если вы хотите использовать эту флешку традиционным путем - отредактируйте таблицу разделов сдвинув начало раздела подальше от нулевого сектора.
Примечание: утилита lxlite должна вызываться без указания полного пути.
4. для чтения и обновления информационных объектов на флешке можно использовать задачу fmguard.exe.
5. Я и сам знаю, что все можно реинженерить и пропатчить. Я попытался усложнить этот процесс.
И попытаюсь еще более.
6. Вы сами должны понимать, что однократное использование в коде вызова функции проверки защиты удаляется самым простым способом, поэтому при использовании этого кода проявите фантазию.
Свои предложения присылайте по адресу joseph@ecomstation.ru