排行榜 统计
  • 文章总数:1688 篇
  • 评论总数:5 条
  • 分类总数:8 个
  • 最后更新:昨天 21:09

Virbox Protector 保护流程(Python)

本文阅读 8 分钟
首页 安全资讯 正文

Python程序介绍#

Python是一种高级的、解释型的、面向对象的编程语言,python代码简洁易读,并且Python语言跨平台,拥有丰富的标准库和第三方库,深受开发人员的喜爱。

python程序常见扩展名

操作系统文件类型
windows/Linux/mac等系统py
pyc
pyd/pyz/pyx等

Python程序的安全性问题#

由于Python是一个面向字符串流的解释执行的特点,引发了安全问题,使用者执行Python程序时, python解释器需要通过Python源码来解释执行,即便是编译成pyc,也有工具可以直接反编译回Python代码,与源代码几乎大差不差, 因此Python软件的安全性变得尤为关键。

我们的python保护是一个字节码级别的保护技术,它能保证python脚本被直接反编译和修改的风险,确保Python脚本在部署后依然安全可靠。

支持范围#

特点#

1.字节码级别的保护:我们的保护技术在Python字节码级别进行保护,在整个Python程序执行过程中,没有源代码的存在,并且python反汇编函数无法正常反汇编出字节码。

2.实时加密和解密: Python字节码是被加密的,仅在执行之前进行解密,代码体执行完毕后会重新加密字节码,从而避免了脚本在内存中一次性全部dump出来。

3.高兼容性: 保护后的脚本大部分情况下能直接和之前未被保护的脚本无缝替换。

4.兼容多Python版本: 保护后的脚本可以在3.6-3.11之间的Python版本执行。

5.无缝替换的要求:Python解释器可以正确加载 virbox_pyruntime包里的C扩展库virbox_pyruntime包, 但virbox_pyruntime库需要有可写权限。

6.和DS方式保护进行对比:

dsprotectorpyprotector
部署需要对python保护,加入ds插件后,替换执行的python无需修改python
安全性可以从内存中dump出python源代码在内存中以代码对象(二进制)形式体现

语言环境#

1.Python保护环境:

3.6-3.11版本

只支持py文件,不支持pyc的保护。

2.保护后的Python运行环境:

3.6-3.11版本

注:如果操作系统上不支持python3.8,则无法加壳成功。

运行环境#

操作系统x86x64arm32arm64
Windows✔️✔️N/A暂不支持
Linux✖️✔️✔️✔️
macOSN/A✔️N/A后续支持

执行过程#

保护的python文件执行的过程:

1.加载virbox_pyruntime模块;

2.调用virbox_pyruntime模块中virbox函数, 校验脚本是否被修改等,修复字节码加密函数,字节码解密函数,字符串/属性解密函数,检验函数;

3.执行代码对象;

4.在函数头解密字节码体;

5.在函数尾加密字节码体。

基础功能介绍#

函数校验#

运行时校验函数,防止在内存动态替换。

模块校验#

运行时校验导入的Python模块,防止被替换。

字符串加密#

加密python代码中的字符串,提升逆向难度。

属性名称加密#

加密python代码中的类属性。

局部变量混淆#

将python函数中的局部变量重命名为无意义的字符串。

字节码动态加密#

仅在函数执行时解密。

防篡改#

禁止被保护的脚本添加其他的代码(注释可以添加)。

代码对象名称混淆#

重命名代码对象的名称,防止推断代码逻辑

操作指引#

界面操作#

1.将包含py文件的文件夹拖入到加壳工具界面;

2.下载Python扩展包,网址:https://shell.virbox.com/down.html;

3.点击安装扩展包,直接加载下载的python_extension.zip即可。

2.加密选项处根据自己需求选择;

3.Python Files选项处,会列出后缀名为py的文件;

Python密码:

1)当加密的py文件之间存在依赖关系时,若两次加壳的密码设置不同,则保护后的py文件无法通用,密码设置相同则可以通用;2)当加密的py文件之间不存在依赖关系时,若两次加壳的密码设置不管相同与否,保护的后py文件可正常使用。

4.选择保护,则会生成XXX_protected文件夹,其中项目结构中会多出了一个virbox_pyruntime包,执行保护后的代码必须依靠virbox_pyruntime包中的C扩展库。

注意:1.若执行的py文件同目录下没有此文件夹,则会运行失败。2.可以将virbox_pyruntime文件夹放到python环境的目录下,则保护后的py同目录下不需要virbox_pyruntime文件夹也可以运行。

命令行操作#

命令行工具环境#

python的命令行工具pyprotector_con 的默认路径位于:

Windows:正式版:C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe试用版:C:\Program Files\senseshield\Virbox Protector 3 Trial\bin\pyprotector_con.exeLinux:正式版:/usr/share/virboxprotector/bin/pyprotector_con试用版:/usr/share/virboxprotector-trial/bin/pyprotector_conmacOS:正式版:/Applications/Virbox Protector 3.app/Contents/MacOS/bin/pyprotector_con试用版:/Applications/Virbox Protector 3 trial.app/Contents/MacOS/bin/pyprotector_con

命令行参数#

1.参数选项

选项命令行默认选项
安装扩展包--install=<zip_path>0
指定py保护后运行的python版本--target-python-version=0
函数检验--function-check=<value>0
模块检验--module-check=<value>0
字符串加密--str-enc=<value>0
属性名加密--attr-enc=<value>0
局部变量重命名--local-var-rename=<value>0
字节码动态加密--bc-dyn-enc=<value>0
过滤指定的文件不保护--excludes=0
输出文件夹路径-o=<output_path>0
python命令行工具版本-V

2.命令行举例

1)命令安装扩展包

"C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe" --install=D:\Desktop\python_extension.zip

2)过滤嵌套的文件夹里的py

"C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe" <py-demo> --excludes=<py-demo>/<dirs> -o <py-demo_protected>

3)过滤单个py文件

"C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe" <py-demo> --excludes=*/demo.py -o <py-demo_protected>

或者--excludes=指定py的全路径也可过滤。

4)对程序进行保护(开启函数检查/字符串加密/字节码动态加密选项)

"C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe" <py-demo> --function-check=1 --str-enc=1 --bc-dyn-enc=1 -o <py-demo_protected>

5)对程序进行保护后,需要指定的python版本才能运行(比如指定版本为3.9,则必须python3.9版本才能运行加密后的py文件)

"C:\Program Files\senseshield\Virbox Protector 3\bin\pyprotector_con.exe" <py-demo> --target-python-version=3.9 -o <py-demo_protected>

运行部署#

上述的保护方式不区分环境,保护后的py文件和保护前的py文件运行方式一样。

性能结果#

结果:

字符串加密、属性加密是最影响性能的,其他功能基本上没有什么影响。

是因为字符串加密、属性加密的数量比较多导致的,但是整个程序运行过程中,只解密一次,所以首次运行会有影响,运行过程中不会有影响。

以支持向量(support vector)算法为例,使用cProfile工具记录调用几百万次函数的时间对比结果如下:

注:黑色虚线为原程序运行结果,其他为加密时的各个选项功能的运行结果。

本文经授权后发布,本文观点不代表立场
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
-- 展开阅读全文 --
搜索引擎优化怎么做才会有收录排名?
« 上一篇 12-06
解决Spimes 主题首页显示友情链接但内页没显示
下一篇 » 12-08