首页 > 编程语言 >加密锁(加密狗)保护Python应用程序防止被反编译

加密锁(加密狗)保护Python应用程序防止被反编译

时间:2023-11-20 13:55:46浏览次数:34  
标签:反编译 加密 加密狗 Python Envelope 解释程序 应用程序 保护

开发套件使用的是原HASP/SafeNet/金雅拓/泰雷兹加密狗最新开发工具
加密锁(加密狗)对python程序代码加密保护,保护自己软件版权被F法使用。
(注:本文为Python程序保护的纯技术贴,欢迎留言探讨)

开发工具下载:

​​http://www.chinadlp.com/?list-DriveDownload.html​​

概述

使用圣天诺加密锁保护Python应用程序的方法:

1.Sentinel LDK Envelope 带 Sentinel LDK 数据文件保护(DFP)

此方法结合使用SentinelLDK加密锁Envelope外壳加密工具与版本2数据保护模式的数据文件加密工具(dfcrypt)来保护Python应用程序。这种方法的原理是将应用程序的Python代码视为受Envelope保护的Python解释程序访问的加密数据文件

2.Cython (https://cython.org/)后使用Sentinel LDK Envelope

此方法结合使用Cython与Sentinel LDK Envelope 来保护Python应用程序。这首先要将敏感的Python模块转换为原生模块(PYD/SO文件),然后使用Sentinel Envelope进行保护。

通常,上述第二种方法(“Cython”)可提供更高的安全级别,因为附加的编译步骤降低了代码的抽象级别,使Sentinel LDK Envelope可以将应用程序作为代码(而非数据)进行保护。这样可获得更复杂的保护措施。但是,第二种方法的设置稍微复杂一些,因为它需要Cython和有效的C编译器。

说明:这两种方法都不能保护应用程序的启动脚本,只能保护其Python模块。因此,建议将应用程序的实际入口点放在一个Python模块中并仅使用启动脚本调用该模块。

以下是详细介绍保护方法

第一种方法:

使用数据文件保护来保护Python应用程序
可以使用Sentinel LDK Envelope结合数据文件加密工具(dfcrypt)(版本2数据保护模式)保护Python应用程序。这种方法的原理是将应用程序的Python代码视为受Envelope保护的Python解释程序访问的加密数据文件。

保护Python应用程序包含以下步骤:

1.收集应用程序的Python字节码(PYC)模块。

2.使用Envelope外壳加密工具保护Python解释程序并包含数据文件保护模块,从而使解释程序可以执行加密的数据文件。

3.使用dfcrypt工具保护应用程序的Python字节码。

可以使用将受保护的解释程序与加密的代码封装在一起的方式分发受保护的应用程序(例如使用pyinstaller)。

说明:一定要保护编译的Python字节码(PYC文件),而不是明文Python源码(PY文件)。Python解释程序先将PY转换成PYC文件,然后再写到磁盘上以加快后续执行速度。如果提供的是受保护的PY文件而不是PYC文件,Python解释程序会生成明文PYC文件,然后将其写到磁盘,然后即可对其进行分析。

您可以在Windows或Linux下执行保护流程。本主题介绍了如何在Windows机器上执行这个流程。

代码示例
安装Sentinel LDK后,可在以下位置找到演示如何在Windows下保护Pyhton应用程序的示例:

%homepath%\Documents\Thales\Sentinel LDK version\Samples\Envelope\Python

此文件夹包含以下文件和文件夹:

sample_app

此文件夹中包含一个简单的Python命令行应用程序,包括一个开始脚本(main.py)和三个模块(moduleA.py,moduleB.py,moduleC.py)。示例应用程序使用在Python2和Python3下运行完全相同的编写方式。

data_file_protection

此文件夹包含以下文件:

•build_dfp_protected_python2_app.bat

此脚本使用试用开发商代码(DemoMA)、Sentinel LDK Envelope、dfcrypt和pyinstaller在Windows下为Python2保护和封装示例应用程序。

•envelope_python2.prjx

这是一个Envelope项目文件,指定了使用上面的脚本保护Python2解释程序(python27.dll)的设置。

•build_dfp_protected_python3_app.bat

此脚本使用试用开发商代码(DemoMA)、Sentinel LDK Envelope、dfcrypt 和pyinstaller在Windows下为Python3保护和封装示例应用程序。

•envelope_python3.prjx

这是一个Envelope项目文件,指定了使用上面的脚本保护Python3解释程序(python37.dll)的设置。

保护Python应用程序的流程

使用下面的步骤创建一个受保护的应用程序。

1.收集应用程序的字节码模块

使用"-d noarchive"开关为明文应用程序运行pyinstaller。例如:

pyinstaller -d noarchive main.py

此步骤收集应用程序的依赖关系并将它们编译成为Python字节码。“-d noarchive” 开关指示pyinstaller将编译的Python模块保留为独立的文件,这是后面的加密步骤的要求

此步骤的结果就是包含您的应用程序及其所有依赖关系的独立文件夹(dist/<application_name>)。

说明:较旧的pyinstaller版本不支持开关"-d noarchive"。如果有需要,请如下使用pip更新pyinstaller的版本:

pip install pyinstaller --upgrade

2.使用Envelope保护Python解释程序

使用SentinelLDK Envelope(数据文件保护版本2)保护Python解释程序共享库(DLL/SO)和数据文件保护支持。

在常规选项卡上,确保选择启用数据文件保护。确保已显示版本2。这可以将数据文件保护模块插入受保护的解释程序。这样受保护的Python解释程序可以执行加密的Python模块。

3.加密应用程序的Python字节码
使用dfcrypt工具和版本2数据保护模式加密应用程序的敏感字节码模块。例如:

dfcrypt --encrypt --encver:2 “–key:A secret” --vcf:DEMOMA.hvc --fid:0 dist/<application_name>/moduleA.pyc encrypted/moduleA.pyc

dfcrypt --encrypt --encver:2 “–key:A secret” --vcf:DEMOMA.hvc --fid:0 dist/<application_name>/moduleB.pyc encrypted/moduleB.pyc

虽然它不是强制性的,但建议您使用开关“–key:”为应用程序的所有模块指定公共加密密钥。这样的缓存逻辑可以大幅提高使用很多受保护模块的应用程序的启动速度。如果您不使用"–key:"开关,dfcrypt会为各个文件选择一个随机密钥。

加密字节码模块完成后,将原始文件更换为加密后的相应文件。例如:

copy encrypted/moduleA.pyc dist/<application_name>/

copy encrypted/moduleB.pyc dist/<application_name>/

有关更多信息,请参见 Sentinel LDK软件保护和授权指南中对于dfcrypt的描述。

分发应用程序

将受保护的输出文件复制到文件夹dist/<application_name>。

要部署受保护的应用程序,请复制文件夹dist/<application_name>到目标机器。

然后即可通过执行dist/<application_name>/<application_name>启动受保护的应用程序。
第二种方法待续……
————————————————

标签:反编译,加密,加密狗,Python,Envelope,解释程序,应用程序,保护
From: https://www.cnblogs.com/2022lq/p/17843770.html

相关文章

  • 圣天诺加密锁(加密狗)几个想知道的问题全在这里了
     1、加密狗能实现什么?加密狗是对软件代码进行加密保护,加密保护后的软件必须有(硬件或软件)加密狗才能使用,同时有效地防止代码被反编译。C#、java、Python等编程语言全是可以加密的。2、我从来没有使用过加密狗怎么办?使用加密狗加密保护自己的软件,是不需要写代码的,用开发工......
  • [944] Extracting tables from a PDF in Python
    ToextracttablesfromaPDFinPython,wecanuseseverallibraries.Onepopularchoiceisthe tabula-pylibrary,whichisaPythonwrapperforApachePDFBox.Hereisastep-by-stepguidetogetstarted:1.Installtherequiredlibraries:pipinstalltab......
  • 【4.0】Python高级之匿名函数
    【一】匿名函数的定义在Python里有两类函数:第一类:用def关键词定义的正规函数第二类:用lambda关键词定义的匿名函数Python使用lambda关键词来创建匿名函数,而非def关键词lambdaargument_list:expressionlambda:定义匿名函数的关键词。argument_list:函......
  • 【7.0】Python高级之生成器
    【一】什么是生成器?Python中的生成器是一种特殊的迭代器,可以在需要时生成数据,而不必提前从内存中生成并存储整个数据集。通过生成器,可以逐个生成序列中的元素,而无需一次性生成整个序列。生成器在处理大数据集时,具有节省内存、提高效率的特点。【二】生成器有两种创建方式【......
  • 【6.0】Python高级之迭代器
    【一】迭代器介绍迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代whileTrue:msg=input('>>:').strip()......
  • 【Python入门教程】Python中函数的用法和意义
    ​        在Python中,函数是一种可重用的代码块,它可以被多次调用以执行特定的任务。函数可以帮助我们组织代码,使其更易于阅读和调试,同时还可以提高代码的可重用性和可维护性。一、函数的定义        在Python中,函数使用def关键字进行定义,语法如下:deffunctio......
  • Python中用requests时遇到的错误警告解决方案
    最近,我在Python2.7.6(Ubuntu14.04.2LTS)环境中将requests库的版本从2.5.3升级到2.6.0,却遇到了’AtrueSSLContextobjectisnotavailable’警告。每当我在Python2.7.6环境中尝试使用requests库访问’github’时,都会看到这个警告。mkvirtualenvrequests260-irequests==2.6.0......
  • Python 另存为 excel
    复制一个excel注意openpyxl-3.0.10fromopenpyxl.reader.excelimportload_workbookif__name__=='__main__':wb=load_workbook('source.xlsx')wb.save('样式表.xlsx')其他版本异常错误openpyxl:Valuemustbeeithernumericalor......
  • Python pandas 自动自动调整列宽 和加边框
    注意openpyxl-3.0.10版本代码importnumpyasnpimportpandasaspdfromopenpyxl.stylesimportBorder,Sidefromopenpyxl.utilsimportget_column_letterimportpandasaspdimportopenpyxlif__name__=='__main__':excel_file=pd.ExcelFile(&#......
  • Java开发者的Python快速进修指南:函数进阶
    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。匿名函数在Python中,匿名函数也被称为lambda函......