我已经使用cythosize编译了我的python模块。这种方式提高了代码的速度,而且开发人员无法读取代码。然而,我怀疑是否有python开发人员能够破解cython模块来破解代码。
问题是,有人能把它们反编译回python或其他可读格式来破解代码吗?
有相当好的C反编译器可以将Cython扩展恢复到(有些可读性(C。它不会是Cython生成的相同的C代码,但可能会计算出算法的细节。你不可能很容易地将其恢复到原始的Python/Cython代码(但考虑到Cython以一种相当可预测的方式生成代码,这可能是可能的…(
特别是,字符串常量之类的东西将非常容易从C文件中提取(甚至直接从so文件中提取(。由于许多Python代码都是基于字符串常量的属性查找(例如,np.ones(...)
查找具有字符串常量"np"
的全局,然后查找具有字符串常数"ones"
的属性,然后查找PyObject_Call
的一些变体(,因此该代码将很容易反编译。正因为如此,典型的Cython扩展模块可能比典型的C程序更容易反编译。
简而言之,你应该假设:
- 如果你把.py/.pyx文件搞砸并删除了,那么你应该认为它已经永远丢失了,你再也找不回来了
- 如果其他人对你的代码有足够的兴趣,那么你应该假设他们能够做到