一种函数执行环境构建方法、装置、电子设备及存储介质制造方法及图纸

技术编号:28622170 阅读:14 留言:0更新日期:2021-05-28 16:17
本公开提供了一种函数执行环境构建方法、装置、电子设备及存储介质,相比传统的在安卓系统环境下的漏洞发现方法来说,在模拟环境运行库文件可以在执行分析过程中方便的修改寄存器和内存参数,动态修改指令执行路径和动态添加执行指令,提高执行分析的效率。

【技术实现步骤摘要】
一种函数执行环境构建方法、装置、电子设备及存储介质
本公开涉及软件
,尤其涉及一种函数执行环境构建方法。
技术介绍
近年来,手机应用产业急速发展,每年产量呈指数型增长,据统计,我国主要应用商店中的应用软件数量已累计超过1000万。手机应用在给大众生活带来方便的同时,也给不法分子提供了可乘之机。目前来说,针对安卓系统应用进行漏洞发掘时,主要是在安卓系统环境下对库文件进行执行分析,这种执行分析需要多次运行库文件中相同的代码片段,且在安卓环境中,若需要执行时动态修改内存参数,添加执行指令,步骤十分繁琐,分析效率较低。
技术实现思路
针对上述技术问题,本公开实施例提供一种函数执行环境构建方法,技术方案如下:根据本公开实施例的第一方面,提供一种函数执行环境构建方法,包括:解析目标库文件以获取目标函数代码块,执行所述目标函数;若接收到执行过程中产生的调用信号,则根据所述调用信号的类型,通过对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号所需的返回值,以继续本次模拟执行流程;若接收到执行过程中产生的调用错误信息,则停止本次执行流程,并根据所述调用错误信息,在执行环境中添加针对本次调用的实现逻辑,在添加完毕后重新开始本次执行流程;若本次执行流程正常执行至结束,且执行过程未接收到调用错误信息,则判定所述目标函数的执行环境构建完成。可选的,所述获取解析目标库文件以获取目标函数代码块,执行所述目标函数,包括:根据预先编写的库文件解析逻辑对目标库文件进行解析,根据解析结果在所述目标库文件中提取出目标函数代码块,所述解析结果至少包括所述目标库文件的符号表和依赖树;将所述目标函数代码块映射到内存中,通过读取所述内存对目标函数代码块进行执行。可选的,所述执行所述目标函数后,还包括:接收到执行过程中产生的对相关库文件的依赖信号后,在预先封装的库文件集合中查找本次依赖的库文件;若查找到本次依赖的库文件,则加载并执行所述本次依赖的库文件,以继续目标函数的执行环境构建流程;若未查找到本次依赖的库文件,则上报错误信息,以根据所述错误信息在预先封装的库文件集合中增加本次依赖的库文件。可选的,所述根据所述调用信号的类型在对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号的返回值,包括:判断本次调用信号的调用类型,若所述调用类型为系统调用,则继续判断本次系统调用为通用型系统调用或文件读写型系统调用;在所述调用类型为通用型系统调用的情况下,在通用系统调用逻辑集合中获取并返回本次调用所需的调用结果,所述通用系统调用逻辑集合预先通过hook方式封装;在所述调用类型为文件读写型系统调用的情况下,将本次调用信号上报给Java开发工具,通过java开发工具设置的文件读写接口获取针对本次文件读写的实现逻辑,并基于所述实现逻辑返回所需的调用结果。可选的,所述根据所述调用信号的类型在对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号的返回值,包括:判断本次调用信号的调用类型,若所述调用类型为JNI调用,则继续判断本次JNI调用为签名验证调用或特定函数调用;在所述调用类型为签名验证调用的情况下,通过hook方式返回预先获取的真实签名值;在所述调用类型为特定函数调用的情况下,将本次调用信号上报给Java开发工具,通过java开发工具设置的JNI接口获取针对本次特定函数调用的实现逻辑,并基于所述实现逻辑返回所需的调用结果。可选的,所述接收到执行过程中产生的调用错误信息后,停止所述执行流程,解析所述调用错误信息并根据解析结果增加针对本次调用的实现逻辑,包括:接收到执行过程中产生的调用错误信息后,停止所述执行流程,并解析所述调用错误信息;在所述调用错误类型为文件读写型系统调用,且不存在对应文件读写型系统的实现逻辑的情况下,基于报错信息在java开发工具中添加对应本次特文件读写型调用的实现逻辑,并将所述实现逻辑通过Java开发工具的文件读写接口开放调用;在所述调用错误类型为特定函数调用,且不存在对应本次特定函数调用的实现逻辑的情况下,基于报错信息在java开发工具中添加对应本次特定函数调用的实现逻辑,并将所述实现逻辑通过Java开发工具的JNI接口开放调用。可选的,所述方法还包括:利用Java开发工具中预定义的调试接口,通过hook方式在目标函数的关键代码段增加断点;执行所述目标函数,在执行到断点处暂停时,获取工具内存中的目标函数运行数据,通过分析所述运行数据,实现对所述函数的调试。根据本公开实施例的第二方面,提供一种函数执行环境构建装置,包括:目标函数获取单元,被配置为解析目标库文件以获取目标函数代码块,执行所述目标函数;调用实现单元,被配置为接收到执行过程中产生的调用信号后,根据所述调用信号的类型,通过对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号的返回值,以继续本次执行流程;调用错误处理单元,被配置为接收到执行过程中产生的调用错误信息后,停止本次执行流程,并根据所述调用错误信息,在执行环境中添加针对本次调用的实现逻辑,在添加完毕后重新开始本次执行流程环境构建单元,被配置为确定本次执行流程正常执行至结束,且执行过程未接收到调用错误信息的情况下,判定所述目标函数的执行环境构建完成。可选的,所述目标函数获取单元,具体用于:根据预先编写的库文件解析逻辑对目标库文件进行解析,根据解析结果在所述目标库文件中提取出目标函数代码块,所述解析结果至少包括所述目标库文件的符号表和依赖树;将所述目标函数代码块映射到工具的内存中,以通过读取所述内存对目标函数代码块进行执行。可选的,所述函数执行环境构建装置,还包括:依赖实现单元,被配置为接收到执行过程中产生的对相关库文件的依赖信号后,在预先封装的库文件集合中查找本次依赖的库文件;若查找到本次依赖的库文件,则加载并执行所述本次依赖的库文件,以继续目标函数的执行环境构建流程;若未查找到本次依赖的库文件,则上报错误信息,以根据所述错误信息在预先封装的库文件集合中增加本次依赖的库文件。可选的,所述调用实现单元,具体用于:判断本次调用信号的调用类型,若所述调用类型为系统调用,则继续判断本次系统调用为通用型系统调用或文件读写型系统调用;在所述调用类型为通用型系统调用的情况下,在通用系统调用逻辑集合中获取并返回本次调用所需的调用结果,所述通用系统调用逻辑集合预先通过hook方式封装;在所述调用类型为文件读写型系统调用的情况下,将本次调用信号上报给Java开发工具,通过java开发工具设置的文件读写接口获取针对本次文件读写的实现逻辑,并基于所述实现逻辑返回所需的调用结果。可选的,所述调用实现单元,具体用于:判断本次调用信本文档来自技高网...

【技术保护点】
1.一种函数执行环境构建方法,其特征在于,包括:/n解析目标库文件以获取目标函数代码块,执行所述目标函数;/n若接收到执行过程中产生的调用信号,则根据所述调用信号的类型,通过对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号所需的返回值,以继续本次执行流程;/n若接收到执行过程中产生的调用错误信息,则停止本次执行流程,并根据所述调用错误信息,在执行环境中添加针对本次调用的实现逻辑,在添加完毕后重新开始本次执行流程;/n若本次执行流程正常执行至结束,且执行过程未接收到调用错误信息,则判定所述目标函数的执行环境构建完成。/n

【技术特征摘要】
1.一种函数执行环境构建方法,其特征在于,包括:
解析目标库文件以获取目标函数代码块,执行所述目标函数;
若接收到执行过程中产生的调用信号,则根据所述调用信号的类型,通过对应的实现接口获取针对本次调用的实现逻辑,基于所述实现逻辑获取所述调用信号所需的返回值,以继续本次执行流程;
若接收到执行过程中产生的调用错误信息,则停止本次执行流程,并根据所述调用错误信息,在执行环境中添加针对本次调用的实现逻辑,在添加完毕后重新开始本次执行流程;
若本次执行流程正常执行至结束,且执行过程未接收到调用错误信息,则判定所述目标函数的执行环境构建完成。


2.如权利要求1所述的函数执行环境构建方法,其特征在于,所述获取解析目标库文件以获取目标函数代码块,执行所述目标函数,包括:
根据预先编写的库文件解析逻辑对目标库文件进行解析,根据解析结果在所述目标库文件中提取出目标函数代码块,所述解析结果至少包括所述目标库文件的符号表和依赖树;
将所述目标函数代码块映射到内存中,通过读取所述内存对目标函数代码块进行执行。


3.如权利要求1所述的函数的执行环境构建方法,其特征在于,所述执行所述目标函数后,还包括:
接收到执行过程中产生的对相关库文件的依赖信号后,在预先封装的库文件集合中查找本次依赖的库文件;
若查找到本次依赖的库文件,则加载并执行所述本次依赖的库文件,以继续目标函数的执行环境构建流程;
若未查找到本次依赖的库文件,则上报错误信息,以根据所述错误信息在预先封装的库文件集合中增加本次依赖的库文件。


4.一种基于权利要求1所述的函数的执行环境的函数调试方法,其特征在于,所述方法还包括:
利用Java开发工具中预定义的调试接口,通过hook方式在目标函数的关键代码段增加断点;
执行所述目标函数,在执行到断点处暂停时,获取工具内存中的目标函数运行数据,通过分析所述运行数据,实现对所述函数的调试。


5.一种函数执行环境构建装置,其特征在于,包括:
目标函数获取单元,被配置为解析目标库文件以获取目标函数代码块,执行所述目标函数;
调用实现单元,被配置为接收到执行过程中产生的调用信号后,根据所述调用信号的类型,通过对应的实现接口...

【专利技术属性】
技术研发人员:段锦涛
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1