python3.7.1使用_记录一次python3.7反编译过程

本文详细记录了如何将一个Python 3.7.1编译的exe文件反编译回pyc,并解决反编译过程中遇到的magic number问题。通过pyinstxtractor.py工具提取主程序,然后使用uncompyle6进行反编译,最终成功生成源代码。
摘要由CSDN通过智能技术生成

找到了一个python3.7编译的exe,但没找到源码,记录一下反编译的过程

1.将exe文件转换成pyc文件

使用pyinstxtractor.py,cmd中输入命令:

python pyinstxtractor.py xxx.exe

解压成功后,同路径下会出现一个[xxx.exe]_extracted的文件夹,这里面就包含了主程序main,不带任何后缀,我们要反编译的就是这个文件,其他的都是依赖库,如PYZ-extracted文件夹里的都是库文件。我们这时可能会纳闷,为什么该文件不是.pyc文件?这可能是pyinstxtractor的一点不足,转换出来的主程序格式不对,我们还需要对其进行手动修复。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODA4NTg1,size_16,color_FFFFFF,t_70

2.修复pyc文件

直接把main文件改后缀为main.pyc进行反编译会出现错误。

C:\Users\zzzz>uncompyle6 xxxx.pyc

Traceback (most recent call last):

File "C:\python3\Lib\site-packages\xdis\load.py", line 143, in load_module_from_file_object

float_version = float(magics.versions[magic][:3])

KeyError: b'\xe3\x00\x00\x00'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "c:\python3\lib\runpy.py", line 193, in _run_module_as_main

"__main__", mod_spec)

File "c:\python3\lib\runpy.py", line 85, in _run_code

exec(code, run_globals)

File "C:\python3\Scripts\uncompyle6.exe\__main__.py", line 7, in

File "C:\python3\Lib\site-packages\uncompyle6\bin\uncompile.py", line 194, in main_bin

**options)

File "C:\python3\Lib\site-packages\uncompyle6\main.py", line 322, in main

do_fragments,

File

在Linux中,如果您要从Python 3.7.1切换到Python 3.7.1.1,可以按照以下步骤进行操作: 1. 确认您的系统中已经安装了Python 3.7.1. 您可以使用以下命令来检查Python版本: ``` python3.7 --version ``` 如果您的系统中没有安装Python 3.7.1,可以使用以下命令来安装: ``` sudo apt-get update sudo apt-get install python3.7 ``` 2. 下载并安装Python 3.7.1.1的源代码。您可以从Python官方网站下载源代码包,并使用以下命令解压缩: ``` tar -xzf Python-3.7.1.1.tgz ``` 3. 进入解压缩后的Python 3.7.1.1源代码目录,并使用以下命令进行编译和安装: ``` ./configure --prefix=/usr/local/python3.7.1.1 make && sudo make install ``` 这会将Python 3.7.1.1编译并安装到/usr/local/python3.7.1.1目录下。 4. 使用以下命令来创建Python 3.7.1.1的符号链接: ``` sudo ln -s /usr/local/python3.7.1.1/bin/python3.7 /usr/bin/python3.7.1.1 ``` 这会创建一个名为python3.7.1.1的符号链接,指向/usr/local/python3.7.1.1/bin/python3.7可执行文件。 5. 使用以下命令来设置Python 3.7.1.1的优先级: ``` sudo update-alternatives --install /usr/bin/python3.7 python3.7 /usr/bin/python3.7.1.1 1 ``` 这会将Python 3.7.1.1添加到update-alternatives中,并将其优先级设置为1。 6. 最后,使用以下命令来切换Python版本: ``` sudo update-alternatives --config python3.7 ``` 这会列出所有可用的Python 3.7版本,并提示您选择要使用的版本。只需输入数字,即可选择要使用的Python 3.7版本。 在切换完Python版本后,您可以使用以下命令来确认当前Python版本: ``` python3.7 --version ``` 这会显示当前Python 3.7版本的详细信息。 请注意,更换Python版本可能会影响到您的系统或其他应用程序的正常运行。因此,在更换Python版本之前,请务必备份您的系统和应用程序,并确保您的操作是正确的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值