像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即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解简汪。
任何一门计算机语言你要学习,都必须花上数年的功夫,有权威数字显示,要培养一个C语言的变成人才,最少花上10年时间;又例如JAVA,学了JAVA两三年和学了十几年的人站到一起聊天,学了两三年的人就发现巨大差距了。给你哪返敬的意见就是,你只能其中挑一些来学。
首先你要知道各种计算机语言的作用,还有就是你是否真的全部用得上,做电脑开发的,一般只需要钻一门开发语言和数据库 *** 作语言就够了,开发语言有李慎面向对象的,还有面向程序的,C就是面向程序的,用来写比较底层的程序,C++就是面向对象的了,还有就是,C++和JAVA两者在开发上面基本上做的事情是一样的,你就不需要两种都学了,一心不能二用,学多了反而会混淆,而且铁定两者都学不精。另外要是你想结合开发一些系统的话,在JAVA的基础上扩展一下,学习J2EE技术。做软件开发,sql语言还是要了解的,要是你选择了asp.net来学,就没有必要学习J2EE了,两者作用一样。而且做开发一般不管美工,flash你就不要学了。
可能你看了上面的有点混乱,总结几套方案给你吧:
方案一(多平台系统开发型):J2EE(J2EE包括JAVA,jsp,等语言,开发过程可以学一点JAVAscript)+sql;
方案二(windows单平台系统开发型):asp.net+sql;
方案三(底层程序开发型):c&c++;
方案四(美工型):ps+flash(这两世告个严格来说不算是计算机语言);
你随便选一个方案去学吧,全部都学我保证你一门语言都学不会:)
两者共同处,就是都是高级语言,语法结构一样,规则略有不同,团前拦差异不大。VB可以说是入门超简单,超好学的一门高级语言。用VB做基础,学习C语言难度应该是不大,就是数组和指针位塌胡置注意一下就可以了。但是牢记我以下说的三点,难度也悔如不大。1数组就是指针;
2指针就是数组;
3数组时常量指针。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)