将自定义dllmain添加到cythonized模块

时间:2020-05-11 15:06:44

标签: python cython cythonize dllmain

请考虑以下情形:

应该为外部用户部署python工具,使(a)源受到保护,而(b)确保只有拥有有效许可证的用户才能使用它。此外,对于内部用户,代码应以纯python形式提供,因此可以使用python调试器进行调试,而无需进行编译。

可用许可证检查并用C编写。

(a)是通过使用cython解决的。

关于(b)的想法:

可以将许可证检查应用于程序的“中央”部分(即“一个包含足够的业务逻辑以便没有人可以代替它的类”)。当然,我可以使用cython将许可证检查链接到此类的* .pyd并使用c函数,但是内部用户将无法使用/调试该类。另一方面,在调试时将许可证检查应用于“不重要”的类将意味着(大概)可以很容易地进行交换。

创建一个单独的函数“ licenseIsValid()-> bool”并从代码的中心位置调用它是不可行的,因为它可以轻松替换。

事实上,(几乎)所有用python编写的内容都可以替换,因此是不安全的。

因此,我想到了在执行与python相关的任何操作之前 实施许可证检查的想法:在dllmain函数内部。我可以在dll / pyd启动时调用许可证检查功能,并在执行任何cython代码之前停止应用程序。

是否可以将自定义dllmain添加到cythonized模块?添加dllmain甚至安全吗(或者cython是否需要“专门的” dllmain)?

最后一句话:我知道python是使用许可证检查创建封闭源代码的错误语言选择。但是使用python的优势远胜于此...

先谢谢您, 扬

0 个答案:

没有答案