python 脚本防破解-pyd编译-python27+win7-64环境
操作环境-python2.7.15,win7-64
由于某些原因,不想或者不能用python3,所以脚本都是在python27下开发的
最近有了一个需求,需要把重要的部分加密,防止破解,然后找了各种方法,pyc这种最简单的,但是也是最容易被破解
然后看到了pyd,这个是开发cython生成的二进制脚本,可以直接当库导入,安全性来说,pyd是二进制文件,只能被反编译
安装:
首先安装cython:pip install Cython
然后安装:VCForPython27.msi
不要看网上那些cython的教程帖,搞什么wingw,GCC啥的,折腾了老半天,弄出来的pyd还不能加载
也不要去装什么VS2015,安装包都要好几个G,装了半天也没动静
安装好后按照如下帖子进行配置:http://www.cnblogs.com/lazyboy/p/4017567.html
这样就完成了cython环境的配置,接下去就是实际使用
下面的内容从 http://yshblog.com/blog/117 拷贝,这里感谢下这个博主
创建工作目录并生成pyd文件
这里有一个坑。程序所在的目录路径不能包含中文文字。所以我在E盘下创建一个test文件夹,用于放置要处理的python文件。
简单写了一个测试文件(命名为test.py):
- #coding:utf-8
- def hello():
- print("Hello world")
- input("<press ENTER to quit>")
在该目录下,再新建一个py文件(命名为setup.py):
- from distutils.core import setup
- from Cython.Build import cythonize
- setup(
- name = 'Hello world app',
- ext_modules = cythonize("test.py"),
- )
接着,再打开cmd,跳到该目录并执行如下命令:
- python setup.py build_ext --inplace
最终生成如下文件:
其中,build是生成过程使用到的临时文件。test.c也是临时文件,可以打开看看传说中的D语言代码。
test.pyd是我们所需的文件。
pyd文件可以像平常一样使用。例如,我进入python,如下代码:
当然还有打包exe:
使用pyinstaller也是没问题的,实际测试通过
生成exe
至此,pyd的加密完成了,当然,这只是借用了cython的编译,python脚本没有做任何c优化
下一步做一些cython的优化,比如固定变量的类型,这样可以加速脚本,优化的好的话,拥有c的速度也不是不可能的