2017-02-08 17:17:22 farrellcn 阅读数 4492更多
分类专栏: python 汇编/反汇编/逆向工程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/farrellcn/article/details/54908739
[Pyinstaller]
1.输入pip install PyInstaller
2.进入需要打包的程序目录
3.输入pyinstaller + 需要打包的程序(脚本)名称
[Py2exe](目前只支持到py3.4)
1.新建一个Setup.py的文件,输入以下代码
from distutils.core import setup
import py2exe
setup(console=["要打包的py文件名"])
2.打开命令行,执行python Setup.py py2exe,会产生一个名为dist的目录,里面就是打包好的exe程序
======================================================================
python的pyc文件是一种二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。
但是只留下pyc文件并不能反正泄露源代码,因为pyc文件可以被反编译
编译py文件到pyc文件的方法:
【1】在命令行输入:python -m py_compile myFile.py 就可以生成对应的pyc文件了。之后就可以直接执行pyc文件。python myFile.pyc
作者:Py_Explorer
链接:https://www.jianshu.com/p/359b935aee10
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【2】另外一种方式是通过python代码来生成pyc文件。
import py_compile
py_compile.compile('/path/to/foo.py')
【3】 Python批量生成pyc文件
针对一个目录下所有的py文件进行编译。python提供了一个模块叫compileall,具体请看下面代码:
【3.1】
import compileall
compileall.compile_dir(r'/path')
compile_dir函数用法:
compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
compile_dir参数含义:
maxlevels:递归编译的层数
ddir:如果给出了ddir,它将被预先添加到编译的每个文件的路径以用于编译时间回溯,并且还被编译到字节码文件中,在源文件中,它将用于回溯和其他消息中 文件代码文件执行时文件不存在。
force:如果True,不论是是否有pyc,都重新编译
rx:一个正则表达式,排除掉不想要的目录
quie:如果为True,则编译不会在标准输出中打印信息
【3.2】 命令行模式 ,自动创建了“__pycache__”这个文件夹
F:\python>python -m compileall ./test1
=========【【反编译pyc文件】】===========
pip install uncompyle
使用方法
我使用pip在mac os上安装好后的可执行文件名叫uncompyle6,很奇葩有没有
uncompyle6 --help 查看帮助
uncompyle6 models.pyc > models.py 将models.pyc反编译成py文件
uncompile -o . *.pyc 将当前文件夹中所有的pyc文件反编译成后缀名为.pyc_dis的源文件
反编译后的效果可以说很理想,如果你的代码格式符合PEP8规范的要求,那就基本和源来的文件一样,不过各种注释就没有了(不能要求太高是不是)
作者:Py_Explorer
链接:https://www.jianshu.com/p/359b935aee10
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。