【技术实现步骤摘要】
一种移动应用程序动态加载行为监控方法及装置
本专利技术属于Android应用程序监控
,使用的主要方法是进程注入和InlineHook,特别涉及一种移动应用程序动态加载行为监控方法及装置。
技术介绍
近年来,移动设备在人们的工作和生活中变得越来越受欢迎,根据中国互联网络信息中心(CNNIC)发布的第四十次《中国互联网络发展状况统计报告》显示,截至2017年6月,中国网民规模达到7.51亿,占全球网民总数的五分之一。其中,手机网民规模达7.24亿,较2016年底增加2830万人。网民中使用手机上网的比例由2016年底的95.1%提升至96.3%。而台式电脑、笔记本电脑的使用率均出现下降,手机不断挤占其他个人上网设备的使用。随着移动设备和移动互联网的快速发展,Google推出的Android操作系统已然成为世界上最受欢迎的操作系统。数据显示,截止2017年底Android在全球智能手机市场上的份额占到了86%。但是,伴随着Android智能设备的广泛应用,诸多的安全风险也随之而来。移动设备包含用户的许多隐私数据,比如联系人信息、短信、电子邮件以及信用卡号等,同时通过移动设备还可以获取用户的地理位置,发送付费短信以及拨打电话等。另外,在线支付的功能也给人们带来了很多的便利,因此,手机更加成为人们生活中必不可少的工具,移动设备的安全问题也就更加重要。同时,由于Android操作系统的普遍性和自身源码的开放性,其已成为犯罪分子针对移动设备进行恶意攻击的主要攻击目标。针对Android平台的恶意应用程序数量也在飞速增加,目前已有超过一百万种的恶意应用程序是针对A ...
【技术保护点】
1.一种移动应用程序动态加载行为监控方法,其特征在于,包括如下步骤:在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;记录并输出监控日志;对用户指定的应用程序或PID进程动态加载的文件进行备份。
【技术特征摘要】
1.一种移动应用程序动态加载行为监控方法,其特征在于,包括如下步骤:在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;记录并输出监控日志;对用户指定的应用程序或PID进程动态加载的文件进行备份。2.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,所述执行初始化脚本,对系统关键函数进行拦截替换包括:在Android设备开机后,执行初始化脚本文件,通过进程追踪函数向Zygote进程和Zygote64进程注入so文件,对特定系统关键函数进行拦截替换,完成应用程序动态加载行为监控的初始化工作。3.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,以如下两种方式之一指定要监控的应用程序:(1)在用户指定要监控的应用程序的UID后,启动相应的应用程序,对相应的应用程序的动态加载行为进行监控;(2)在启动相应的应用程序后,用户指定要监控的应用程序对应的PID进程,对相应的PID进程及其子进程的动态加载行为进行监控。4.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,所述记录并输出监控日志包括:在用户指定的应用程序运行时,调用被拦截系统函数的监控函数,在监控函数中完成对用户指定应用程序或PID进程的监控,以特定格式记录监控日志;所述对用户指定的应用程序或PID进程动态加载的文件进行备份包括:在用户指定的应用程序运行时,调用被拦截系统函数的监控函数,在监控函数中完成对动态加载文件的备份,将备份文件保存在特定的系统目录中。5.一种移动应用程序动态加载行为监控装置,其特征在于,包括:监控控制单元,用于在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;动态加载行为监控单元,用于用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;监控日志生成及文件备份单元,用于记录并输出监控日志,同时对用户指定的应用程序或PID进程动态加载的文件进行备份。6.根据权利要求5所述移动应用程序动态加载行为监控装置,其特征在于,所述监控控制单元具体包括:注入so模块:用于通过进程追踪函数来向Zygote进程和Zygote64进程注入so文件;Hook模块:用于对特定系统关键函数进行拦截替换,在Android设备开机后,执行初始化脚本文件,通过进程追踪函数来向Zygote进程和Zygote64进程注入so文件,对特定系统关键函数进行拦截替换,完成应用程序动态加载行为监控的初始化工作。7.根据权利要求6所述移动应用程序动态加载行为监控装置,其特征在于,所述注入so模块通过ptrace函数来附着进程,然后向宿主进程注入so文件,从而达到监控以及宿主进程关键函数挂钩的目的,具体包括以下步骤:(11)使用ptrace函数attach上目标进程;(12)使目标进程装载用来注入的libxxx.so文件;(13)使目标进程的执行流程跳转到注入的代码块并执行,实现监控;(14)使用ptrace函数的detach释放目标进程;所述Hook模块在注入so模块将so文件成功注入目标进程后,执行注入的so文件中的函数,实现监控,具体包括以下步骤:(21)获取要监控的原系统函数的入口地址;(22)保存原系统函数的若干条汇编指令;(23)用跳转指令替换原系统函数头部的前若干条汇编指令,改变原系统函数执行流程,使原系统函数在执行时首先跳转到自定义的代理函数执行;(24)对原系统函数使用到的寄存器值进行保存;(25)执行自定义的代理函数,实现监控;(26)恢复(24)中保存的寄存器值,并将(22)中保存的原系统函数前若干条指令写回;(27)执行原系统函数的正常调用流程,保存函数返回值;(28)重新用(23)中的跳转指令替换原系统函数的前若干条指令,使得该系统函数在下一次被调用时,依旧能够跳转到自定义的代理函数中去;(29)代理函数返回(27)中保存的原系统函数返回值,目的是保证代理函数和原系统函数的执行效果相同,代理函数执行完毕。8.根据权利要求7所述移动应用程序动态加载行为监控装置,其特征在于,所述动态加载行为监控单元具体包括:动态加载so文件监控模块:用于对指定的应用程序或PID进程的so文件动态加载行为进行监控;调用so文件监控模块:用于对指定的应用程序或PID进程的so文件调用行为进行监控;动态加载dex文件监控模块:用于对指定的应用程序或PID进程的dex文件动态加载行为进行监控。9.根据权利要求8所述移动应用程序动态加载行为监控装置,其特征在于,所述动态加载so文件监控模块用于监控应用程序动态加载的so文件的全路径文件名、操作时间戳以及操作进程的pid、uid,针对32位和64位的Android应用程序分别采用不同的监控方法,具体包括以下步骤:针对32位的Android应用程序:(31)执行dlopen函数;(32)执行libhook_dlopen_32.so文件中的hook_dlopen;(33)判断dlopen函数是Arm格式还是Thumb格式,如果是Arm格式,则跳转到(34);否则,跳转到(35);(34)执行Arm格式对应的跳转指令,跳转到(36);(35)执行Thumb格式对应的跳转指令,跳转到(36);(36)执行my_dlopen;(38)写回dlopen函数被替换掉的原本的前三条汇编指令;(39)执行orig_dlopen,保存返回值;(310)重新用相应的跳转指令替换dlopen函数的前三条汇编指令,使得下一次调用dlopen函数时,仍然执行相应的跳转指令,跳转到my_dlopen;(311)返回o...
【专利技术属性】
技术研发人员:陶敬,王平辉,韩婷,白云鹏,王铮,李佳璇,郑宁,栾庆鑫,孙立远,柳哲,林杰,
申请(专利权)人:西安交通大学,
类型:发明
国别省市:陕西,61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。