像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。
本次演示环境:linux
确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。
编译
批量改名.pyc文件
移动.pyc文件
清理.py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
2.1 混淆工具pyminifier
在原来的工具 pyminifier上修复了几个bug。
安装:
python3 安装
或者clone下来,自行安装
使用例子
2.2 源码变更
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
结合混淆、编译和打包,尝试出以下发布脚本。
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。
一、python如何运行程序
首先说一下python解释器,它是一种让其他程序运行起来的程序。当你编写了一段python程序,python解释器将读取程序,并按照其中的命令执行,得出结果,实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层。
通俗来说,我们的计算机是基于二进制进行运算的,无论你用什么语言来写程序,无论你的程序写的多么简单或多么复杂,最终交给计算机运行的一定是 0或1,因为计算机只能识别0和1。
我们目前使用的大多数编程语言都是高级程序语言,也就是利于我们人类阅读的语言,要使我们编写的程序能够在计算机上跑起来,要经过一定的转换才可以,python程序大致的过程应该是这样:
源代码-->字节码-->pvm(虚拟机)-->机器码
可以到Python的官方网站下载python(http://www.python.org),通常包括解释器、库文件及简单的编码环境(IDLE)。把源代码编译成字节码其实是为了程序更节省时间,如果源代码没有变动,那么运行程序时会直接从字节码读取,加快速度,把字节码放到虚拟机去解释,可以更好的跨平台运行,最后转换成机器码。
二、Windows系统下搭建python编程环境。
1、进入Python官网http://www.python.org,在“Downloads”下拉菜单中选择相应的 *** 作系统,我们选择windows。
2、这里有32位和64位版本,要和自己的电脑系统相对应。
3、安装刚才已经下载下来的安装包, 安装过程下图所示,使用默认配置,选择“Install Now”,勾选下面的Add Python3.5 to PATH,然后就是一直next,直到完成。
三、认识编程环境
1、在开始运行处运行命令cmd,进行dos模式,输入python,即可进行python的交互式环境。
2、进行到IDLE界面
3、交互式界面可以用于简单的学习,编写较大程序时应到具体的python文件中,python文件默认的后缀为.py,我们可以新建文本文件,然后把后缀扩展名改为.py,然后
最后选择菜单中的Run下的run module即可运行,快捷键为F5。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)