Назад в библиотеку

Анализ методов и алгоритмов защиты кода AutoLISP-программ

Авторы: Губенко Н.Е., Кудимов М.И.
Источник: ПЕРСПЕКТИВЫ РАЗВИТИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ - 2017/ Сборник материалов ХХXV Международной научно-практической конференции. - Новосибирск, ЦРНС - 2017, с. 150-154.

Аннотация

Губенко Н.Е., Кудимов М.И. Анализ методов и алгоритмов защиты кода AutoLISP-программ. Проведен анализ методов и алгоритмов защиты кода AutoLISP программ. Приведено их сравнительное описание. Выделены достоинства и недостатки каждого из них и на этой основе сделан вывод о целесообразности выбора самого надежного из них.

Ключевые слова: защита кода, компилятор, методы защиты, сравнение методов.

Общая постановка проблемы

В настоящий момент актуальной является задача обучения студентов построению поверхностных сечений объемных фигур на комплексном чертеже и в пространстве по введенным ими данным. Для решения этой задачи была разработана обучающая система на языке AutoLISP. Графический язык программирования AutoLISP является расширением языка программирования LISP. LISP - это язык высокого уровня, ориентированный на обработку списков, который выбран в качестве базового потому, что графические примитивы (начиная, с точки), блоки, наборы примитивов и блоков удобно представляются в виде списков. В составе системы AutoCAD поставляется интерпретатор языка AutoLISP (входящий в модуль ADE-3) [1]. Именно поэтому выбор пал именно на него. После определения языка возникла задача защиты разработанного текста программы от изменения другими пользователями, но с сохранением её работоспособности. В настоящий момент существует ряд методов, которые с разной эффективность решают эту задачу. Ниже приведено описание этих методов.

Анализ методов

Kelvinate

С помощью утилиты KELV.EXE можно кельвировать код. KELV.EXE убирает все пробелы, переименовывает названия переменных на случайные и удаляет все комментарии, что делает текст программы практически нечитаемым, но сама программа остается исполняемой. Вернуть же все к первоначальному виду, то есть декельвировать, можно любым форматировщиком кода, такими как FMT202S.ZIP, LB.EXE, PPRINT.LSP [2]. На рисунке 1 приведен пример части кода после кельвирования.

Пример части кода после кельвирования.

Рисунок 1 – Пример части кода после кельвирования.

Пример демонстрирует эффективность метода, так как делает исходный текст не распознаваемым без знания таблицы соответствия имен и разбивки на лексические единицы.

Protect

С помощью утилиты PROTECT.EXE можно зашифровать текст программы, что бы его нельзя было изменить. Для снятия такой защиты используют уже другую утилиту unprotect [2].

Kelvinate and Protect

Это комбинация двух предыдущий методов. Вначале код пропускается через KELV.EXE, что бы сделать его нечитаемым, а затем зашифровываем его через утилиту PROTECT.EXE. Таким образом код будет невозможно прочитать и изменить, но он все так же останется исполняемым [2].

Convert 3.5

Это Shareware Lisp шифровщик от Maciej Lukasiewicz. Этот конвертер является заменой шифровщика Decryptor v2.0. С помощью Convert 3.5 зашифрованные "Protected Lisps" программы не могу быть расшифрованы с помощью других программ, кроме самого Convert 3.5 [2].

Lisp2C

Это конвертер, который переводит код Autolisp программы в код на языке С. После прохождения такой процедуры Вам понадобится компилятор С, что бы запустить программу [2].

Visual Lisp

Visual Lisp представляет собой интегрированную среду разработки и компилятор Lisp-файлов и базируется на модифицированных компанией Autodesk программах фирмы Basiss Software Vital lisp. После трансляции autolisp программы этим компилятором код становится исполняемым, но перестает читаться в обозревателе кода и его нельзя будет открыть для изменения [3]. На рисунке 2 приведен внешний вид редактора-компилятор Visual Lisp.

Внешний вид редактора-компилятора Visual Lisp.

Рисунок 2 – Внешний вид редактора-компилятора Visual Lisp.

Ниже приведен сравнительный анализ методов защиты AutoLISP программ в виде таблицы.

Таблица 1 – Сравнительный анализ методов защиты AutoLISP программ.

Выводы

Как показывает сравнительный анализ, наиболее надежными методами защиты кода AutoLISP программ являются два последних, то есть конвертер Lisp2C и компилятор Visual Lisp. Их отличительной чертой от других методов является необратимость процесса защиты. Поэтому перед их использованием нужно делать обязательную резервную копию программы и желательно не одну. Для нашей же программы лучше использовать метод с компилятором Visual Lisp, потому что для конвертера Lisp2C нужно подключать еще и компилятор С, чтобы запустить программу. Вроде бы ничего сложного, но все-таки после компиляции такого кода программа может работать не корректно. Это и является фактором обосновывающем выбор метода с компилятором Visual Lisp.

Cписок литературы

  1. АВТОЛИСП - язык графического программирования в системе AutoCAD [электронный ресурс] // ВВЕДЕНИЕ В ЯЗЫК АВТОЛИСП [сайт]. URL: http://kappasoft.narod.ru/info/acad/lisp/a_lisp.htm#2
  2. Часто задаваемые вопросы об автолиспе [электронный ресурс] // Как защитить мои программы AutoLISP? [сайт]. URL: http://faqs.org.ru/progr/graph/autolisp.htm#5_3
  3. Советы по программированию в AutoCAD [электронный ресурс] // Как защитить свои авторские права на Lisp-программы? [сайт]. [2000]. URL: http://www.cad.dp.ua/sovets/sovet1.php