[发明专利]一种Python脚本混淆、水印的方法及装置有效
| 申请号: | 201810139504.X | 申请日: | 2018-02-11 |
| 公开(公告)号: | CN108363911B | 公开(公告)日: | 2021-10-29 |
| 发明(设计)人: | 赵培源;刘浩杰 | 申请(专利权)人: | 西安四叶草信息技术有限公司 |
| 主分类号: | G06F21/16 | 分类号: | G06F21/16;G06F21/14;G06F21/12 |
| 代理公司: | 西安泛想力专利代理事务所(普通合伙) 61260 | 代理人: | 李思源 |
| 地址: | 710077 陕西省西安市高新区锦*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 python 脚本 混淆 水印 方法 装置 | ||
本发明提供一种Python脚本混淆、水印的方法及装置,其中,一种Python脚本混淆、水印的装置,包括脚本源代码编译单元、解析单元、规则记录单元、优先权设定单元、co_varnames生成单元、封装单元、Loader生成单元、加密单元以及pyc文件生成单元,本发明还提供了一种Python脚本混淆、水印的方法,以提高python程序模块的安全性,并且保护编译后Python脚本不被反编译、水印不能被篡改,且兼容CPython、Jython、IronPython、PyPy等各种python解释器。
技术领域
本发明属于Python脚本处理技术,具体涉及一种Python脚本混淆、水印的方法及装置。
背景技术
Python是一门编程语言,具有开发速度快,第三方扩展完善,代码编写量少等优点,由于Python的上述优点符合对开发效率要求,故Python成为众多软件开发热门语言之一;一般情况下应用程序发布时会将Python代码编译,来加快处理速度和隐藏源代码,用以保证Python代码的安全性。
Python的上述优点,使得Python大大方便了软件的开发,但是,由于Python的源代码只能编译,而不能加密,而使得Python代码一直存在被盗用的问题;并且Python代码编译出的二进制文件可以使用第三方软件反编译回Python源代码,从而使得Python代码存在的被盗用的问题得不到有效的解决。
发明内容
有鉴于此,本发明的主要目的是提供一种Python脚本混淆、水印的方法及装置。
本发明采用的技术方案是:
一种Python脚本混淆、水印的方法,包括如下步骤:
第一步:根据要保护python脚本源代码编译单元生成所有PyCodeObject;
第二步:为PyCodeObject的字节码co_code利用解析单元按照解析的时间顺序依次生成若干OPBLOCK实例,判断OPBLOCK实例中的opcode是否具备跳转,并记录跳转规则;
第三步:依据记录的跳转规则以及生成的若干OPBLOCK实例,保留生成的OPBLOCK实例的时间顺序,将剩余的OPBLOCK实例随机排列;从物理空间上彻底打乱OPBLOCK实例,使反汇编工具无法顺序解析字节码;
第四步:获取PyCodeObject的局部变量名元组co_varnames,替换为不合法的变量名;
第五步:通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames;
第六步:生成混淆的Loader,对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,最终替换Loader中的compressed_encrypted_data以便Loader在启动后动态解密和解压;
第七步:生成混淆后的pyc文件。
优选的,在第二步中跳转规则为:判断跳转是否为相对跳转或者是否直接跳转、跳转是否为无条件或者是否有条件跳转,按照OPBLOCK的跳转顺序和跳转的条件记录规则并设定优先权。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安四叶草信息技术有限公司,未经西安四叶草信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810139504.X/2.html,转载请声明来源钻瓜专利网。





