[发明专利]代码修复方法及装置、电子设备、计算机可读存储介质有效
申请号: | 201910809755.9 | 申请日: | 2019-08-29 |
公开(公告)号: | CN110673837B | 公开(公告)日: | 2020-11-17 |
发明(设计)人: | 车雄生 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 熊永强;贾允 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 修复 方法 装置 电子设备 计算机 可读 存储 介质 | ||
1.一种代码修复方法,其特征在于,包括:
获取对原始代码进行编译处理后生成的初始动态库;
对所述初始动态库进行代码注入处理以生成修改动态库;
从所述修改动态库中确定带有补丁标签的函数作为补丁函数,并生成所述补丁函数的执行信息;所述执行信息包括与所述补丁函数对应的原生函数的签名标识;
响应于代码执行指令,根据所述执行信息调用所述补丁函数,以对所述原始代码进行修复处理;其中,所述补丁函数包括原生函数的定位信息,所述根据所述执行信息调用所述补丁函数,包括:初始化虚拟机;根据所述执行信息,通过所述虚拟机调用所述补丁函数;根据所述定位信息,通过反射机制确定所述补丁函数中包含的原生函数;执行所述补丁函数的代码段与所述原生函数的代码段,以完成对补丁函数的调用。
2.根据权利要求1所述的代码修复方法,其特征在于,所述对所述初始动态库进行代码注入处理以生成修改动态库,包括:
基于所述初始动态库确定一个或多个代码模块作为待注入模块;
根据所述待注入模块生成配置文件;
根据所述配置文件对所述初始动态库进行代码注入处理,以生成所述修改动态库。
3.根据权利要求2所述的代码修复方法,其特征在于,所述根据所述配置文件对所述初始动态库进行代码注入处理,包括:
获取目标函数库;
根据所述配置文件以及所述目标函数库向所述初始动态库中添加修改代码段,以完成所述代码注入处理;
其中,所述修改代码段包括所述待注入模块的代码执行重定向信息。
4.根据权利要求3所述的代码修复方法,其特征在于,所述根据所述配置文件以及所述目标函数库向所述初始动态库中添加修改代码段,以完成所述代码注入处理,包括:
基于所述目标函数库确定适配器;其中,所述适配器包括函数适配器与接口适配器;
根据所述函数适配器与所述接口适配器生成所述修改代码段;
确定所述初始动态库对应的中间指令;
根据所述配置文件将所述修改代码段添加至所述中间指令,以完成所述代码注入处理。
5.根据权利要求3或4任意一项所述的代码修复方法,其特征在于,在所述完成所述代码注入处理之后,所述方法还包括:
从所述修改动态库中确定经过代码注入处理的函数作为被注入函数;
确定函数映射标识的标识格式;
根据所述标识格式对所述被注入函数添加对应的目标函数映射标识;其中,所述目标函数映射标识用于确定所述被注入函数的函数信息与函数索引之间的映射关系;
确定补丁标签格式,根据所述补丁标签格式对所述被注入函数添加对应的补丁标签,以形成补丁函数。
6.根据权利要求5所述的代码修复方法,其特征在于,所述目标函数映射标识包括键和值,所述根据所述标识格式对所述被注入函数添加对应的目标函数映射标识,包括:
获取所述被注入函数对应的命名空间名称、类名和函数名;
基于所述标识格式,通过所述命名空间名称、所述类名以及所述函数名确定所述目标函数映射标识的键;
将所述被注入函数对应的索引值作为所述目标函数映射标识的值。
7.根据权利要求6所述的代码修复方法,其特征在于,所述基于所述标识格式,通过所述命名空间名称、所述类名以及所述函数名确定所述目标函数映射标识的键,包括:
确定所述被注入函数对应的重载函数,并为所述重载函数确定对应的编号标识;
基于所述标识格式,对所述命名空间名称、所述类名、所述函数名以及所述编号标识进行组合处理,以生成所述目标函数映射标识的键。
8.根据权利要求1所述的代码修复方法,其特征在于,所述生成所述补丁函数的执行信息,包括:
获取预先定义的指令格式,根据所述指令格式确定所述补丁函数的函数指令;
根据所述函数指令确定与所述补丁函数对应的原生函数的签名标识;其中,所述签名标识用于定位并调用所述原生函数;
将所述签名标识添加至所述执行信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910809755.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种代码补全方法、装置、计算设备及存储介质
- 下一篇:输入校验的方法