有没有一种方法可以防止用户在已编译的Python模块中猴子修补许可证检查?

时间:2019-07-11 19:41:07

标签: python monkeypatching nuitka

我正在研究Python软件包,该软件包是商业专有软件的一部分。该软件包使用Nuitka从Python代码编译成扩展模块,以保护其源代码。运行时,它将导入到第三方应用程序中运行的嵌入式Python运行时中。 (如果相关,则运行时为Python 2.7.11。)

此Python软件包中的各种函数都需要在动态库中调用C函数,以检查该软件是否已获得许可。使用Python本身(例如ctypes)或使用主机应用程序提供的模块,可以通过多种方式来执行此操作,但是由于用户可以访问REPL来访问我们的代码正在运行的同一Python进程,因此我们担心有人可以弄清楚如何对我们的Python模块,主机应用程序的模块甚至标准的Python模块进行猴子补丁,以规避许可证检查。

是否有某种方法可以防止用户用猴子补丁或以其他方式绕过它(特别是在这种情况下)来调用此C函数?

例如,我很好奇的一个可能途径是编译Python扩展(使用Nuitka还是以更常规的方式)是否允许以无法用猴子修补的方式调用此函数。

(我应该注意,这并不是防止破解的通用方法。我很清楚,有人可以破解我们编译的任何二进制文件来规避许可证检查。我要特别防止的是只需在运行我们未打补丁的二进制文件时使用Python解释器就可以绕开检查。)

0 个答案:

没有答案