[发明专利]指令定位方法和装置有效
申请号: | 201911403984.7 | 申请日: | 2019-12-30 |
公开(公告)号: | CN111159663B | 公开(公告)日: | 2022-04-29 |
发明(设计)人: | 孙林泽;郭弘;张磊;黄剑;张辉极 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 厦门福贝知识产权代理事务所(普通合伙) 35235 | 代理人: | 陈远洋 |
地址: | 361000 福建省厦门市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 指令 定位 方法 装置 | ||
本申请实施例公开了指令定位方法和装置。该方法的一具体实施方式包括:确定待分析程序的输入数据或输出数据所使用的内存段;基于内存段,执行如下指令定位步骤:去除内存段的读写权限;运行待分析程序;响应于检测到读写数据异常信号,确定对应的读写指令在待分析程序中的位置,其中,读写数据异常信号用于表征向内存段写入数据时产生异常,读写指令用于对内存段进行读写操作;响应于针对读写指令的逻辑分析结束,且确定需要继续进行逻辑分析,确定内存段中的数据的来源内存段,并基于来源内存段继续执行指令定位步骤。该实施方式具有定位准确无遗漏,快速高效,操作简单,无任何环境配置或依赖,可以于分析时同步完成,不影响分析效率等特点。
技术领域
本申请实施例涉及计算机技术领域,具体涉及指令定位方法和装置。
背景技术
当前,移动App安全防护技术发展迅速,其中代码混淆作为应用最广泛,通用程度最高的技术,已经成为每个应用必须增加的一种防护策略。
例如,ollvm混淆技术,其原理是基于llvm编译器,直接对native层汇编指令进行扩充混淆。通过增添大量无效跳转及代码片段,混淆全部函数名称及变量名称,单个函数体内指令集混淆后可能膨胀数十倍之大,并且基于llvm编译器特点,被混淆函数流程也会进行大幅优化,但不论是混淆还是优化均不影响函数功能及最终结果的计算。
针对ollvm强混淆保护,目前有效的分析手段很少,且分析门槛较高,如目前最常用的分析手段是基于虚拟执行的指令精简。虚拟执行是利用虚拟化技术(qemu)制作特殊容器(沙箱),将受保护应用或算法置于容器内执行,在执行时对指令进行分析,提取实际执行到的关键跳转及代码片段并进行记录(往往仅记录关键跳转,记录全部代码片段性能损耗太大),最终由记录的跳转及代码片段形成完整流程逻辑图。还原后的算法主体逻辑准确,与原始算法流程相比差异较小,后期可对指令精简后算法直接分析。
基于虚拟执行的指令精简技术将逻辑分析与精简混淆指令相分离,在开始分析前需要进行大量工作对混淆代码(函数)做指令精简。前期沙箱的设计及内部实验环境配置较为复杂,且沙箱的应用支持度是该技术的一大问题,在一定程度上支持部分App的算法精简。综上所述,该方法实际操作流程复杂,环境依赖较严重,且应用支持度不高是其主要缺点。
发明内容
本申请实施例的目的在于提出了一种改进的指令定位方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请实施例提供了一种指令定位方法,该方法包括:确定待分析程序的输入数据或输出数据所使用的内存段;基于内存段,执行如下指令定位步骤:去除内存段的读写权限;运行待分析程序;响应于检测到读写数据异常信号,确定对应的读写指令在待分析程序中的位置,其中,读写数据异常信号用于表征向内存段写入数据时产生异常,读写指令用于对内存段进行读写操作;响应于针对读写指令的逻辑分析结束,且确定需要继续进行逻辑分析,确定内存段中的数据的来源内存段,并基于来源内存段继续执行指令定位步骤。
在一些实施例中,读写数据异常信号由预设的异常信号捕获处理程序检测。
在一些实施例中,确定对应的读写指令在待分析程序中的位置,包括:向程序调试器发送自定义信号;程序调试器响应自定义信号,将待分析程序暂停于读写指令的位置。
在一些实施例中,在确定对应的读写指令在待分析程序中的位置之后,方法还包括:恢复内存段的读写权限。
在一些实施例中,待分析程序是经过代码混淆处理的程序。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911403984.7/2.html,转载请声明来源钻瓜专利网。