cython混淆加密
Posted luffy5459
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cython混淆加密相关的知识,希望对你有一定的参考价值。
python代码是一种解释型的语言,有了代码和环境就可以执行,它无需编译。如果需要对代码进行混淆,可以借助cython这个库。它的安装很简单,直接运行pip install cython就可以安装。
进行代码混淆之前,还需要一个环境,就是msvc,其实就是visual studio 2017环境安装。
使用cython其实最麻烦的在于vc环境的安装,有了这一步,后面才可以把py文件生成pyd文件,达到加密的目的。
可以准备一个简单的py文件:
hallo.py
def hello(name):
return "hello,%s" % name
def add(a, b):
return a + b
在hallo.py同目录下新建一个setup.py文件
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("hallo.py"))
接着就可以执行如下命令:
python setup.py build_ext
不出意外,运行如下:
C:\\Users\\buejee\\PycharmProjects\\pythonProject>python setup.py build_ext
Compiling hallo.py because it changed.
[1/1] Cythonizing hallo.py
C:\\Users\\buejee\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\Cython\\Compiler\\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: C:\\Users\\buejee\\PycharmProjects\\pythonProject\\hallo.py
tree = Parsing.p_module(s, pxd, full_module_name)
running build_ext
building 'hallo' extension
"D:\\tools\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-IC:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\\include" "-IC:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\\Include" "-ID:\\tools\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\include" "-IC:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\include\\um" "-ID:\\Windows Kits\\10\\include\\10.0.14393.0\\ucrt" "-ID:\\Windows Kits\\10\\include\\10.0.14393.0\\shared" "-ID:\\Windows Kits\\10\\include\\10.0.14393.0\\um" "-ID:\\Windows Kits\\10\\include\\10.0.14393.0\\winrt" "-ID:\\Windows Kits\\10\\include\\10.0.14393.0\\cppwinrt" /Tchallo.c /Fobuild\\temp.win-amd64-cpython-310\\Release\\hallo.obj
hallo.c
"D:\\tools\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\\libs" "/LIBPATH:C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0" "/LIBPATH:C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\\PCbuild\\amd64" "/LIBPATH:D:\\tools\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\lib\\x64" "/LIBPATH:C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.6.1\\lib\\um\\x64" "/LIBPATH:D:\\Windows Kits\\10\\lib\\10.0.14393.0\\ucrt\\x64" "/LIBPATH:D:\\Windows Kits\\10\\lib\\10.0.14393.0\\um\\x64" /EXPORT:PyInit_hallo build\\temp.win-amd64-cpython-310\\Release\\hallo.obj /OUT:build\\lib.win-amd64-cpython-310\\hallo.cp310-win_amd64.pyd /IMPLIB:build\\temp.win-amd64-cpython-310\\Release\\hallo.cp310-win_amd64.lib
正在创建库 build\\temp.win-amd64-cpython-310\\Release\\hallo.cp310-win_amd64.lib 和对象 build\\temp.win-amd64-cpython-310\\Release\\hallo.cp310-win_amd64.exp
正在生成代码
已完成代码的生成
构成成功,生成的pyd文件在build目录下:
这个文件虽然名字叫hallo.cp310-win_amd64.pyd,但是你可以像hallo.py文件一样调用。
而这个pyd文件就是经过加密之后的文件,类似dll,可以反汇编,但是不能反编译。
以上是关于cython混淆加密的主要内容,如果未能解决你的问题,请参考以下文章