Кража, как стимул для творчества
Добавлено: 13 дек 2013, 01:43
Что общего у программиста LV и программистов Data Base, C#, Perl и даже Web? Я не говорю о склочности характера – это тоже не обязательноый признак профессионала. А вот что у нас всех общее – все мы не любим, когда у нас крадут наши коды. Может, если нас попросить – мы и сами их подарим, но красть у нас?!! Сие есть грех непрощаемый. Однако, как только наша программа впервые была продана – сама ли, или в составе программно-технического комплекса – то есть, когда она стала ТОВАРОМ, вопрос о защите ее от кражи встал в полный рост.
Мой первый "товарный" комплекс был продан в Китай, причем – еще на стадии альфа-тестирования, и вопрос о его защите был более, чем актуальным, исходя из опыта моих товарищей. Понятно, если бы наши аппараты были так же популярны, как Айподы, то и защиту пришлось бы поручить крутым и очень дорогим прфессионалам. Но мы работаем на довольно узком поле биомедицинских исследований, и даже китайский дилер не брался продавать более 100 наших аппаратов в год при их цене в 30,000$. Посему, узнав цену профессионалов, мы посовещались и решили вопрос защиты продукта поручить... Мне. А что? Программу написал, так неужто не защитишь дитя родное? А раз писал на LV, то и естественное решение – защищать на ней же. На этом закончим преамбулу и перейдем к самому процессу.
Итак, мы продали комплекс Заказчику. Один! И для нас идеальное решение – привязать этот комплекс именно к тому компьютеру, на который он и будет установлен. В одном экземпляре, с правом бэкапирования, но без возможности переноса на другой комп. В принципе, можно «привязать» комплекс к серийному номеру Винды, но это решение очевидно и потому будет нам неинтересно. А, так как наш комплекс имеет в своем составе USB- камеру, то и привяжемся мы к физическому номеру устройства, кое стоит в компе.
Но есть и еще один тонкий момент. Комплекс наш, как это принято в био-меде, может быть дан Заказчику или для бесплатного использования в течение 2-3 недель, или вообще отдан в лизинг, скажем, на год... Значит, дожен быть и контроль времени использования.
Ну, и последнее. Относясь к китайским хакерам с уважением, мы понимаем: наша тестовая программа должна не только быть замаскированной, но и не совершать активных действий – если обращаться к неким файлам, то ничего не писать и не менять. Просто открыл-прочел-закрыл, и никаких следов не оставил. А та программа, что эти файлы пишет, останется только у нас. Итак, пишем две программы: шифровальщик – у нас и дешифровальщик – у клиента.
Шифровальщик.
Так как моя LV не понимает по-русски, пояснения к фото буду давать здесь. Блоки обозначены номерами в желтый прямоугольниках.
1. Находим таблицу Windows IP Configuration нашей системы. Не знаю, как в Win 8, но и в XP, и в 7 в ней есть Physical Address, который выражается 7-ю байтами через тире. Вот его мы и возьмем, и превратим в целое 64-разрядное число . У нас есть шифруемое.
2. Возьмем абсолютный адрес нашей программы, включающий имя файла, добавим к ней пару ритуальных слов «All rights reserved» – для солидности, и также превратим ее в аналогичное число. У нас есть ключ шифрования.
3. Взяв интересный инструмент «Rotate», преобразуем шифруемое с помощью ключа.
4. Теперь вычислим время до конца нашей лицензии, задав «Lisense Period» в днях. И эту число превратим в нечто неудобьсказуемое, но уже путем смены мест частей числа. Собрав оба числа вместе, запишем их в наш секретный файл ключа, который мы не только замаскируем расширением под, скажем, библиотеку .dll, но и разместим в каком-нибудь укромном каталоге нашей LV. Итак, первый этап – шифрование – закончен.
Мой первый "товарный" комплекс был продан в Китай, причем – еще на стадии альфа-тестирования, и вопрос о его защите был более, чем актуальным, исходя из опыта моих товарищей. Понятно, если бы наши аппараты были так же популярны, как Айподы, то и защиту пришлось бы поручить крутым и очень дорогим прфессионалам. Но мы работаем на довольно узком поле биомедицинских исследований, и даже китайский дилер не брался продавать более 100 наших аппаратов в год при их цене в 30,000$. Посему, узнав цену профессионалов, мы посовещались и решили вопрос защиты продукта поручить... Мне. А что? Программу написал, так неужто не защитишь дитя родное? А раз писал на LV, то и естественное решение – защищать на ней же. На этом закончим преамбулу и перейдем к самому процессу.
Итак, мы продали комплекс Заказчику. Один! И для нас идеальное решение – привязать этот комплекс именно к тому компьютеру, на который он и будет установлен. В одном экземпляре, с правом бэкапирования, но без возможности переноса на другой комп. В принципе, можно «привязать» комплекс к серийному номеру Винды, но это решение очевидно и потому будет нам неинтересно. А, так как наш комплекс имеет в своем составе USB- камеру, то и привяжемся мы к физическому номеру устройства, кое стоит в компе.
Но есть и еще один тонкий момент. Комплекс наш, как это принято в био-меде, может быть дан Заказчику или для бесплатного использования в течение 2-3 недель, или вообще отдан в лизинг, скажем, на год... Значит, дожен быть и контроль времени использования.
Ну, и последнее. Относясь к китайским хакерам с уважением, мы понимаем: наша тестовая программа должна не только быть замаскированной, но и не совершать активных действий – если обращаться к неким файлам, то ничего не писать и не менять. Просто открыл-прочел-закрыл, и никаких следов не оставил. А та программа, что эти файлы пишет, останется только у нас. Итак, пишем две программы: шифровальщик – у нас и дешифровальщик – у клиента.
Шифровальщик.
Так как моя LV не понимает по-русски, пояснения к фото буду давать здесь. Блоки обозначены номерами в желтый прямоугольниках.
1. Находим таблицу Windows IP Configuration нашей системы. Не знаю, как в Win 8, но и в XP, и в 7 в ней есть Physical Address, который выражается 7-ю байтами через тире. Вот его мы и возьмем, и превратим в целое 64-разрядное число . У нас есть шифруемое.
2. Возьмем абсолютный адрес нашей программы, включающий имя файла, добавим к ней пару ритуальных слов «All rights reserved» – для солидности, и также превратим ее в аналогичное число. У нас есть ключ шифрования.
3. Взяв интересный инструмент «Rotate», преобразуем шифруемое с помощью ключа.
4. Теперь вычислим время до конца нашей лицензии, задав «Lisense Period» в днях. И эту число превратим в нечто неудобьсказуемое, но уже путем смены мест частей числа. Собрав оба числа вместе, запишем их в наш секретный файл ключа, который мы не только замаскируем расширением под, скажем, библиотеку .dll, но и разместим в каком-нибудь укромном каталоге нашей LV. Итак, первый этап – шифрование – закончен.