本发明涉及计算机,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术:
1、随着技术的飞速发展,应用程序在人们的生活和工作中愈发重要,厂商为了更好地服务广大用户,往往会开发具有各种功能的应用程序。
2、例如,开发人员可以在集成开发工具中开发应用程序的计算机程序代码,并对开发的应用程序的计算机程序代码编译,得到应用程序的安装包,然后对外发布应用程序的安装包,以供广大用户下载应用程序的安装包,并基于应用程序的安装包在自己的设备中安装应用程序,进而可以使用应用程序。
技术实现思路
1、本技术示出了一种数据处理方法、装置、电子设备及存储介质。
2、第一方面,本技术示出了一种数据处理方法,所述方法应用于电子设备,所述方法包括:
3、获取应用程序的组件的可执行文件;
4、根据应用程序的组件的可执行文件,获取应用程序在组件中使用到的类的类名;
5、根据应用程序在组件中使用到的类的类名,获取应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址;
6、根据所述第一偏移地址,获取应用程序在使用到的类中使用到的函数的函数名;
7、根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名,确定应用程序针对在组件中使用到的类中的使用到的函数的调用是否为非法调用。
8、在一个可选的实现方式中,所述根据应用程序的组件的可执行文件,获取应用程序在组件中使用到的类的类名,包括:
9、在组件的可执行文件中定位出指令段中的第一特定区,第一特定区中至少记录了应用程序在组件中使用到的类的类名;
10、在第一特定区中获取应用程序在组件中使用到的类的类名。
11、在一个可选的实现方式中,所述根据应用程序在组件中使用到的类的类名,获取应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址,包括:
12、根据应用程序在组件中使用到的类的类名调用第一预设指令,得到第一预设指令返回的所述第一偏移地址。
13、在一个可选的实现方式中,所述根据应用程序在组件中使用到的类的类名,获取应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址,包括:
14、根据应用程序在组件中使用到的类的类名以及组件的可执行文件,获取应用程序在组件中使用到的类的汇编指令;
15、根据应用程序在组件中使用到的类的汇编指令获取所述第一偏移地址。
16、在一个可选的实现方式中,所述根据应用程序在组件中使用到的类的汇编指令获取所述第一偏移地址,包括:
17、根据应用程序在组件中使用到的类的汇编指令调用第二预设指令,得到第二预设指令返回的所述第一偏移地址。
18、在一个可选的实现方式中,所述根据所述第一偏移地址,获取应用程序在使用到的类中使用到的函数的函数名,包括:
19、在组件的可执行文件中定位出指令段中的第二特定区,第二特定区中至少记录了:应用程序在组件中使用到的函数的函数名在组件的可执行文件中的第一偏移地址与应用程序在组件中使用到的函数的函数名之间的映射关系;
20、根据所述第一偏移地址以及所述第二映射关系,获取应用程序在使用到的类中使用到的函数的函数名。
21、在一个可选的实现方式中,所述根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名,确定应用程序针对在组件中使用到的类中的使用到的函数的调用是否为非法调用,包括:
22、根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名生成调用应用程序编程接口api,以及,获取事先统计的调用api集合,所述调用api集合中包括至少一个非法调用api;
23、在所述调用api位于所述调用api集合的情况下,确定应用程序针对在组件中使用到的类中的使用到的函数的调用为非法调用。
24、在一个可选的实现方式中,所述获取应用程序的组件的可执行文件,包括:
25、获取应用程序的可执行文件,应用程序的可执行文件中的预设段中设置有应用程序的各个组件的可执行文件;
26、在应用程序的可执行文件中的预设段中,获取应用程序的各个组件的可执行文件。
27、在一个可选的实现方式中,应用程序的可执行文件包括.ipa格式的可执行文件;预设段包括frameworks段;组件的可执行文件包括mach-o格式的可执行文件。
28、在一个可选的实现方式中,所述获取应用程序的组件的可执行文件,包括:
29、获取应用程序的各个组件的组件名;
30、根据应用程序的各个组件的组件名,在所述电子设备中或云端中获取应用程序的各个组件的可执行文件。
31、在一个可选的实现方式中,所述组件包括动态库组件和/或静态库组件。
32、在一个可选的实现方式中,组件的可执行文件是根据多个子组件的文件生成的;所述方法还包括:
33、在确定出应用程序针对在组件中使用到的类中的使用到的函数的调用为非法调用的情况下,根据组件的可执行文件中记录的调用信息,获取调用使用到的类中的使用到的函数的调用函数的函数名;
34、分别获取各个子组件的函数名集合,子组件的函数名集合中包括子组件中的各个函数的函数名;
35、确定调用函数的函数名所在的函数名集合;
36、获取确定的函数名集合所属的子组件的组件名;
37、输出提示信息,提示信息中包括所述组件名以及调用函数的函数名,提示信息用于提示所述组件名所对应的子组件中的所述函数名对应的所述调用函数发起了非法调用。
38、在一个可选的实现方式中,所述分别获取各个子组件的函数名集合,包括:
39、对于任意一个子组件,对所述子组件调用第三预设指令,得到第三预设指令返回的包括所述子组件中包括的各个函数的函数名的函数名集合。
40、在一个可选的实现方式中,所述根据组件的可执行文件中记录的调用信息,获取调用使用到的类中的使用到的函数的调用函数的函数名,包括:
41、根据组件的可执行文件中记录的调用信息,获取调用函数在其所在的组件的可执行文件中的文本段中的第二偏移地址,以及,获取组件的可执行文件中的文本段在内存中的第一绝对地址;
42、根据第二偏移地址以及第一绝对地址获取调用函数在内存中的第二绝对地址;
43、根据第二绝对地址获取调用函数的函数名。
44、第二方面,本技术示出了一种数据处理装置,所述装置应用于电子设备,所述装置包括:
45、第一获取模块,用于获取应用程序的组件的可执行文件;
46、第二获取模块,用于根据应用程序的组件的可执行文件,获取应用程序在组件中使用到的类的类名;
47、第三获取模块,用于根据应用程序在组件中使用到的类的类名,获取应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址;
48、第四获取模块,用于根据所述第一偏移地址,获取应用程序在使用到的类中使用到的函数的函数名;
49、第一确定模块,用于根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名,确定应用程序针对在组件中使用到的类中的使用到的函数的调用是否为非法调用。
50、在一个可选的实现方式中,所述第二获取模块包括:
51、第一定位单元,用于在组件的可执行文件中定位出指令段中的第一特定区,第一特定区中至少记录了应用程序在组件中使用到的类的类名;
52、第一获取单元,用于在第一特定区中获取应用程序在组件中使用到的类的类名。
53、在一个可选的实现方式中,所述第三获取模块包括:
54、调用单元,用于根据应用程序在组件中使用到的类的类名调用第一预设指令,得到第一预设指令返回的所述第一偏移地址。
55、在一个可选的实现方式中,所述第三获取模块包括:
56、第二获取单元,用于根据应用程序在组件中使用到的类的类名以及组件的可执行文件,获取应用程序在组件中使用到的类的汇编指令;
57、第三获取单元,用于根据应用程序在组件中使用到的类的汇编指令获取所述第一偏移地址。
58、在一个可选的实现方式中,所述第三获取单元具体用于根据应用程序在组件中使用到的类的汇编指令调用第二预设指令,得到第二预设指令返回的所述第一偏移地址。
59、在一个可选的实现方式中,所述第四获取模块包括:
60、第二定位单元,用于在组件的可执行文件中定位出指令段中的第二特定区,第二特定区中至少记录了:应用程序在组件中使用到的函数的函数名在组件的可执行文件中的第一偏移地址与应用程序在组件中使用到的函数的函数名之间的映射关系;
61、第四获取单元,用于根据所述第一偏移地址以及所述第二映射关系,获取应用程序在使用到的类中使用到的函数的函数名。
62、在一个可选的实现方式中,所述第一确定模块包括:
63、生成单元,用于根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名生成调用应用程序编程接口api,以及,第五获取单元,用于获取事先统计的调用api集合,所述调用api集合中包括至少一个非法调用api;
64、确定单元,用于在所述调用api位于所述调用api集合的情况下,确定应用程序针对在组件中使用到的类中的使用到的函数的调用为非法调用。
65、在一个可选的实现方式中,所述第一获取模块包括:
66、第六获取单元,用于获取应用程序的可执行文件,应用程序的可执行文件中的预设段中设置有应用程序的各个组件的可执行文件;
67、第七获取单元,用于在应用程序的可执行文件中的预设段中,获取应用程序的各个组件的可执行文件。
68、在一个可选的实现方式中,应用程序的可执行文件包括.ipa格式的可执行文件;预设段包括frameworks段;组件的可执行文件包括mach-o格式的可执行文件。
69、在一个可选的实现方式中,所述第一获取模块包括:
70、第八获取单元,用于获取应用程序的各个组件的组件名;
71、第九获取单元,用于根据应用程序的各个组件的组件名,在所述电子设备中或云端中获取应用程序的各个组件的可执行文件。
72、在一个可选的实现方式中,所述组件包括动态库组件和/或静态库组件。
73、在一个可选的实现方式中,组件的可执行文件是根据多个子组件的文件生成的;所述装置还包括:
74、第五获取模块,用于在确定出应用程序针对在组件中使用到的类中的使用到的函数的调用为非法调用的情况下,根据组件的可执行文件中记录的调用信息,获取调用使用到的类中的使用到的函数的调用函数的函数名;
75、第六获取模块,用于分别获取各个子组件的函数名集合,子组件的函数名集合中包括子组件中的各个函数的函数名;
76、第二确定模块,用于确定调用函数的函数名所在的函数名集合;
77、第七获取模块,用于获取确定的函数名集合所属的子组件的组件名;
78、输出模块,用于输出提示信息,提示信息中包括所述组件名以及调用函数的函数名,提示信息用于提示所述组件名所对应的子组件中的所述函数名对应的所述调用函数发起了非法调用。
79、在一个可选的实现方式中,所述第六获取模块具体用于:对于任意一个子组件,对所述子组件调用第三预设指令,得到第三预设指令返回的包括所述子组件中包括的各个函数的函数名的函数名集合。
80、在一个可选的实现方式中,所述第五获取模块包括:
81、第十获取单元,用于根据组件的可执行文件中记录的调用信息,获取调用函数在其所在的组件的可执行文件中的文本段中的第二偏移地址,以及,获取组件的可执行文件中的文本段在内存中的第一绝对地址;
82、第十一获取单元,用于根据第二偏移地址以及第一绝对地址获取调用函数在内存中的第二绝对地址;
83、第十二获取单元,用于根据第二绝对地址获取调用函数的函数名。
84、第三方面,本技术示出了一种电子设备,所述电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行如上述任一方面所述的方法。
85、第四方面,本技术示出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一方面所述的方法。
86、第五方面,本技术示出了一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述任一方面所述的方法。
87、本技术提供的技术方案可以包括以下有益效果:
88、在本技术中,获取应用程序的组件的可执行文件。根据应用程序的组件的可执行文件,获取应用程序在组件中使用到的类的类名。根据应用程序在组件中使用到的类的类名,获取应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址。根据应用程序在使用到的类中使用到的函数的函数名在组件的可执行文件中的第一偏移地址,获取应用程序在使用到的类中使用到的函数的函数名。根据应用程序在组件中使用到的类的类名以及应用程序在使用到的类中使用到的函数的函数名,确定应用程序针对在组件中使用到的类中的使用到的函数的调用是否为非法调用。通过本技术,在应用程序的组件是编译后的文件的情况下,能够快速且准确检测应用程序针对在组件中使用到的类中的使用到的函数的调用是否为非法调用。
89、如此,在应用程序针对在组件中使用到的类中的使用到的函数的调用为非法调用的情况下,可以尽快提示开发人员对此进行针对性处理,例如尽早调整组件中的非法调用涉及的类以及函数,以避免应用程序对应用程序中的某一组件中的类以及类中的函数的调用为非法调用,进而可以至少避免用户的电子设备中的隐私信息(例如通话记录信息、通讯录信息、位置信息、支付信息以及相册信息等)被窃取,避免威胁用户的隐私安全,进而可以提高用户使用应用程序的使用体验。