北京科技大学何杰获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网获悉北京科技大学申请的专利一种基于操作码与控制流联合混淆的Python字节码保护方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN119066631B 。
龙图腾网通过国家知识产权局官网在2025-10-17发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202411123131.9,技术领域涉及:G06F21/14;该发明授权一种基于操作码与控制流联合混淆的Python字节码保护方法是由何杰;刘梓瑄;齐悦设计研发完成,并于2024-08-15向国家知识产权局提交的专利申请。
本一种基于操作码与控制流联合混淆的Python字节码保护方法在说明书摘要公布了:本发明提供一种基于操作码与控制流联合混淆的Python字节码保护方法及装置,涉及Python代码混淆保护技术领域。所述基于操作码与控制流联合混淆的Python字节码保护方法包括:获取Python操作码文件;采用操作码替换方法进行处理,通过操作码合并方法,获得新的Python操作码;根据新的Python操作码进行指令插入,采用重编译后的Python解释器运行Python操作码文件,得到初步混淆后的Python字节码文件;采用同义指令替换方法进行替换处理,获得混淆后的字节码序列;采用插入不透明谓词方法,对混淆后的字节码序列进行处理,获得混淆后的Python字节码指令列表;采用指令加花方法对指令列表进行处理,获得最终混淆的字节码序列。采用本发明实施例可提升Python字节码文件执行所需的时间和空间开销。
本发明授权一种基于操作码与控制流联合混淆的Python字节码保护方法在权利要求书中公布了:1.一种基于操作码与控制流联合混淆的Python字节码保护方法,其特征在于,所述方法包括: S1、获取Python操作码文件; S2、根据所述Python操作码文件,采用操作码替换方法对所述Python操作码文件的原始的操作码序列进行处理,通过操作码合并方法,提取出现频次最高的操作码子序列,合并为新的Python操作码; 其中,所述操作码替换方法,用于以码值90为界,将操作码集划分为带参数指令集和不带参数指令集;其中,选取在源码声明文件中具有显式声明与函数调用无关的指令集合,作为替换操作的目标对象; 其中,所述S2的根据所述Python操作码文件,采用操作码替换方法对所述Python操作码文件的原始的操作码序列进行处理,通过操作码合并方法,提取出现频次最高的操作码子序列,合并为新的Python操作码,包括: S21、根据所述Python操作码文件,采用操作码替换方法对原始的操作码进行处理,通过分组随机混淆策略对操作码指令进行分类,获得多个分组; S22、对于每个分组,采用随机打乱的方式重新排列操作码顺序,获得混淆后的操作码码值映射关系; S23、根据混淆后的操作码码值映射关系,统计出现高频次的操作码序列; S24、根据高频次的操作码序列,采用窥视孔优化技术对高频次的操作码序列进行合并操作,获得新的Python操作码; S3、根据所述新的Python操作码进行指令插入,采用重编译后的Python解释器运行所述Python操作码文件,得到初步混淆后的Python字节码文件; S4、根据所述初步混淆后的Python字节码文件,采用同义指令替换方法进行替换处理,通过循环指令进行循环展开,获得混淆后的字节码序列; 其中,所述S4的根据所述初步混淆后的Python字节码文件,采用同义指令替换方法进行替换处理,通过循环指令进行循环展开,获得混淆后的字节码序列,包括: 根据所述初步混淆后的Python字节码文件,对初步混淆后的Python字节码文件进行指令遍历,条件分支指令和函数调用指令,选择程序执行语义等价的程度代码块对原操作码进行替换;循环指令,采用循环展开的方式修改原程序的代码逻辑结构,获得混淆后的字节码序列; S5、采用插入不透明谓词方法,对所述混淆后的字节码序列进行处理,获得混淆后的Python字节码指令列表; S6、采用指令加花方法对所述混淆后的Python字节码指令列表进行处理,获得最终混淆的字节码序列; 其中,所述S6的指令加花方法,包括:叠加跳转方法和虚假循环方法; 其中,叠加跳转方法具体的实施步骤包括: 1对原始程序中的基本块集合记为originBBS; 2对其中任意一个基本块实施拆分操作,划分成两子块包括:第一子块b1和第二子块b2; 3创建新的虚假块集合bogusBBS,在严格维持程序原有执行语义不变的前提下,建立虚假块集合bogusBBS内虚假基本块与第一子块b1和第二子块b2之间的跳转链接关系; 其中,虚假循环方法具体的实施步骤包括: 1构建一组表示循环结构的基本块集合loopBBs,原始程序基本块集合originBBs; 2对原始程序基本块集合为originBBs中的每一个基本块,按照不影响程序执行结果的逻辑划分原则,将每一个基本块分割为两个新的基本块,包括:第一基本块b1和第二基本块b2;其中,在分割过程中要确保程序的原始语义完整保留; 3在分割后的两个新的基本块之间,嵌入由loopBBs集合代表的虚假循环结构基本块; 其中,所述S6的采用指令加花方法对所述混淆后的Python字节码指令列表进行处理,包括: S61、根据混淆后的Python字节码指令列表,采用叠加跳转方法对原始程序中的基本块进行拆分操作,获得第一子块和第二子块; S62、创建新的虚假块集合,建立虚假块集合内虚假基本块与第一子块和第二子块之间的跳转链接关系; S63、构建一组循环结构的基本块集合;将原始程序基本块集合按照逻辑分割为第一基本块和第二基本块; S64、根据第一基本块和第二基本块,在第一基本块和第二基本块内部之间嵌入循环结构的基本块集合。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人北京科技大学,其通讯地址为:100083 北京市海淀区学院路30号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
以上内容由龙图腾AI智能生成。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

皖公网安备 34010402703815号
请提出您的宝贵建议,有机会获取IP积分或其他奖励