[发明专利]一种混淆代码的方法、装置以及介质在审
| 申请号: | 202210427858.0 | 申请日: | 2022-04-22 |
| 公开(公告)号: | CN114662063A | 公开(公告)日: | 2022-06-24 |
| 发明(设计)人: | 范益 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
| 主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/52 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 鲁梅 |
| 地址: | 215100 江苏省苏州*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 混淆 代码 方法 装置 以及 介质 | ||
本申请公开了一种混淆代码的方法、装置以及介质,应用于代码混淆领域。该方法先读取待混淆的原始代码,并分析原始代码的逻辑顺序得到各代码块的有向图;再根据有向图将各代码块放入预先设置的多维矩阵中得到代码块矩阵,最后编译代码块矩阵就可以得到能够执行的混淆代码。代码块矩阵中存在有在每一行上只包括有效代码块的维度,有效代码块为执行算法在执行混淆代码时,在对应的行中需要使用的代码块;执行算法在执行混淆代码时,每次在代码块矩阵中选择其中一个位置上的代码块进行执行。本申请提供的混淆代码的方法,最终得到混淆代码实际上是一个多维的代码块矩阵,代码块矩阵中每行或每列都不一定拥有全部代码块,提高了混淆代码的安全性。
技术领域
本申请涉及代码混淆领域,特别是涉及一种混淆代码的方法、装置以及介质。
背景技术
代码混淆亦称花指令,其目的是将计算机程序的代码,转换成一种在功能上等价,但是难于阅读和理解的形式。代码混淆可以应用于程序源代码,也可以应用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。目前的混淆代码均可通过扁平化技术放到一行,如ollvm中的应用。代码执行时,通过预先定义的单个算法得到执行中的代码块的下一块代码的标记值,可以直接定位到对应的代码块。
但是,该混淆代码中所有的代码块均在同一行中,并通过单个算法实现相互之间的联系,这种混淆代码结构简单,可直接获取到该行的所有代码块之后,再根据代码混淆技术所使用的单个算法得到各代码块的执行顺序,最终破解该混淆代码,可见此类混淆代码的安全性不高。
由此可见,如何提高混淆代码的安全性,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种混淆代码的方法、装置以及介质,以提高混淆代码的安全性。
为解决上述技术问题,本申请提供一种混淆代码的方法,包括:
读取待混淆的原始代码;其中,所述原始代码包括多个代码块;
分析所述原始代码的逻辑顺序得到各所述代码块的有向图;
根据所述有向图将各所述代码块放入预先设置的多维矩阵中得到代码块矩阵;其中,所述代码块矩阵中存在有在每一行上只包括所述代码块中的有效代码块的维度;所述有效代码块为执行算法在执行混淆代码时,在对应的行中需要执行的所述代码块;所述执行算法在执行所述混淆代码时,每次在所述代码块矩阵中选择其中一个位置上的所述代码块进行执行;
编译所述代码块矩阵得到所述混淆代码。
优选地,所述根据所述有向图将各所述代码块放入预先设置的多维矩阵中得到代码块矩阵包括:
通过BFS算法将各所述代码块放入预先设置的所述多维矩阵中得到所述代码块矩阵。
优选地,所述多维矩阵为二维矩阵;
将所述有向图中的环和环下游的顶点对应的所述代码块放入所述二维矩阵包括:
筛选出所述环和环下游的所述顶点对应的所述代码块;
将所述环和环下游的所述顶点对应的所述代码块放入所述二维矩阵的其中一个所述维度的每一行上;
所述筛选出所述环和环下游的所述顶点对应的所述代码块包括:
判断所述有向图中是否存在入度为零的所述顶点;
若是,则滤除入度为零的所述顶点对应的所述代码块;
将入度为零的所述顶点的出发边的另一端的所述顶点的入度减一,并返回所述判断所述有向图中是否存在入度为零的所述顶点的步骤;
若否,则将剩余的所述代码块作为所述环和环下游的所述顶点对应的所述代码块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210427858.0/2.html,转载请声明来源钻瓜专利网。





