我一直在寻找并且找不到任何可以帮助我反编译Python 3.5的东西。有人知道吗?
答案 0 :(得分:10)
我所知道的处理Python 3.5的人:
[Disclamer:我开发1]
uncompyle6(用Python编写)处理Python 3.5中引入的操作码,而pycdc(用C ++编写)在这里仍然有点缺乏。但是这些操作码只在使用新的Python 3.5语言功能时出现。因此,如果底层程序适用于早期版本的Python,那么在pycdc中遇到这种情况的可能性可能会很小。
Python 3.6和3.7的情况略有不同。 Python 3.6 adds some function-call opcodes and changes the semantics of other opcodes。因此,与3.5相比,即使代码没有使用Python 3.5或3.6中使用的任何新功能,新的操作码也会出现。 Python 3.7,再次,adds method opcodes并改变了其他人的语义;而且现在pycdc并不支持。
uncompyle6正在通过各种错误报告来解决其中的一些问题。随着3.6的推出,更多新的3.5操作码和功能出现的次数更多。
uncompyle6在处理控制流程方面很弱,即使它可能是目前的领跑者。因此,我在这里所做的是创建一个new project altogether just to handle Python control flow。由于Python丰富的控制结构,仅仅这一点很难。除了需要对控制流图表进行特殊处理和边缘的异常处理之外,还有else
块可以作为for
,while
和{{1}的一部分出现结构;此外,还有try
块。
当该项目可以很好地处理事情时(现在它不能),我会以某种非常有限的形式将它集成到uncompyle中,就像在3.7中一样。或者也许我会用这个新代码分叉或放入一个只有3.7的分支。这很难;欢迎志愿者来到这里。
虽然uncompyle6和pycdc都没有认真跟上Python的变化,但是现在uncompyle6做得更彻底了。您可以查看每个问题的问题跟踪器,以了解最新情况。
因此,当uncompyle6出现问题时,我的建议是使用pycdc,或者在可行的情况下,将结果与之比较。
答案 1 :(得分:1)
要反编译已编译的 .pyc python3
文件,我在当前的 Ubuntu操作系统中使用了uncompyle6
,如下所示:
(i)安装uncompyle6: pip3安装uncompyle6
(ii)从.pyc文件创建.py文件运行: uncompyle6 -o。 your_filename.pyc
(iii)将使用相同的现有 .pyc 文件名自动创建新的 .py 文件。
希望这会有所帮助。
答案 2 :(得分:0)
现在是private void button1_Click(object sender, EventArgs e)
{
string connetionString;
SqlConnection cnn;
connetionString = @"Data Source=test;Initial Catalog=test;User ID=test;Password=test";
cnn = new SqlConnection(connetionString);
cnn.Open();
MessageBox.Show("Connection Open !");
cnn.Close();
}
,最新的uncompyle6很好地支持Python 3.8.0->也应该很好地支持Python 3.5。
示例:
2020-01-06
输出:
uncompyle6 ../pyc/utils.cpython-38.pyc > ../pyc/utils.py
py与origin
py: