python打包的二进制文件反编译
python打包的⼆进制⽂件反编译
简介
Pyhton是⼀个脚本语⾔,在运⾏Python代码时,最终由Python解释器来执⾏。解释器就是Python的运⾏环境,但是除了开发⼈员,⼤部分⼈在使⽤时并不会安装Python。所以官⽅就提供了⼀些打包程序,将代码与解释环境打包到⼆进制⽂件中,⽅便在各种操作系统中运⾏。
下⾯为⼀些⽂件格式:
.py: Python代码⽂件。对于⼀些开源项⽬,发布⽅也许会直接提供源码,但是使⽤时需要安装依赖库
.pyc: 源码编译后的中间式⽂件,其⽬的是为了加快下次运⾏时的速度。不能直接运⾏,需要python虚拟机的⽀持才可以运⾏,类似于java、平台的中的虚拟机,因此可以pyc⽂件可以跨平台执⾏。不同的python编译出的pyc⽂件是不同的,例如python2.4编译出的pyc⽂件,2.5不可以使⽤
可执⾏⽂件:针对得专业⼈员,直接提供可执⾏⽂件,只需要了解使⽤⽅法即可,缺点是可移植性差,需要针对不同的操作系统,⽣成可执⾏⽂件。
下⾯是⼀些打包为可执⾏⽂件的⽅法:
下⾯的实验,我主要使⽤pyinstaller打包⽂件。
Python⽂件打包
配置说明
下载⽅法:
pip install pyinstaller
python setup.py install
验证
pyinstaller -v
参数
-F 制作独⽴的可执⾏程序
-D 制作出的档案存放在同⼀个⽂件夹下(默认值)
-K 包含TCL/TK(对于使⽤了TK的,最好加上这个选项,否则在未安装TK的电脑上⽆法运⾏)
-w 制作窗⼝程序
-c 制作命令⾏程序(默认)
-X 制作使⽤UPX压缩过的可执⾏程序(推荐使⽤这个选项,需要下载UPX包,解压后放在Python(⾮PyInstaller)安装⽬录下,下载upx308w.zip)
台风少年七人成团
-o DIR 指定输出SPEC⽂件路径(这也决定了最后输出的exe⽂件路径)
--icon=[ICO⽂件路径] 指定程序图标
-v [指定⽂件] 指定程序版本信息
北京奥运会时间
-n [指定程序名] 指定程序名称
Windows:⽣成exe⽂件
正常使⽤
pyinstaller -F test.py
可执⾏⽂件存储在dist/test⽂件夹中,不过我这环境出了点问题,使⽤
pyinstaller -D test.py
进⼊build/test⽂件夹,将Python环境安装处的Python37.dll拷贝到⽬录,再执⾏该⽬录下的
Linux:⽣成ELF
下载⽅法和windows平台相同。
打包⽣成ELF
pyinstaller -F test.py
pyinstaller打包程序识别
exe图标特征
exe字符串特征
和Python语句很类似__file__,__main___,此外也有很多Python的特征
关于读书的词语ELF字符串特征
ELF主函数特征
在Linux上运⾏pyintaller打包的可执⾏⽂件时,它会将打包好的⽂件解压到临时⽂件夹(/tmp)中的_MEIxxxxxx 路径中暂时存放,执⾏完毕之后再删除。所以在主函数起始位置会有如下特征
反编译⽂件
我们要将Python打包成的可执⾏⽂件,⾸先要利⽤archive_viewer.py将exe/elf反编译为pyc字节码,再使⽤uncompyle6反编译为py⽂件。
反编译为pyc⽂件
archive_viewer.py就在我们的pyinstaller安装包⽂件夹中。例如我的Python环境中:
Win:D:\Anaconda\Lib\site-packages\PyInstaller\utils\cliutils
Linux:/home/ubuntu/.local/lib/python3.6/site-packages/PyInstaller/utils/cliutils
参数
U: go Up one level
暗黑2法师加点O <name>: open embedded archive name
X <name>: extract name
Q: quit
⾸先,我们要解析EXE/ELF⽂件数据包,将可执⾏⽂件放置到与archive_viewer.py同⽬录下,使⽤命令:
python archive_viewer.py test.py
赠汪伦
情圣韩国女演员有很重要的两点:
1. 反编译EXE/ELF⽂件的Python版本必须与打包时的版本⼀致
2. 反编译的pyc⽂件命名必须遵照上⾯红框中的“test”
其次,提取test.pyc和struct.pyc⽂件(后⾯会说明该⽂件作⽤)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。