但请注意,您可能需要付出相当大的努力,将程序缩减为可处理的部分。如果你不想花时间,而是想让别人帮你做这项工作,我已经listed a service that may be willing to do this。如果有其他服务需要我在文档中列出,请与我联系。在
我要说的是,在我的经验中,一旦一个bug被删减了,除了控制流错误(这在这里似乎不相关),通常会有一些小的更改,甚至可以使这些巨大的文件正确地反编译。在
有两种方法可以缩短程序以考虑未编译的错误修复。。。。在
最简单的方法是猜测导致问题的代码类型。既然你对问题出在哪里有一些想法——你说是在tkinter gui循环的最后一行——写一些类似的新代码,用字节编译,看看反编译是否会产生同样的错误。在
也许您有一些旧的源代码,具有相同的tkinter gui循环。试着分解。然后把它剪下来,这样它的长度不超过几十行。在
第二种方法是对xdis包中的pydisasm使用asm选项。这将为您提供更容易修改的Python汇编代码,并且在修改之后,xasm的{}可以返回到一个pyc文件中,您可以对其进行反编译。在
但是xasm选项中有一些bug,需要一段时间才能完全稳定下来,所以use what's on github。类似地,uncompyle6在修复python3.6的bug方面也处于动荡之中,这与您的情况有关,所以use what's on github也是如此
现在来谈谈毫无疑问是一个未编译的bug。POP_TOP从Python计算堆栈中丢弃一个值。例如,当没有使用调用的返回值时,可能会发生这种情况—可能调用是它自己的语句。然而,这种未使用的值总是会发生,