我使用 cythonize 来编译我的 python 模块。这种方式提高了代码速度,并且代码也无法被开发人员阅读。但是我怀疑某些 python 开发人员是否可以破解 cython 模块来破解代码。
问题是,有人可以将它们反编译回Python或其他可读格式来破解代码吗?
有 C 反编译器可以将 Cython 扩展恢复为(某种程度上可读)C。它不会与 Cython 生成的 C 代码相同,但很可能可以计算出算法的详细信息。您无法很容易地将其恢复为原始的 Python/Cython 代码(但考虑到 Cython 以相当可预测的方式生成代码,这可能是可能的......)
特别是,像字符串常量这样的东西可以很容易地从 C 文件(甚至直接从 so 文件)中提取。由于许多 Python 代码都是基于字符串常量的属性查找(例如
np.ones(...)
使用字符串常量 "np"
查找全局变量,然后使用字符串常量 "ones"
查找属性,然后使用 PyObject_Call
的一些变体查找属性)
),那么该代码将相当容易反编译。因此,典型的 Cython 扩展模块可能比典型的 C 程序更容易反编译。
简而言之,您应该假设: