一、简介
Python 语言写的程序无需编译成二进制文件代码,可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行,这使得 Python 程序更加易于移植。
通过打包工具(py2exe、PyInstaller 等)将 Python 脚本打包成可执行文件。不同的打包工具基本都可以通过反编译工具将 exe 文件反编译出源码来。
第一种加密Python源代码的方式,是将.py文件转化为.pyc文件,但这种加密方式很容易被反编译,因此实用性并不高。
第二种加密Python源代码的方式,是将.py文件转化为.so文件,这样加密的可靠性非常高,无法被被人破解,也就很好地保护了源代码。
二、demo
1:环境简介
- 系统:CentOS Linux release 8.1.1911 (Core) 【linux查看命令:cat /etc/redhat-release】
-
python:python3.6
2:Hello,Demo
其中Cython为Python的第三方模块。安装的命令如下:pip3 install cython
我们创建三个文件
2.1 待加密的文件,也就是我们核心业务代码
import datetime class Today(): def get_time(self): print(datetime.datetime.now()) def say(self): print("hello from JC!")
2.2 setup.py 加密方法
from distutils.core import setup from Cython.Build import cythonize setup(ext_modules = cythonize(["mytest.py"]))
2.3 so_test.py 调用mytest文件进行测试
from mytest import Today t=Today() t.get_time() t.say()
python3 so_test.py --测试
python3 setup.py build_ext --加密
生成的so文件一方面对我们的源程序进行了加密,另一方面,我们还能继续调用原来的mytest.py文件中的内容。为了验证此功能,我们先删除mytest.py,再运行so_test.py文件,如下:
三、利用第三方工具
1:Virbox Protector Trial简介
一键加壳工具,提供强大的代码虚拟化、高级混淆与智能压缩技术,保护您的程序免受逆向工程和非法修改,并与您的程序链接在一起,使得您的程序无法离开保护代码正常运行。
2:特点
高级虚拟化:将被保护的程序代码转换为虚拟机代码,程序运行时,虚拟机将模拟程序执行,进入和离开虚拟机都有高级代码混淆。虚拟机配合代码混淆可以达到很好的保护效果,尤其是开发者的私有逻辑。
代码混淆:高级混淆利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。
智能压缩:应用程序的解压缩含有动态密码,让一切自动脱壳工具失效,有效的阻止 .Net、PE 程序的直接反编译,并且有效的防止了加壳后的应用体积膨胀。
3:使用
3.1 下载试用并安装:https://shell.virbox.com/apply.html
3.2 文档教程:https://shell.virbox.com/vpsdocs/index.html
由于需要费用,暂时不考虑这种方案