Контроль запуска приложений Linux / Лицензирование - PullRequest
0 голосов
/ 21 января 2012

Мне нужно использовать какое-то лицензирование для некоторых приложений Linux, к которым у меня нет доступа к их кодовой базе.

Я думаю, что отдельный процесс читает лицензионный ключ и проверяет наличиедоступность этого приложения.Затем я должен убедиться, что процесс запускается при каждом вызове уважаемого приложения.Есть ли какая-то особенность Linux, которая может помочь в этом?Например, что-то вроде файла sudoers, в котором я определяю, какой пользователь и какое приложение пытается быть запущено, и, если получена комбинация, сначала запустите проверку лицензии.

Или я могу сделать что-то вроде не разрешатьпользователь сам запускает приложение (из командной строки) и заставляет его направить его в процесс моей лицензии следующим образом:

/ usr / bin / tm |license_process // тогда как «/ usr / bin / tm» потерпит неудачу сам по себе

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Мне нужно использовать какое-то лицензирование в некоторых приложениях Linux

Обратите внимание, что проверка лицензий, как правило, будет стоить вам способ больше (при поддержке и администрировании)чем они стоят: любой, кто захочет обойти чек и у которого есть хоть какой-то навык, сделает это, и не заплатит за лицензию, если он все равно не сможет (то есть, не реализуя схему лицензирования, вы обычно не оставляете деньги на столе).

что у меня нет доступа к их кодовой базе.

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

Я думаю, что отдельный процесс читает лицензионный ключ и проверяет наличие этого приложения.

Любая такая схема будет обойдена менее чем через 5 минут специалистом с strace и gdb.Не трать свое время.

0 голосов
/ 21 января 2012

Вы можете написать двоичный файл-обертку, который выполняет проверки, а затем связать его с реальным приложением как часть этого двоичного файла, используя некоторые приемы dlsym, которые вы можете вызывать из функции main обертки из реальной функции main.

IDEA

  1. , прочитайте о взломе ELF: http://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html
  2. используйте ld для переименования основной функции программы, доступ к которой вы хотите защитить.http://fixunix.com/aix/399546-renaming-symbol.html
  3. написать оболочку, которая проверяет и использует dlopen и dlsym для вызова реального main.
  4. связывает реальное приложение с вашей оболочкой, как один двоичный файл.

Теперь у вас есть приложение, в котором есть ваши пользовательские проверки, которые довольно сложно сломать, но не невозможно.

Я не проверял это, у меня нет времени, но это забавный эксперимент.

...