[发明专利]一种控制流平坦化自动检测方法、装置有效
申请号: | 202110792580.2 | 申请日: | 2021-07-14 |
公开(公告)号: | CN113254068B | 公开(公告)日: | 2021-10-22 |
发明(设计)人: | 齐增田 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F8/74 | 分类号: | G06F8/74 |
代理公司: | 济南舜源专利事务所有限公司 37205 | 代理人: | 张营磊 |
地址: | 215100 江苏省苏州*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 控制 平坦 自动检测 方法 装置 | ||
本发明提供一种控制流平坦化自动检测方法、装置,所述方法包括如下步骤:查找用于表示节点支配关系和层级关系的中间支配块;以查找出的所有中间支配块为节点构建支配树;以构建的支配树为基础,确定支配节点;计算确定的支配节点支配的基本块的控制流平坦化相似度,若计算的相似度大于或等于设定阈值,判断该基本块所在的代码是被控制流平坦化处理后的代码。本文提出的方法简单有效,而且能够在主流的逆向工具中实现,帮助逆向工程师快速定位和去除控制流平坦化,还原代码本来的控制流结构。
技术领域
本发明涉及代码分析技术领域,具体涉及一种控制流平坦化自动检测方法、装置。
背景技术
商业软件和恶意病毒软件的作者经常使用代码混淆来保护特定代码块,防止逆向工程分析出代码的逻辑。通常来说,知道了哪块代码使用了混淆技术,可以以此作为出发点,对这块代码进行更详细更深入的分析。控制流平坦化是最热门的混淆技术之一,在不改变源代码功能的前提下,将代码中的顺序控制流转换成跳转控制流,消除基本块之间的前后执行顺序特征,将基本块放置在同一个层级下进行展示。
在逆向工程领域,大家对如何生成混淆代码以及如何去除混淆代码,还原本来控制流研究比较热门,但是对于如何检测代码中究竟哪一块代码使用了何种混淆技术,公开方法还是比较少。现有的方法针对已经混淆的代码,如何获取真实块、序言和无用块进行讨论,并没有说明如何确定混淆代码的位置。也就是如何检测出二进制代码中究竟哪一块代码使用了控制流平坦化是需要解决的技术问题。
发明内容
现有的方法针对已经混淆的代码,如何获取真实块、序言和无用块进行讨论,如何检测出代码中究竟哪一块代码使用了控制流平坦化并没有公开,本发明提供一种控制流平坦化自动检测方法、装置以解决上述技术问题。
本发明的技术方案是:
一方面,本发明技术方案提供一种控制流平坦化自动检测方法,每一个基本块为一个节点,包括如下步骤:
查找用于表示节点支配关系和层级关系的中间支配块;
以查找出的所有中间支配块为节点构建支配树;
以构建的支配树为基础,确定支配节点;
计算确定的支配节点支配的基本块的控制流平坦化相似度,若计算的相似度大于或等于设定阈值,判断该基本块所在的代码是被控制流平坦化处理后的代码。
进一步的,所述的查找用于表示节点的支配关系和层级关系的中间支配块的步骤具体包括:
建立支配关系表;
在支配关系表中查找距离被支配节点最近的支配节点,确认该支配节点为中间支配块。确定了中间支配块,即可以确定整个代码函数的支配链。
进一步的,所述的建立支配关系表的步骤包括:
从入口节点到出口节点按照执行顺序确定支配节点和被支配节点;
将所有支配节点和被支配节点的关系列表输出形成支配关系表。
为了方便以支配节点和中间支配块为基础,引出更具代表性的结构支配树。
进一步的,所述的以构建的支配树为基础,确定支配节点的步骤包括:
在支配树中通过查找反向边的方法确定基本块控制流中是否有循环,若是,确定支配节点,否则,继续执行步骤:在支配树中通过查找反向边的方法确定基本块控制流中是否有循环。
支配树是代表支配关系的紧凑型结构,以树状图的形式展示。以所有中间支配块为节点,可以构造出支配树。
进一步的,所述的计算确定的支配节点支配的基本块的控制流平坦化相似度,若计算的相似度大于或等于设定阈值,判断该基本块所在的代码是被控制流平坦化处理后的代码的步骤具体包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110792580.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种化工炼化安全生产用气体采样装置
- 下一篇:一种家纺用品加工的床单固定机构