Есть ли способ запретить пользователю монтирование патчей проверки лицензии в скомпилированном модуле Python? - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над пакетом Python, который является частью коммерческого проприетарного программного обеспечения. Пакет скомпилирован из кода Python в модуль расширений с использованием Nuitka для защиты его исходного кода. При запуске он импортируется во встроенную среду выполнения Python, запущенную в стороннем приложении. (В случае, если это уместно, среда выполнения Python 2.7.11.)

Различные функции в этом пакете Python должны вызывать функцию C внутри динамической библиотеки, чтобы проверить, лицензировано ли программное обеспечение. Есть несколько способов сделать это, используя либо сам Python (например, ctypes), либо используя модули, предоставляемые хост-приложением, но поскольку у пользователя есть доступ к REPL для того же процесса Python, в котором выполняется наш код, мы обеспокоены тем, что кто-то может выяснить, как обезопасить наши модули Python, модули хост-приложения или даже стандартные модули Python, чтобы обойти проверку лицензии.

Существует ли какой-либо метод вызова этой функции C таким образом, чтобы пользователь не мог ее залатать или иным образом обойти, особенно с учетом этого контекста?

Например, возможный способ, который меня интересует, - позволяет ли компиляция расширения Python (либо с помощью Nuitka, либо более обычным способом) вызывать эту функцию способом, который не может быть исправлен обезьяной.

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

...