[发明专利]基于模拟执行的Native动态链接库分析方法及系统在审
申请号: | 202310354866.1 | 申请日: | 2023-04-04 |
公开(公告)号: | CN116594861A | 公开(公告)日: | 2023-08-15 |
发明(设计)人: | 傅建明;徐贯虹 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/445 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 肖明洲 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 模拟 执行 native 动态 链接 分析 方法 系统 | ||
1.一种基于模拟执行的Native动态链接库分析方法,其特征在于,包括以下步骤:
步骤1:以符号执行框架angr为基础,以angr的扩展模块为补充,利用python语言作为符号执行分析框架与其扩展模块以及其他Android程序分析工具、工具与Native动态链接库环境间的连接脚本,构建模拟执行工具;
步骤2:对JNI进行建模,抓取Native底层系统调用、线程API函数调用;
根据JNI的原理与实现机制,在Native层构建JNI的模型,包括Java环境变量的结构体定义与传递、Java对象的模拟、JNI中API函数的声明以及其调用流程的模拟,接入步骤1中构建的模拟执行平台框架;
利用模拟执行工具中的JNISimProcedure功能,实现JNI中API函数相应的调用流程模拟,拦截模拟执行过程中JNI的API调用,使其运行工具中编写的模拟流程,以实现对Native库中JNI操作的跟踪和分析;
利用模拟执行工具中的JNISimProcedure功能,对Native库调用的底层API进行抓取,包括系统调用、文件读写操作、线程处理API;
使用模拟执行工具中的Record模块记录Native动态链接库与Java层交互的JNI API调用行为,包括函数调用栈、参数传递、返回值信息;
步骤3:根据Android应用使用Native库的方法以及JNI机制,模拟Native动态链接库加载过程,通过模拟执行去除二进制文件内控制流混淆与数据混淆,满足关键JNI调用的控制流依赖与数据依赖,同时在模拟执行过程中记录JNI交互行为;
步骤4:使用模拟执行工具对Android应用中Native动态链接库进行分析,生成Native动态链接库的分析结果报告,获取Java与Native注册函数映射结果、JNI交互行为记录,及Native动态链接库是否存在.init_array的初始化过程以及程序保护手段。
2.根据权利要求1所述的于模拟执行的Native动态链接库分析方法,其特征在于:步骤1中,符号执行工具基于现有工具angr,符号执行引擎使用angr内置的Unicorn引擎支持;
解析Android应用的apk文件,利用angr中的Loader模块,加载解析apk文件得到的Native动态链接库文件,分析其对应架构以及指令集;
利用angr提供的SimProcedure功能,扩展为JNISimProcedure用于JNI API调用模拟;
通过python使用androguard逆向工具补充Java层的native方法信息,使其具备分析Java与Native注册函数映射、JNI行为记录的功能,并在模拟执行分析时记录相应结果。
3.根据权利要求1所述的于模拟执行的Native动态链接库分析方法,其特征在于:步骤2中所述模拟执行工具中的JNISimProcedure功能,实现JNI中API函数相应的调用流程模拟,拦截模拟执行过程中JNI的API调用;为满足模拟执行过程中的依赖关系,需JNI API调用返回恰当的返回值,若返回值为基本数据类型,则使用angr符号执行构造满足即可;若返回值为Java String类对象,特别处理用angr构造字符串返回值,其他Java对象则构造对应Java Object满足;
处理JNI中用于绑定Native动态注册函数的API调用RegisterNatives,根据其函数定义在模拟执行时解析其函数参数信息,获取动态注册的Native函数的Java方法与Native函数映射关系,具体为:
(1)Android APK逆向分析工具androguard解析Java层中的Native方法信息,包括方法名与签名,通过签名匹配Native层的静态注册函数;
(2)模拟执行Native动态链接库的初始化部分代码,去除控制流混淆与数据混淆,模拟执行构造后续关键JNI调用依赖;
(3)模拟执行过程中调用RegisterNatives的JNISimProcedure时,根据API定义解析运行时函数参数,获取Native动态注册函数信息,包括注册方法名、方法签名以及对应Native注册函数地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310354866.1/1.html,转载请声明来源钻瓜专利网。