1. 程式人生 > >python 指令碼防破解-pyd編譯-python27+win7-64環境

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):

  1. #coding:utf-8
  2. def hello():
  3.     print("Hello world")
  4.     input("<press ENTER to quit>")

在該目錄下,再新建一個py檔案(命名為setup.py):

  1. from distutils.core import setup
  2. from Cython.Build import cythonize
  3.  
  4. setup(
  5.   name = 'Hello world app',
  6.   ext_modules = cythonize("test.py"),
  7. )

接著,再開啟cmd,跳到該目錄並執行如下命令:

  1. python setup.py build_ext --inplace

20170117/20170117172444694.jpg

最終生成如下檔案:

20170117/20170117172512429.jpg

其中,build是生成過程使用到的臨時檔案。test.c也是臨時檔案,可以開啟看看傳說中的D語言程式碼。

test.pyd是我們所需的檔案。

pyd檔案可以像平常一樣使用。例如,我進入python,如下程式碼:

20170117/20170117172808419.png

 

 

當然還有打包exe:

使用pyinstaller也是沒問題的,實際測試通過

 

 生成exe

 

 

 

至此,pyd的加密完成了,當然,這只是借用了cython的編譯,python指令碼沒有做任何c優化

下一步做一些cython的優化,比如固定變數的型別,這樣可以加速指令碼,優化的好的話,擁有c的速度也不是不可能的