[发明专利]一种构造终端应用行为的运行时模型的方法有效
申请号: | 201910498727.X | 申请日: | 2019-06-10 |
公开(公告)号: | CN110347448B | 公开(公告)日: | 2021-02-12 |
发明(设计)人: | 蔡华谦;黄罡;张颖;刘譞哲 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 构造 终端 应用 行为 运行 模型 方法 | ||
1.一种构造终端应用行为的运行时模型的方法,其特征在于,所述运行时模型包括运行时栈模型和运行时堆模型,所述方法包括构造所述终端应用行为的运行时栈模型的步骤和构造所述终端应用行为的运行时堆模型的步骤;
所述构造所述终端应用行为的运行时栈模型的步骤包括:
在所述终端应用运行时,获取所述终端应用的内存中真正执行的代码,并对所述真正执行的代码进行抽象,生成控制流图;
针对所述控制流图,将需要监测的控制流图输入至预设的行为解释器;
利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动;
在所述终端应用运行时,生成所述栈活动的控制流间的依赖关系,得到所述终端应用行为的运行时栈模型;
所述构造所述终端应用行为的运行时堆模型的步骤包括:
在所述终端应用运行时,生成堆区的初始状态;
生成堆操作活动,得到所述终端应用行为的运行时堆模型;
其中,所述依赖关系包括同步依赖和通信依赖;
在生成所述同步依赖关系时,对于一个方法的结束依赖另一个方法的结束的情况,利用时间戳由后往前寻找其他线程中可匹配的活动,如果找到,则对应于一个同步依赖关系;
对于一个活动的开始依赖另一个活动的结束的情况,先对当前线程进行检查,如果该活动为当前线程中的第一个执行的活动,则该活动是依赖另一个线程结束活动的,否则该活动仅是正常的方法调用,并不依赖另一个线程的活动。
2.如权利要求1所述的方法,其特征在于,所述方法包括类筛选器和活动类型筛选器;其中,所述类筛选器基于包和类名正则匹配的粗粒度筛选,用于去除开发人员不关心的程序活动;所述活动类型筛选器基于活动类型的细粒度筛选,用于去除与开发者不关心的活动类型。
3.如权利要求2所述的方法,其特征在于,所述栈活动的活动类型包括方法开始与方法结束,字段读,数组读和同步指令;
利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动的步骤包括:
利用对所述终端应用的应用行为具有监测功能的行为解释器对所述需要监测的控制流图进行解释执行,获得所述终端应用运行时的活动;
根据所关注的类,利用所述类筛选器对所述终端应用运行时的活动进行粗粒度筛选,生成由所述类引起的栈活动;
针对所述栈活动的活动类型,利用所述活动类型筛选器对所述栈活动进行细粒度筛选。
4.如权利要求1所述的方法,其特征在于,所述构造所述终端应用行为的运行时堆模型的步骤包括:
所述终端应用运行时的活动包括实例化活动、修改活动和回收活动。
5.如权利要求2所述的方法,其特征在于,所述堆操作活动的活动类型包括对象实例化,数组实例化,对象字段写,数组元素写,清除活动和压缩活动;
所述生成堆操作活动的步骤包括:
根据所关注的类,利用所述类筛选器对所述终端应用运行时的活动进行粗粒度筛选,生成由所述类引起的堆操作活动;
针对所述堆操作活动的活动类型,利用所述活动类型筛选器对所述堆操作活动进行细粒度筛选。
6.如权利要求1所述的方法,其特征在于,在生成所述栈活动的控制流间的依赖关系时,对所有与活动间通信依赖相关的类进行总结,并将所述类的相关方法与线程依赖相关的方法一起作为生成通信依赖的知识库。
7.如权利要求1所述的方法,其特征在于,在所述运行时模型生成时,将所述运行时模型中的活动序列存放于可配置大小的缓冲区中,当活动数量超过预设时,则将所述缓冲区的活动进行序列化,并持久化到本地存储中。
8.如权利要求1所述的方法,其特征在于,所述运行时堆模型以巴科斯范式的形式表示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910498727.X/1.html,转载请声明来源钻瓜专利网。