[发明专利]一种基于代码虚拟化的Python程序加密保护系统与方法有效
申请号: | 201911189495.6 | 申请日: | 2019-11-28 |
公开(公告)号: | CN110929234B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 施羊梦燊;费奕铭;鞠方舟 | 申请(专利权)人: | 施羊梦燊;费奕铭;鞠方舟 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14;G06F21/60 |
代理公司: | 济南诚智商标专利事务所有限公司 37105 | 代理人: | 朱晓熹 |
地址: | 211899 江苏省南京市浦口区江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 虚拟 python 程序 加密 保护 系统 方法 | ||
本发明提供了一种基于代码虚拟化的Python程序加密保护系统与方法,本发明通过设置pyc分析模块、code对象反汇编模块、加密虚拟机生成模块、code对象后处理模块、code对象生成模块以及pyc生成模块,在不对Python解释器层进行任何修改以及不加载任何第三方dll、so库的前提下,尽可能的高强度保护Python代码,破坏原有pyc文件结构,致使通用反编译工具在架构上无法应用于被加密后的pyc文件,提高程序安全性,实现Python脚本语言所写软件防篡改、防伪造。
技术领域
本发明涉及软件程序加密技术领域,特别是一种基于代码虚拟化的Python程序加密保护系统与方法。
背景技术
目前,市面上使用的私有或公开商业化的Python代码保护方案,大致可分为以下几种类型:
1、对Python源代码进行变量名、函数名混淆,或进行加密处理后使用exec语句执行。该中方法没有改变源代码流程和结构本身,因为Python脚本语言的特殊性,被混淆的代码依然是明文存在,且可被直接查看。虽然丢失了标识符名称之后的Python脚本更加难以阅读,但依旧可以很容易找出关键位置的算法,并可直接修改相关代码,起不到实质上的保护作用。对于将Python脚本进行加密并调用exec的方式,由于可以直接拦截compile与exec语句,从而可以直接获得原始的Python源码。此方式虽然更大程度上加大了分析的复杂度,但相反的却更容易被完全解密,甚至是被做出通用解密工具,直接获取到完整的源码。
2、将Python编译为pyc之后进行分发。由于目前业界对Python的研究较为成熟,而Python的编译机制存在着高度的规律性,因此目前市面上已有“pyretic”、“uncompyle”等通用pyc反编译工具,反编译准确率非常高。将Python编译成pyc之后依旧可以被简单的反编译,无实际保护作用。此方式可直接通过Python的自带模块py_compile完成,知晓率较高,但安全性几乎没有。
3、使用nuitka、pyinstaller、py2exe等第三方库打包成独立的可执行文件。该方式首先遇到的问题即为跨平台问题。例如,用py2exe打包的Python软件,将只能在Windows平台上运行,无法用于Linux系统。同时,打包为可执行之后,因需要附带一个完整的Python解释器以及相关Python自带模块,软件体积大幅度增大。且由于py2exe、pyinstaller等软件均为开源工具,其工作原理非常清晰明了。市面上甚至已经出现了如“pyinstallerrebuilder”等通用反编译、修改后重打包的工具,使得此类方法依旧没有很好的实际保护效果。
4、对pyc本身的co_varnames、co_names等字段混淆后,在co_code中增加花指令并重新生成pyc文件。此方式改良了pyc文件可被轻易反编译的弱点。被修改后的pyc文件不符合Python的正常编译结果,直接导致通用反编译工具报错退出。但这个过程往往是可逆的,即使原始的co_varnames、co_names字段已被抹去,依旧可以通过替换为如var_1、var_2等合法变量名的方式再进行二次处理;而对于co_code中的花指令,由于插花的类型是有限的,可以通过简单的正则表达式予以去除,之后将代码按照流程重排序并修复跳转地址,即可直接送入通用反编译工具进行正常反编译。此方式进一步提高了逆向分析的门槛,但依旧是没有解决原程序流程直接暴露的问题,导致二次处理即可直接反编译。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于施羊梦燊;费奕铭;鞠方舟,未经施羊梦燊;费奕铭;鞠方舟许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911189495.6/2.html,转载请声明来源钻瓜专利网。