[发明专利]一种代码重定向方法、装置、设备及计算机可读存储介质在审
申请号: | 202210963202.0 | 申请日: | 2022-08-11 |
公开(公告)号: | CN115373681A | 公开(公告)日: | 2022-11-22 |
发明(设计)人: | 贾宏祥;万振华;王颉;李华;董燕 | 申请(专利权)人: | 深圳开源互联网安全技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36 |
代理公司: | 深圳市恒申知识产权事务所(普通合伙) 44312 | 代理人: | 廖厚琪 |
地址: | 518100 广东省深圳市龙华区民治*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 定向 方法 装置 设备 计算机 可读 存储 介质 | ||
本申请提供了一种代码重定向方法、装置、设备及计算机可读存储介质,将针对初始方法的重定向需求所确定的重定向方法,编译成动态链接库文件;在JIT编译器对初始方法的CIL代码进行编译之前,采用程序集中待调用方法的CIL代码对初始方法的CIL代码进行匹配;若检测到与初始方法的CIL代码相匹配的目标调用方法的目标CIL代码,则采用目标CIL代码替换CIL代码;若目标调用方法插桩失败,则调用重定向方法,对初始方法进行重定向。通过本申请方案的实施,在JIT编译器编译之前对CIL代码替换失败时,对目标调用方法的目标CIL代码进行重定向,保证应用在插桩失败之后继续运行,提高应用运行效率。
技术领域
本申请涉及电子技术领域,尤其涉及一种代码重定向方法、装置、设备及计算机可读存储介质。
背景技术
.NET平台代码在编译完成后是一个与平台无关的通用中间语言(CommonIntermediate Language,简称CIL),我们在日常开发中需要对应用的性能进行分析监控或者对应用实现自动化覆盖测试等,这时就需要对应用进行插桩。
它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。目前.NET平台中常用的插桩方式是通过修改CIL从而实现插桩功能,但是这种插桩存在一个缺陷:一些底层的方法如mscorlib.dll中提供的一些方法是无法进行有效的插桩,因为在托管程序中,一个应用AppDomain在启动初始化之前或者正在启动初始化时,此时托管程序一些功能并未初始化完成,该应用的初始化可能不足以处理一些托管代码的执行(如探针的加载处理等),这些代码可能会从您重写的CIL(直接或间接)调用,造成无限递归或者CIL验证无效。此时插桩就会失败,应用报错终止运行。
发明内容
本申请实施例提供了一种代码重定向方法、装置、设备及计算机可读存储介质,至少能够解决相关技中插桩失败导致应用报错终止运行的问题。
本申请实施例第一方面提供了一种代码重定向方法,包括:
将针对初始方法的重定向需求所确定的重定向方法,编译成动态链接库文件;其中,所述重定向方法为用户自定义的包装方法;
在JIT编译器对所述初始方法的CIL代码进行编译之前,采用程序集中待调用方法的CIL代码对所述初始方法的CIL代码进行匹配;其中,所述CIL代码包括:CIL操作码;
若检测到与所述初始方法的CIL代码相匹配的目标调用方法的目标CIL代码,则采用所述目标CIL代码替换所述CIL代码;
在替换过程中,若所述目标调用方法插桩失败,则调用所述动态链接库文件中的所述重定向方法,对所述初始方法进行重定向。
本申请实施例第二方面提供了一种代码重定向装置,包括:
编译模块,用于将针对初始方法的重定向需求所确定的重定向方法,编译成动态链接库文件;其中,所述重定向方法为用户自定义的包装方法;
匹配模块,用于在JIT编译器对所述初始方法的CIL代码进行编译之前,采用程序集中待调用方法的CIL代码对所述初始方法的CIL代码进行匹配;其中,所述CIL代码包括:CIL操作码;
替换模块,用于若检测到与所述初始方法的CIL代码相匹配的目标调用方法的目标CIL代码,则通过所述目标CIL代码替换所述CIL代码;
重定向模块,用于在替换过程中,若所述目标调用方法插桩失败,则调用所述动态链接库文件中的所述重定向方法,对所述初始方法进行重定向。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳开源互联网安全技术有限公司,未经深圳开源互联网安全技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210963202.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据共享方法及电子设备
- 下一篇:一种卡通包子造型设备