我试图找出反编译python .pyd文件的最佳方法。无论我到哪里,我都会想到死路一条。除了2008年所展示的Aaron Portnoy和Ali Rizvi-Santiago的“Antifreeze”之外,似乎没有任何计划可以做到这一点here.然而该项目早已丢失并被遗弃。
我昨天在推特(Aaron Portnoy)上与该计划的一位开发人员进行了交谈。 Here就是对话。
所以我的问题是,如何轻松地反编译包含冻结python对象的.pyd。
OR
我如何修改其中一个使用.pyo和.pyc执行此操作的反编译器来反编译.pyd,如Aaron指出的那样?如果这是我最终要做的事情,哪个最好?
OR
如果你有防冻剂或知道从哪里获得它将是一个奇迹。即使是开发人员也不知道从哪里获得它。我已经搜索了几天而没有运气。
答案 0 :(得分:3)
直到现在我都没有看到这个。不过,我应该注意的是,我们并未对其进行“反编译”,而是对其进行了反汇编。
我很确定我具有在外部硬盘驱动器上组成的较低级组件。虽然,我不确定亚伦写的真的很棒的UI(将它们包装起来)。
但是,从本质上讲,它包括扫描.pyd
以查找接近(或位于)导出的表,然后使用marshal.loads
将表中的每个对象解码回本机Python对象。一旦有了对象,就可以使用dis.disassemble
模块中的dis
函数来分解它们。但是,我在GitHub上的一个项目中仍然拥有原始的汇编器/反汇编器。
要将对象重新插入表中,可以使用marshal.dumps
并将其写回到文件中。
自那时以来,Python发生了显着变化,因此某些事情不再适用。但是……还有人在乎吗?