逆向工程.pyd文件有多难?

时间:2012-08-22 14:10:52

标签: python reverse-engineering pyc pyd

在阅读How do I protect Python code?后,我决定在Windows上尝试一个非常简单的扩展模块。我之前在Linux上编译了自己的扩展模块,但这是我第一次在Windows上编译它。我期待得到一个.dll文件,但相反,我得到了一个.pyd文件。 Docs表示它们有点相似,但它必须具有init[insert-module-name]()功能。

假设是安全的,将它们作为dll文件进行反向工程就很困难了。如果没有,那么从.pyc文件到.dll文件的规模进行逆向工程的硬度是多少?

2 个答案:

答案 0 :(得分:10)

正如您已经发现的那样,它们等同于具有特定结构的DLL文件。原则上,它们同样难以进行逆向工程,它们是机器代码,需要非常少的元数据,并且代码可能已经过优化而无法识别。

但是,所需的结构,并且知道许多函数将处理PyObject *和其他明确定义的CPython类型,可能会产生一些影响。它将汇编代码映射到C并没有什么帮助(如果有的话,由于特定于CPython的宏而变得更难)。主要与Python类型交互的代码看起来与操作C结构(和相对膨胀)的代码完全不同。这可能会让它更难理解,或者它可能会泄露出没有任何意义的代码,并允许逆向工程师跳过它并更早地获取您的商业机密。

这些问题都不适用于纯C代码的代码片段(即不与Python交互)。你可能有很多这些。所以它最终不应该产生显着的差异。

答案 1 :(得分:2)

它们基本上是本机代码。但是因为每个函数都有有趣的参数列表,所以可能更难看出每个函数的作用。我会说他们和dll一样难,如果不是更难的话。