将 cython 扩展反编译回 python

问题描述 投票:0回答:1

我使用 cythonize 来编译我的 python 模块。这种方式提高了代码速度,并且代码也无法被开发人员阅读。但是我怀疑某些 python 开发人员是否可以破解 cython 模块来破解代码。

问题是,有人可以将它们反编译回Python或其他可读格式来破解代码吗?

python cython cythonize
1个回答
2
投票

有 C 反编译器可以将 Cython 扩展恢复为(某种程度上可读)C。它不会与 Cython 生成的 C 代码相同,但很可能可以计算出算法的详细信息。您无法很容易地将其恢复为原始的 Python/Cython 代码(但考虑到 Cython 以相当可预测的方式生成代码,这可能是可能的......)

特别是,像字符串常量这样的东西可以很容易地从 C 文件(甚至直接从 so 文件)中提取。由于许多 Python 代码都是基于字符串常量的属性查找(例如

np.ones(...)
使用字符串常量
"np"
查找全局变量,然后使用字符串常量
"ones"
查找属性,然后使用
PyObject_Call 的一些变体查找属性) 
),那么该代码将相当容易反编译。因此,典型的 Cython 扩展模块可能比典型的 C 程序更容易反编译。

简而言之,您应该假设:

  • 如果您弄乱并删除了 .py/.pyx 文件,那么您应该假设它已经永久丢失,并且您无法将其恢复。
  • 如果其他人对了解你的代码的功能有足够的兴趣,那么你应该假设他们能够做到。
© www.soinside.com 2019 - 2024. All rights reserved.