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