本申请实施例涉及计算机,特别涉及一种ndk(native developmentkit,原生开发工具包)的生成方法、装置、设备、存储介质及程序产品。
背景技术:
1、插桩是指保证被测程序原有逻辑完整性的基础上在程序中插入一些探针,获取被测程序运行的特征数据。
2、在相关技术中,通过反射来获取函数名以进行对应于程序的插桩,但是,这种反射方式会受到代码混淆(obfuscated code)的影响,不够安全。
技术实现思路
1、本申请实施例提供了一种ndk的生成方法、装置、设备、存储介质及程序产品,能够提升插桩的安全性。所述技术方案如下:
2、根据本申请实施例的一个方面,提供了一种ndk的生成方法,所述方法包括:
3、编写插桩工程源码;
4、对所述插桩工程源码进行编译,得到所述插桩插件;
5、建立所述插桩插件与ndk中包含的编译器驱动之间的关联,得到关联有所述插桩插件的ndk;其中,关联有所述插桩插件的ndk用于通过所述编译器驱动对目标应用程序进行编译,并在编译过程中通过所述插桩插件对所述目标应用程序进行插桩。
6、根据本申请实施例的一个方面,提供了一种ndk的生成装置,所述装置包括:
7、编写模块,用于编写插桩工程源码;
8、编译模块,用于对所述插桩工程源码进行编译,得到所述插桩插件;
9、关联建立模块,用于建立所述插桩插件与ndk中包含的编译器驱动之间的关联,得到关联有所述插桩插件的ndk;其中,关联有所述插桩插件的ndk用于通过所述编译器驱动对目标应用程序进行编译,并在编译过程中通过所述插桩插件对所述目标应用程序进行插桩。
10、在一些实施例中,所述装置还包括:
11、编译模块,还用于对编译器项目的源码进行编译,得到目标编译器驱动;
12、替换模块,用于采用所述目标编译器驱动,替换掉所述ndk中包含的原有编译器驱动,得到更新后的ndk;
13、关联建立模块,用于建立所述插桩插件与所述更新后的ndk中包含的所述目标编译器驱动之间的关联,得到关联有所述插桩插件的ndk。
14、在一些实施例中,所述装置还包括:
15、信息添加模块,用于在所述ndk对应的第一跨平台安装编译文件中,添加依赖信息,所述依赖信息用于指示所述ndk在执行过程中,调用目标存放路径下的第一依赖文件,所述第一依赖文件用于补全所述ndk中缺失的文件;
16、关联建立模块,用于建立所述插桩插件与所述ndk中包含的原有编译器驱动之间的关联,得到关联有所述插桩插件的ndk。
17、在一些实施例中,所述装置还包括:
18、标识符获取模块,用于获取所述ndk的版本标识符;
19、下载模块,用于基于所述版本标识符,从目标地址下载获取所述第一依赖文件;
20、文件存储模块,用于将所述第一依赖文件存储至所述目标存放路径下。
21、在一些实施例中,所述装置还包括:
22、命令行修改模块,用于将所述第一跨平台安装编译文件中的第一命令行,修改为第二命令行;其中,所述第一命令行用于在通过所述ndk对所述目标应用程序进行编译的过程中,检测到所述ndk中存在缺失的文件时中断编译;所述第二命令行用于在通过所述ndk对所述目标应用程序进行编译的过程中,检测到所述ndk中存在缺失的文件时不中断编译。
23、在一些实施例中,所述装置还包括:
24、参数添加模块,用于在所述插桩工程源码中添加用于指示所述编译器驱动的路径的命令行参数;其中,所述命令行参数用于建立所述插桩插件与所述编译器驱动之间的关联。
25、在一些实施例中,所述参数添加模块,用于:
26、编辑所述插桩插件对应的第二跨平台安装编译文件;
27、通过所述第二跨平台安装编译文件在所述插桩工程源码中添加用于指示所述编译器驱动的路径的命令行参数。
28、在一些实施例中,所述编译模块,用于:
29、编辑所述插桩插件对应的第三跨平台安装编译文件;
30、通过所述第三跨平台安装编译文件对所述插桩工程源码进行编译,得到所述插桩插件。
31、在一些实施例中,所述插桩插件包括以下至少之一:
32、模块级插桩插件,用于对所述目标应用程序进行文件维度或者类维度的插桩;
33、函数级插桩插件,用于对所述目标应用程序进行函数维度的插桩;
34、代码块级插桩插件,用于对所述目标应用程序进行代码块维度的插桩;
35、指令级插桩插件,用于对所述目标应用程序进行指令维度的插桩。
36、根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述ndk的生成方法。
37、根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述ndk的生成方法。
38、根据本申请实施例的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述ndk的生成方法。
39、本申请实施例提供的技术方案可以包括如下有益效果:
40、通过生成插桩插件,并将插桩插件与ndk中包含的编译器驱动之间建立关联,使得关联有插桩插件的ndk能够实现对应用程序的插桩,由于没有使用反射方式进行插桩,不会存在代码混淆的问题,从而回避了代码混淆带来的安全性问题,提升了插桩的安全性。
41、另外,本申请实施例通过将插桩插件与ndk中包含的编译器驱动建立关联的方式,使得关联有插桩插件的ndk用于通过编译器驱动对目标应用程序进行编译的过程中,可以调用插桩插件对目标应用程序进行插桩;这样,将插桩插件与ndk分开,在插桩需求发生变更的情况下,只需要对插桩插件进行更新即可,而无需再重新修改并编译ndk中的编译器驱动,简化了操作,从而节省计算机设备的处理资源,减少了维护成本,节省了插桩所需的时间成本。
42、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
1.一种原生开发工具包ndk的生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述在所述插桩工程源码中添加用于指示所述编译器驱动的路径的命令行参数,包括:
8.根据权利要求1所述的方法,其特征在于,所述对所述插桩工程源码进行编译,得到所述插桩插件,包括:
9.根据权利要求1所述的方法,其特征在于,所述插桩插件包括以下至少之一:
10.一种原生开发工具包ndk的生成装置,其特征在于,所述装置包括:
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述权利要求1至9任一项所述的原生开发工具包ndk的生成方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如上述权利要求1至9任一项所述的原生开发工具包ndk的生成方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机程序,以实现如权利要求1至9任一项所述的原生开发工具包ndk的生成方法。