操作環境-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的速度也不是不可能的