[发明专利]对象管理方法及装置有效
申请号: | 201711435711.1 | 申请日: | 2017-12-26 |
公开(公告)号: | CN108132817B | 公开(公告)日: | 2020-07-10 |
发明(设计)人: | 曹伟鹏;谢导;叶美华 | 申请(专利权)人: | 广州酷狗计算机科技有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 郭晶 |
地址: | 510660 广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 对象 管理 方法 装置 | ||
1.一种对象管理方法,其特征在于,所述方法包括:
当第一对象已经释放时,将所述第一对象的首地址内存空间存储的原始类替换为监控类,所述第一对象是指待监控的任一对象,所述首地址内存空间是指所述第一对象占用的内存段的首地址对应的内存空间,所述原始类是指所述第一对象所属的类,所述监控类是指用于监控已释放的第一对象的消息的类;
当接收到消息发送指令时,访问所述消息发送指令携带的野指针对应的首地址内存空间,得到所述监控类,所述野指针是指引用所述第一对象的指针,所述野指针指向所述首地址;
确定所述监控类的对象,得到第二对象;
由所述第二对象响应所述消息发送指令携带的消息;
所述由所述第二对象响应所述消息发送指令携带的消息,包括:
由所述第二对象拦截所述消息;或,
由所述第二对象将所述消息转发给第三对象,所述第三对象是指用于接收已释放的第一对象的消息的对象;或,
由所述第二对象替换所述消息中的参数,并将替换后的消息转发给第三对象。
2.根据权利要求1所述的方法,其特征在于,所述由所述第二对象响应所述消息发送指令携带的消息之前,所述方法还包括:
向所述第一对象占用的内存段中所述首地址内存空间以外的内存空间填充预设数据。
3.根据权利要求1所述的方法,其特征在于,所述由所述第二对象响应所述消息发送指令携带的消息之后,所述方法还包括:
确定调用所述消息发送指令的函数;
在调用栈中记录所述函数的名称和/或地址。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一对象的首地址内存空间存储的原始类替换为监控类之前,所述方法还包括:
当任一对象释放时,获取所述对象所属的类;
当所述类属于预设白名单时,确定所述对象为第一对象,所述预设白名单包括至少一种待监控的类。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一对象的首地址内存空间存储的原始类替换为监控类,包括:
当所述监控类已创建对象时,将所述第一对象的首地址内存空间存储的原始类替换为监控类;或,
当所述监控类未创建对象时,基于所述监控类创建第二对象,将所述第一对象的首地址内存空间存储的原始类替换为监控类。
6.一种对象管理装置,其特征在于,所述装置包括:
替换模块,用于当第一对象已经释放时,将所述第一对象的首地址内存空间存储的原始类替换为监控类,所述第一对象是指待监控的任一对象,所述首地址内存空间是指所述第一对象占用的内存段的首地址对应的内存空间,所述原始类是指所述第一对象所属的类,所述监控类是指用于监控已释放的第一对象的消息的类;
访问模块,用于当接收到消息发送指令时,访问所述消息发送指令携带的野指针对应的首地址内存空间,得到所述监控类,所述野指针是指引用所述第一对象的指针,所述野指针指向所述首地址;
确定模块,用于确定所述监控类的对象,得到第二对象;
响应模块,用于由所述第二对象响应所述消息发送指令携带的消息;
所述响应模块,用于由所述第二对象拦截所述消息;或,由所述第二对象将所述消息转发给第三对象,所述第三对象是指用于接收已释放的第一对象的消息的对象;或,由所述第二对象替换所述消息中的参数,并将替换后的消息转发给第三对象。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
填充模块,用于向所述第一对象占用的内存段中所述首地址内存空间以外的内存空间填充预设数据。
8.根据权利要求6所述的装置,其特征在于,所述确定模块,还用于确定调用所述消息发送指令的函数;所述装置还包括:
记录模块,用于在调用栈中记录所述函数的名称和/或地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州酷狗计算机科技有限公司,未经广州酷狗计算机科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711435711.1/1.html,转载请声明来源钻瓜专利网。