System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,尤其涉及一种api抓取方法、api抓取装置、电子设备、计算机可读存储介质和计算机程序产品。
技术介绍
1、随着计算机图形技术的快速发展,opengl(open graphics library,开放图形库)作为跨平台、跨语言的图形程序接口,在三维图形渲染和可视化领域得到了广泛应用。在opengl应用程序的开发和调试过程中,对opengl应用程序调用的api(applicationprogramming interface,应用程序接口)进行抓取,得到api调用追踪数据(trace),并基于api调用追踪数据分析opengl应用程序的性能和行为,成为了一个重要的技术需求。
技术实现思路
1、本公开提供了一种api抓取技术方案。
2、根据本公开的一方面,提供了一种api抓取方法,包括:
3、将注册表中目标表项对应的目标路径,修改为桥接层的动态链接库文件的路径;其中,所述目标表项对应于用户态驱动程序的动态链接库文件;所述桥接层的动态链接库文件用于导出第一函数集合以及实现第二函数集合,其中,所述第一函数集合表示所述用户态驱动程序所导出的函数的集合,所述第二函数集合表示构成api的导出函数的集合;
4、运行目标应用程序,其中,所述目标应用程序对应于所述目标表项对应的路径;
5、通过所述桥接层的动态链接库文件抓取所述目标应用程序调用的api的信息,得到所述目标应用程序的api调用追踪数据。
6、在一种可能的实现方式中
7、通过所述目标应用程序调用运行时的动态链接库文件;
8、响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件拦截本次调用,并抓取所述目标应用程序调用的目标api的信息。
9、在一种可能的实现方式中,所述响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件拦截本次调用,并抓取所述目标应用程序调用的目标api的信息,包括:
10、响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件将指向所述目标api的指针,替换为指向包装函数的指针,其中,所述包装函数用于抓取所述目标应用程序调用的目标api的信息。
11、在一种可能的实现方式中,在所述抓取所述目标应用程序调用的目标api的信息之后,所述方法还包括:
12、响应于所述包装函数完成抓取,通过所述包装函数调用所述目标api;
13、将所述目标api的返回值传递回所述目标应用程序。
14、在一种可能的实现方式中,在所述得到所述目标应用程序的api调用追踪数据之后,所述方法还包括:
15、响应于所述目标应用程序调用的api抓取完成,将所述注册表中所述目标表项对应的路径复原为所述目标路径。
16、在一种可能的实现方式中,所述api调用追踪数据包括以下至少部分:
17、所述目标应用程序调用的api的名称;
18、所述目标应用程序调用api的时间;
19、所述目标应用程序调用的api的参数信息。
20、在一种可能的实现方式中,所述目标应用程序为openngl应用程序。
21、根据本公开的一方面,提供了一种api抓取装置,包括:
22、修改模块,用于将注册表中目标表项对应的目标路径,修改为桥接层的动态链接库文件的路径;其中,所述目标表项对应于用户态驱动程序的动态链接库文件;所述桥接层的动态链接库文件用于导出第一函数集合以及实现第二函数集合,其中,所述第一函数集合表示所述用户态驱动程序所导出的函数的集合,所述第二函数集合表示构成api的导出函数的集合;
23、运行模块,用于运行目标应用程序,其中,所述目标应用程序对应于所述目标表项对应的路径;
24、抓取模块,用于通过所述桥接层的动态链接库文件抓取所述目标应用程序调用的api的信息,得到所述目标应用程序的api调用追踪数据。
25、在一种可能的实现方式中,所述抓取模块用于:
26、通过所述目标应用程序调用运行时的动态链接库文件;
27、响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件拦截本次调用,并抓取所述目标应用程序调用的目标api的信息。
28、在一种可能的实现方式中,所述抓取模块用于:
29、响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件将指向所述目标api的指针,替换为指向包装函数的指针,其中,所述包装函数用于抓取所述目标应用程序调用的目标api的信息。
30、在一种可能的实现方式中,所述装置还包括:
31、调用模块,用于响应于所述包装函数完成抓取,通过所述包装函数调用所述目标api;
32、回传模块,用于将所述目标api的返回值传递回所述目标应用程序。
33、在一种可能的实现方式中,所述装置还包括:
34、复原模块,用于响应于所述目标应用程序调用的api抓取完成,将所述注册表中所述目标表项对应的路径复原为所述目标路径。
35、在一种可能的实现方式中,所述api调用追踪数据包括以下至少部分:
36、所述目标应用程序调用的api的名称;
37、所述目标应用程序调用api的时间;
38、所述目标应用程序调用的api的参数信息。
39、在一种可能的实现方式中,所述目标应用程序为openngl应用程序。
40、根据本公开的一方面,提供了一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
41、根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
42、根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
43、在本公开实施例中,通过将注册表中目标表项对应的目标路径,修改为桥接层的动态链接库文件的路径,其中,所述目标表项对应于用户态驱动程序的动态链接库文件,所述桥接层的动态链接库文件用于导出第一函数集合以及实现第二函数集合,其中,所述第一函数集合表示用户态驱动程序所导出的函数的集合,所述第二函数集合表示构成api的导出函数的集合,并运行目标应用程序,通过所述桥接层的动态链接库文件抓取所述目标应用程本文档来自技高网...
【技术保护点】
1.一种API抓取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述通过所述桥接层的动态链接库文件抓取所述目标应用程序调用的API的信息,包括:
3.根据权利要求2所述的方法,其特征在于,所述响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标API,通过所述桥接层的动态链接库文件拦截本次调用,并抓取所述目标应用程序调用的目标API的信息,包括:
4.根据权利要求3所述的方法,其特征在于,在所述抓取所述目标应用程序调用的目标API的信息之后,所述方法还包括:
5.根据权利要求1至4中任意一项所述的方法,其特征在于,在所述得到所述目标应用程序的API调用追踪数据之后,所述方法还包括:
6.根据权利要求1至4中任意一项所述的方法,其特征在于,所述API调用追踪数据包括以下至少部分:
7.根据权利要求1至4中任意一项所述的方法,其特征在于,所述目标应用程序为OpennGL应用程序。
8.一种API抓取装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至7中任意一项所述的方法。
11.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,其特征在于,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求1至7中任意一项所述的方法。
...【技术特征摘要】
1.一种api抓取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述通过所述桥接层的动态链接库文件抓取所述目标应用程序调用的api的信息,包括:
3.根据权利要求2所述的方法,其特征在于,所述响应于所述目标应用程序通过所述运行时的动态链接库文件调用目标api,通过所述桥接层的动态链接库文件拦截本次调用,并抓取所述目标应用程序调用的目标api的信息,包括:
4.根据权利要求3所述的方法,其特征在于,在所述抓取所述目标应用程序调用的目标api的信息之后,所述方法还包括:
5.根据权利要求1至4中任意一项所述的方法,其特征在于,在所述得到所述目标应用程序的api调用追踪数据之后,所述方法还包括:
6.根据...
【专利技术属性】
技术研发人员:请求不公布姓名,
申请(专利权)人:摩尔线程智能科技上海有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。