精锐5-Python程序加密流程
加密流程概述
深盾对 .pyc 文件的加密方式是使用 Virbox Protector 加壳工具对 python 安装目录下的 python.exe进行加壳,再使用 DS Protector 对 .pyc 进行加密。整体流程:
- 将python.exe拖入加壳工具
- 选择开发锁及填写api密码
- 设置许可选项
- 设置加密选项
- 设置函数选择
- 设置消息选项
- 执行保护项目
- 打开DSProtector加密pyc
- 替换加密后文件
3.1 打开加壳工具
启动 Virbox 开发者工具盒 -> 点击 "加壳工具" ->点击 "启动加壳工具".
将Python.exe拖入到加壳工具中。
3.2 选择开发锁及填写API密码
插入控制锁或者登录开发者账号(二选一即可)
如果使用控制锁,则需要验证PIN
或者登录开发者账号(需要联网)
填写API密码
从VirboxLM获取API密码
登录 Virbox LM 平台 在【概览】页面,点击【查看开发者信息】,将API密码复制到加壳工具对应位置。
3.3 许可选项配置
许可类型
勾选硬件锁-本地许可
许可设置
- 许可ID:此处填写的许可ID要与发授权码时创建产品时的ID一致。
- 锁芯片号:不设置
- 后台检测间隔(秒):表示每隔多少秒对运行程序进行检测是否存在对应许可,如果没有那么就会提示错误,或者退出。如果后台检测时间设为0s,那么后台就不会进行检测许可的操作
- 检测锁插拔消息:软锁不勾选此设置。表示程序运行过程中拔掉用户锁时,直接进行许可查找,若找不到对应许可,则弹框提示信息。
许可运行时库
- 可调试:仅可在开发过程勾选,对外发布时不能勾选。如果勾选此选项,使用可调试版(开发版)许可运行时库,禁用许可反调试功能,仅可在开发过程勾选,对外发布时请勿勾选
- 外置:默认不勾选,会将Runtime库和程序打包一起,若勾选会根据程序的系统及架构在同目录下生成Runtim库:slm_runtime.dll,运行加密后程序时,需要将slm_runtime.dll与程序放在同一个目录下。注意:勾选外置会降低安全性,请根据实际情况选择
- 兼容Electron:若您的程序为 Electron 开发,请勾选,python程序请勿勾选
3.4 函数选项
函数选项无需设置
3.5 加密选项
导入表保护、压缩、资源保护不选,**DS按钮打开,设置密码**。
3.6 消息选项
当程序被加密后,程序就与我们 之前创建的许可进行关联,当用户在使用我们的加密的程序时如果触发了一些限制时,会以该界面上的消息进行显示。
3.7 执行保护项目
按照上面步骤配置好加壳工具后,点击 "【保护选中项目】" 即可完成程序的加壳操作。
python.exe.ssp 是配置文件,在后面对 .pyc 加密时会用到;
protected文件夹里的 python.exe 是加壳后的 python.exe 文件,替换到环境中的python.exe 即可。
如果是linux程序,会在protected文件夹下生成python,就是加密后的python,将其替换到linux环境
python.ssp是配置文件,下一步加密py文件使用。
3.8 打开dsProtector加密pyc
在加密选项界面,点击打开DSProtector即可打开DSProtector工具
1.设置ssp文件和输出目录
ssp文件选择上一步生成的python.exe.ssp
输出目录:设置输出目录后,会将加密后的文件输出到该目录下。如果未设置输出目录,会将源文件保存成 .bak文件。
2.添加文件/目录开始保护
设置完输出目录,可点击【添加文件】或者【添加目录】,将py或者pyc文件添加进来,点击【开始保护】提示成功即可打开输出目录查看加密后的pyc文件。
3.9 替换文件
将加密后的python.ssp.exe,重命名为python.exe,替换环境里的python.exe
部署加密后的py和pyc文件。
建议将核心代码编译为 cython模式后再做加密更安全,cython使用方式: https://cython.org/
至此,软件加密操作已经完成,接下来可参考:快速上手4-使用加密后程序