先安装pyinstaller
pip install pyinstaller -i https://pypi.douban.com/simpl
写一个简单的脚本:
print 'hello,world'
pyinstaller基本用法,常用的可选参数如下:
--onefile 将结果打包成一个可执行文件
--onedir 将所有结果打包到一个文件夹中,该文件夹包括一个可执行文件和可执行文件执行时需要的依赖文件(默认)
--paths=DIR 设置导入路径
--distpath=DIR 设置将打包的结果文件放置的路径
--specpath=DIR 设置将spec文件放置的路径
--windowed 使用windows子系统执行,不会打开命令行(只对windows有效)
--nowindowed 使用控制台子系统执行(默认)(只对windows有效)
--icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对windows有效)
pyinstaller --onefile --nowindowed one.py #用pyinstaller生成可执行文件
会在one.py的目录下生成一个dist文件夹,文件夹里有one.exe
那我们怎么把exe还原为py文件呢
我们用pyinstaller的archive_viewer.py C:\Python27\Lib\site-packages\PyInstaller\utils\cliutils\archive_viewer.py 路径根据你的python更改
python archive_viewer.py one.exe(替换成你自己的exe文件路径)
可以看到他反编译出了很多模块,其中one是我们想要的
我们用x one提取出来,命名为one.pyc
但此时one.pyc的前8个字节是被删了的,我们要补回来
前四个字节为python编译的版本,后四个字节为时间戳,时间戳可以任意,编译器版本python2.7 为03 f3 0d 0a,python3.4 为ee 0c 0d 0a
前面8个字节是我添加的
用easy python decompiler还原pyc,会生成一个one.pyc_dis
还原成功