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

yas*_*sar 16 python reverse-engineering pyd pyc

阅读后如何保护Python代码?,我决定在Windows上尝试一个非常简单的扩展模块.我之前在Linux上编译了自己的扩展模块,但这是我第一次在Windows上编译它.我期待得到一个.dll文件,但相反,我得到了一个.pyd文件.Docs说他们有点相同,但它必须有一个init[insert-module-name]()功能.

假设它是安全的,像dll文件一样难以对它们进行反向工程.如果没有,那么从.pyc文件到.dll文件的规模进行逆向工程的硬度是多少?

小智 10

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

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

这些问题都不适用于纯C代码的代码片段(即不与Python交互).你可能有很多这些.所以它最终不应该产生重大影响.