•  
CESCogito, ergo sum
Мыслю, следовательно, существую
  •  
Новости сайта:

2020-08-02: Программа CES-Топо обновлена до версии 1.16.0
Новые модули Изменения


2020-04-30: Программа CES-Топо обновлена до версии 1.15.0
Новые модули


2020-03-23: Программа CES-Топо обновлена до версии 1.14.0
Новые модули

Все новости...



2012-11-23: Зашита LISP программ.

Если глубоко не вдаваться в проблематику затронутой темы, в вопросе защиты можно выделить два направления – защита от просмотра исходного кода и изменения самой программы и защита от копирования.

Защиту от просмотра и изменения исходного кода можно реализовать несколькими способами.

1. Так называемое «кельвинирование». В интернете полно программ , которые шифруют и дешифруют ЛИСП файлы. Однако при дешифрировании сохраняются не только имена переменных и имена функций, но и даже комментарии к коду! Такой вариант, естественно, отпадает.

2. Компилирование (например, средствами AutoCAD) в FAS файл. Мои поиски по форумам привели меня к убеждению, что декомпилятора, который восстановил бы исходный текст LISP программы, не существует. Теми программами, что мне довелось видеть, выжать что-то осмысленное из FAS так и не получилось. На специализированных форумах старожилы пишут что сие невозможно. Что ж, я остановился на таком выборе и могу его рекомендовать начинающим ЛИСП-программистам.

3. Компилирование в VLX. Подробно на этом пункте останавливаться не буду, скажу лишь, что все, что сказано выше в отношении FAS, справедливо, по моему убеждению, и в отношении VLX, однако я все же предпочитаю FAS.

Теперь остановимся более подробно на защите от копирования.

«Привязать» программу к компьютеру, к его аппаратной составляющей, можно несколькими способами. Считается, что самый оптимальный – это привязка к серийному номеру жесткого диска, однако прочитать его средствами ЛИСП напрямую нельзя. Можно использовать библиотеку, написанную на другом языке программирования, но могут возникнуть сложности с совместимостью версий CAD платформы, версий net framework и так далее.

Я использую два способа «привязки к железу»:

1. Для компьютеров с операционной системой Windows на базе NT можно использовать так называемый SID - идентификатор безопасности. Теоретически он должен быть уникальным для каждого компьютера и его можно прочитать из реестра средствами LISP, вне зависимости от политик безопасности домена. А на предприятии очень часто такие политики накладывают ограничения.

Ниже приведен код функции на языке LISP, которая возвращает считанный из реестра SID:

(defun get_sid ( / tmp result i)
(setq tmp(vl-registry-descendents "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList"))
(setq i 0)>
(setq result "")
(repeat (length tmp)
(if (wcmatch (nth i tmp) "S-1-5-21*")
(setq result (nth i tmp))
); end if
(setq i (1+ i))
); end repeat
result
); end defun

2. Версия BIOS. Такая информация есть в реестре, и ее так же можно прочитать средствами LISP

Ниже приведен код функции на языке LISP, которая возвращает считанную из реестра версию BIOS:

(defun get_sbv ( / i result tmp)
(setq tmp(vl-registry-read "HKEY_LOCAL_MACHINE\\Hardware\\Description\\System\\" "SystemBiosVersion"))
(setq i 0 result "")
(repeat (length tmp)
(if (= (type (nth i tmp)) 'STR)
(setq result(strcat result (nth i tmp)))
); end if
(setq i (1+ i))
); end repeat
result
); end defun

Однако в обоих способах есть своя ложка дегтя.

В организации, где я сейчас работаю, на компьютерах, включенных в домен, каким-то странным способом время от времени меняется SID, поскольку я не знаком с админской кухней, объяснить этого я не могу, а наши админы сказали "не может быть такого". Так же для облегчения развертывания рабочих станций админами может использоваться один образ операционной системы с одним SID-ом, который могут и "забыть" поменять потом.
Привязка к версии BIOS тоже имеет свои нюансы. Как правило, в организации приобретают единовременно несколько компьютеров одинаковой конфигурации, на которых, вероятнее всего, будут совпадать версии BIOS.

Какой из этих двух (а может быть и оба одновременно) способов использовать, решать вам.

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


Александр Лапкин


Просмотров: 6014
Вернуться назад



Комментарии:

Олег
2014-08-02 09:20:20
Добрый день, спасибо за советы, очень жду обещанную статью о ключе, заранее спасибо!

  •  

Добавить комментарий

Ваше имя:

Ваше сообщение:



Для отправки сообщения введите код, который изображен на картинке:

Если Вы не можете прочитать код, обновите страницу.

Рейтинг@Mail.ru

При использовании материалов сайта ссылка на первоисточник обязательна!
Разработка сайта: cj_lex