[发明专利]一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法有效
申请号: | 201710075113.1 | 申请日: | 2017-02-13 |
公开(公告)号: | CN106897620B | 公开(公告)日: | 2020-05-15 |
发明(设计)人: | 张妍;彭贵;王雅哲 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 杨学明;顾炜 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 恶意 行为 函数 调用 应用程序 安全 可视化 分析 方法 | ||
1.一种基于恶意行为函数调用图的安卓应用程序安全可视化分析方法,其特征在于包括如下步骤:
(1)生成函数调用图:反编译Android APK,用节点表示基本代码块,节点间的有向调用边表示控制流路径,生成APK的函数调用图,即Call Graph(CG);对函数调用图中的节点,根据节点中的类名、方法名、代码以及分类规则为节点分类并添加标签值,得到一张新图称之为添加标签值的函数调用图;该图中节点共有9种分类,具体如下:
A.第1类为普通节点,分类规则为:2至9类以外的节点,没有标签值;
B.第2类为活动Activity节点,分类规则为:节点中代码的类继承于活动Activity,方法名为onCreate(),标签值为:活动Activity;
C.第3类为服务Service节点,分类规则为:节点中代码的类继承于服务Service,方法名为onCreate(),标签值为:服务Service;
D.第4类为广播接收器Broadcast Receiver节点,分类规则为:节点中代码的类继承于Broadcast Receiver,方法名为OnReceive,标签值为:Broadcast Receiver这个广播接收器监听的广播;
E.第5类为用户行为user-behavior节点,分类规则为:节点中代码属于用户触发的事件,标签值为:该节点的方法名;
F.第6类为事件event节点,分类规则为:节点中代码属于用户触发事件以外的事件,标签值为:该节点的方法名;
G.第7类为额外的被调用者callee-extra节点,分类规则为:节点中代码的方法名属于用户自定义的(caller,callee)对列表中callee类中的方法名,标签值为:该节点的方法名;
H.第8类为调用者caller节点,分类规则为:包含调用用户自定义的(caller,callee)对列表中callee类节点函数的节点,调用callee类节点的函数集合根据Android操作系统变化以及用户自定义(caller,callee)对列表进行调整,标签值为:调用callee类节点所用到的函数名;
I.第9类为危险接口riskyapi节点,分类规则为:节点中代码使用了用户自定义的敏感应用程序编程接口API列表中的API,敏感API列表用户根据自身需要进行定义,标签值为:代码中的敏感API;
(2)拆分多属性节点:将步骤(1)所得的添加标签值的函数调用图中多属性节点拆分为多个节点,使得每个节点只包含原多属性节点的一个标签值;将所有多属性节点拆分后,得到一张新图称之为经过拆分的函数调用图;
(3)添加隐式调用边:在步骤(2)所得的经过拆分的函数调用图中,为存在隐式调用关系的节点之间添加调用边;得到一张新图称之为添加隐式调用边的函数调用图;这种根据隐式调用关系添加的调用边称之为隐式调用边;
所述步骤(3)中,为存在隐式调用关系的节点之间添加调用边的方法为:
(31)对于每一个代码中包含启动活动Activity的节点,它属于调用者caller,查找到它启动的活动Activity节点,被启动的Activity节点为该调用者caller节点对应的用户自定义的(caller,callee)对列表中callee节点,为该调用者caller节点与其对应的callee节点之间添加一条调用边;
(32)对于每一个代码中包含启动服务Service的函数的节点,它属于调用者caller,查找到它启动的服务Service节点,被启动的服务Service节点为该调用者caller节点对应的用户自定义的(caller,callee)对列表中callee节点,为该调用者caller节点与其对应的callee节点之间添加一条调用边;
(33)对于每一个代码中包含注册Broadcast Receiver的节点,它属于调用者caller,查找到它注册的Broadcast Receiver,被注册的Broadcast Receiver节点为该caller节点对应的callee节点,为该调用者caller节点与其对应的callee节点之间添加一条调用边;
(34)对于每一个代码中包含发送广播函数的节点,它属于调用者caller,查找到接收该调用者caller节点发送的广播的Broadcast Receiver节点,接收该调用者caller节点发送的广播的Broadcast Receiver节点为该调用者caller节点对应的callee节点,为该调用者caller节点与其对应的callee节点之间添加一条调用边;
(35)对于每一个额外的被调用者callee-extra类节点,它属于callee,找到它的方法名,节点中代码的方法名是这个方法名对应的caller的节点是这个callee节点对应的caller节点,为该caller节点与其对应的callee节点之间添加一条调用边;
(36)为在同一个Android组件的生命周期内,状态转换的节点对之间添加一条调用边;
(37)为触发user-behavior和event的节点与被其触发的节点之间添加一条调用边;
(38)为发送消息到消息队列和从消息队列中接收消息的节点对之间添加一条调用边;
(4)裁剪:对步骤(3)所得的添加隐式调用边的函数调用图进行裁剪,删除不直接或者间接调用riskyapi类节点的非riskyapi类节点,得到一张新图称之为经过裁剪的函数调用图;
(5)添加颜色和尺寸:为步骤(4)所得的经过裁剪的函数调用图中的节点根据节点类型设置尺寸和颜色,得到经过裁剪及自定义设置的函数调用图,即PMCG;
(6)采用现有或自开发的可视化界面,利用可视化软件打开PMCG的文件,可视化展示PMCG,协助用户分析判断是否存在恶意行为,具体方法如下:方法如下:
(51)调用可视化软件打开PMCG的文件;
(52)用户根据PMCG图中节点函数代码、节点之间的调用关系以及riskyapi类节点包含的敏感API信息,判断程序中是否存在隐私窃取、远程控制、恶意传播、资费消耗、系统破坏、诱骗欺诈、恶意扣费这些恶意行为。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710075113.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种SSR上主动防御日志告警方法
- 下一篇:一种恶意文件的检测方法及系统