Cython加密python程式碼防止反編譯

lytcreate發表於2023-10-12

本方法適用於Linux環境下:

1.安裝庫Cython

pip3 install Cython==3.0.0a10

 

2.編寫待加密檔案:hello.py

import random

def ac():
    i = random.randint(0, 5)
    if i > 2:
        print('success')
    else:
        print('failure')

 

3.編寫加密指令碼

import os
import glob
from distutils.core import setup
from Cython.Build import cythonize
# 需要加密py檔案所在資料夾,批次加密
path_list = ["/opt/test/te", "/opt/test"]
# 需要去除的py檔案
reduce_list = ["setup.py"]
py_files = []
for path in path_list:
    for root, dirs, files in os.walk(path):
        for file in glob.glob(os.path.join(root, "*.py")):
            for rds in reduce_list:
                if rds not in file:
                    py_files.append(file)

setup(ext_modules=cythonize(py_files), language_level=3)

 

4.執行加密命令

python3 setup.py build_ext --inplace

 

5.執行結果:會生成build資料夾、同名.c檔案和同名.so檔案,其中.so檔案是我們需要的檔案,只保留.so檔案,其餘的全部刪除

生成的檔名為 hello.cpython-38-x86_64-linux-gnu.so 可以把他重新命名為hello.so, 只要保證跟原檔案同名,且為.so格式即可

 

6.使用方式:與Python導包保持一致 from hello import ac

安全性:.so檔案反編譯後變成c語言,幾乎不容易再變回原來的python程式碼。

 

相關文章