接口信息提取方法、装置、电子设备及存储介质与流程

文档序号:29041599发布日期:2022-02-25 20:53阅读:99来源:国知局
接口信息提取方法、装置、电子设备及存储介质与流程

1.本公开涉及计算机技术领域,尤其涉及系统服务技术领域。


背景技术:

2.终端的系统服务为终端中安装的应用程序提供了系统控制能力,同时,系统服务也是攻击者的重要攻击对象。目前可以通过模糊测试等动态漏洞挖掘方式,全面高效挖掘系统服务的漏洞。其中,模糊测试是一种通过向系统服务提供非预期的输入并监视异常结果,从而发现漏洞的方法。


技术实现要素:

3.本公开提供了一种接口信息提取方法、装置、电子设备及存储介质。
4.根据本公开的第一方面,提供了一种接口信息提取方法,包括:
5.使用钩子函数获取目标应用程序调用系统服务时的写函数和进程间调用函数;
6.从获取到的写函数和进程间调用函数中,筛选出针对目标系统服务的目标写函数和目标进程间调用函数;
7.根据筛选出的各目标写函数的参数类型和各目标写函数被调用的顺序,确定参数序列化方式信息;
8.从筛选出的目标进程间调用函数中提取进程间调用函数的标识。
9.根据本公开的第二方面,提供了一种接口信息提取装置,包括:
10.第一获取模块,用于使用钩子函数获取目标应用程序调用系统服务时的写函数和进程间调用函数;
11.筛选模块,用于从获取到的写函数和进程间调用函数中,筛选出针对目标系统服务的目标写函数和目标进程间调用函数;
12.第一确定模块,用于根据筛选出的各目标写函数的参数类型和各目标写函数被调用的顺序,确定参数序列化方式信息;
13.提取模块,用于从筛选出的目标进程间调用函数中提取进程间调用函数的标识。
14.根据本公开的第三方面,提供了一种电子设备,包括:
15.至少一个处理器;以及
16.与所述至少一个处理器通信连接的存储器;其中,
17.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面所述的方法。
18.根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述第一方面所述的方法。
19.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述第一方面所述的方法。
20.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特
征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
21.附图用于更好地理解本方案,不构成对本公开的限定。其中:
22.图1是本公开实施例提供的一种接口信息提取方法的流程图;
23.图2是本公开实施例提供的另一种接口信息提取方法的流程图;
24.图3是本公开实施例提供的另一种接口信息提取方法的流程图;
25.图4是本公开实施例提供的另一种接口信息提取方法的流程图;
26.图5是本公开实施例提供的一种接口信息提取方法的示例性流程图;
27.图6是本公开实施例提供的另一种接口信息提取装置的结构示意图;
28.图7是用来实现本公开实施例的接口信息提取方法的电子设备的框图。
具体实施方式
29.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
30.本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
31.为便于理解,首先对本公开中涉及的相关概念进行介绍。
32.ibinder是安卓系统中一种进程间通信接口,应用程序与系统服务间的通信通过ibinder接口的transact()函数实现。
33.在应用程序与系统服务进行跨进程通信时,可以将需要传输的数据打包在parcel(打包)对象中,然后通过binder驱动进行传递。
34.本公开实施例中,对于一次系统调用,parcel对象可以被parcel.write函数和ibinder.transact函数共用。
35.parcel.write函数在本公开实施例中可称为写函数,parcel.write函数可以包括writeinterfacetoken函数、writeint函数、writestring函数等各种类型的写函数。其中,writeinterfacetoken为写标记函数,writeinterfacetoken包括的参数为系统服务的描述符(descriptor)。writeint函数用于写入int类型的参数、writestring函数用于写入string类型的参数。ibinder.transact函数为进程间调用函数,ibinder.transact函数的参数为交易标识(transact id)。
36.在相关技术中,可以提取系统服务的接口信息,接口信息包括调用目标系统服务接口所需的transact id、目标系统服务的描述符以及参数序列化方式。根据提取的接口信息可以构造测试数据,并向系统服务发送测试数据,以测试系统服务是否存在漏洞。
37.目前可以通过系统服务管理者(servicemanager)获取系统服务的ibinder接口,然后调用ibinder的接口描述符获取函数(getinterfacedescriptor)获取需要被进行漏洞检测的系统服务的描述符。在获取到系统服务的描述符之后,可以基于java反射技术,根据该描述符反射存根(stub)类,可以获取到调用该系统服务的transact函数的transact id,
以及该系统服务接口的接口参数类型。
38.然而,为了构造测试数据,还需要参数序列化方式信息,参数序列化方式是指在调用系统服务时,所传输的各类型参数的传输顺序。对于包括对象类型参数的系统服务接口,采用java反射技术,通过系统服务接口获取系统服务的代码,通过解析系统服务代码获取系统服务接口的传输的参数类型。但对于对象类型参数,只能识别到该参数的类型为对象类型,无法获取对象类型参数的序列化方式信息,导致获取的接口信息不完整。
39.为了获取完整的系统服务接口信息,本公开实施例提供了一种接口信息提取方法、装置、电子设备及存储介质。
40.本公开实施例提供的接口信息提取方法可以由电子设备执行,该电子设备可以为智能手机、平板电脑、台式电脑、可穿戴设备等设备。
41.以下对本公开实施例提供的接口信息提取方法进行详细介绍。
42.如图1所示,本公开实施例提供了一种接口信息提取方法,该方法包括:
43.s101、使用钩子函数获取目标应用程序调用系统服务时的写函数和进程间调用函数。
44.系统服务为安卓系统中为应用程序提供各种控制能力的服务,例如,通知管理服务notifacationmanager、振动管理服务vibrator、电池管理服务batterymanager等。
45.应用程序可以通过调用这些系统服务实现多种功能,例如,可以通过调用振动管理服务vibrator使得安装该应用程序的电子设备发生振动。
46.钩子函数为hook函数,写函数为上文中介绍的parcel.write函数,例如,parecel.writeint函数、parecel.writestring函数和parcel.writeinterfacetoken(写接口标记)函数等。
47.进程间调用函数为上文中介绍的ibinder.transact函数,此处不再赘述。
48.一种实施方式中,技术人员可以预先编写hook脚本,通过hook脚本指定需要获取的调用系统服务的写函数和进程间调用函数,在应用程序运行时,通过该hook脚本,就可以获取到目标应用程序实际调用系统服务时的写函数和进程间调用函数。可选地,可以将获取到的写函数和进程间调用函数保存在日志文件中。
49.s102、从获取到的写函数和进程间调用函数中,筛选出针对目标系统服务的目标写函数和目标进程间调用函数。
50.本公开实施例中,目标应用程序在运行时会调用多个系统服务,其中包括目标系统服务,所以电子设备可以利用hook函数获取目标应用程序调用的所有系统服务的写函数和进程间调用函数,进而,从获取到的写函数和进程间调用函数中筛选出目标写函数和目标进程间调用函数。
51.s103、根据筛选出的各目标写函数的参数类型和各目标写函数被调用的顺序,确定参数序列化方式信息。
52.本公开实施例中,目标写函数的参数类型可以包括基本类型参数和/或对象类型参数,例如,基本类型参数可以为int类型和string类型的参数,对象类型参数中包括多个基本类型参数。
53.参数序列化方式信息包括应用程序在调用系统服务时,应用程序向系统服务传输的各参数的参数类型和传输顺序。
54.s104、从筛选出的目标进程间调用函数中提取进程间调用函数的标识。
55.在本公开实施例中,进程间调用函数为ibinder.transact函数,ibinder.transact函数的参数为transactid,通过hook函数可以捕捉到该transactid。
56.采用该方法,使用钩子函数可以获取目标应用程序调用的系统服务的所有写函数和进程间调用函数,从中筛选出目标系统服务的目标写函数和目标进程间调用函数,因通过钩子函数可以获取各个目标写函数的真实参数,即使包括对象类型参数,也可通过对该对象类型参数进行解析得到对象类型参数的序列化方式信息,且还可以从目标进程函数中提取进程间调用函数的标识,所以本公开实施例可以获得完整的接口信息。
57.在本公开另一实施例中,如图2所示,在s101之前,该方法还包括:
58.s201、使用钩子函数获取多个应用程序的系统服务获取函数。
59.其中,上述多个应用程序可以为电子设备中安装的所有应用程序,或者为测试人员从应用市场下载的可能调用目标系统服务的应用程序。
60.系统服务获取函数为getsystemservice函数,getsystemservice函数为应用程序请求系统服务时使用的函数。
61.电子设备可以利用hook函数获取多个应用程序的getsystemservice函数。
62.s202、针对每个系统服务获取函数,若该系统服务获取函数所请求获取的系统服务名称与目标系统服务的服务名称一致,则确定该系统服务获取函数所属的应用程序为目标应用程序。
63.例如,目标系统服务名称为电源管理服务powermanager,电子设备可以获取到各应用程序的getsystemservice函数中请求的系统服务名称,当获取到的某一应用程序对应的getsystemservice函数中请求的系统服务名称为电源管理服务powermanager时,则确定该应用程序为目标应用程序。
64.采用该方法,可以通过比较应用程序的系统服务获取函数请求的系统服务名称和目标系统服务名称是否一致,准确快速地筛选出调用目标系统服务的目标应用程序,避免后续获取未调用目标系统服务的应用程序的函数,可以提高获取接口信息的效率。
65.在本公开另一实施例中,如图3所示,在上述实施例的基础上,s102具体可以实现为:
66.s1021、从获取到的写函数中,查找以目标系统服务的描述符为参数的写接口标记函数。
67.在本公开实施例中,写接口标记函数为writeinterfacetoken函数,目标系统服务的描述符为目标系统服务中writeinterfacetoken函数的参数,每个系统服务的描述符不同,即描述符可作为系统服务的唯一标识。
68.本步骤中通过查找以目标系统服务的描述符为参数的writeinterfacetoken函数,即可获取到调用目标系统服务的writeinterfacetoken函数。
69.s1022、获取写接口标记函数的目标parcel对象。
70.可以理解的是,电子设备可以获取到目标服务系统接口中的writeintertoken函数的目标parcel对象,相当于获得了目标应用程序和目标服务系统之间参数传递的载体。
71.s1023、从获取到的写函数和进程间调用函数中,筛选出属于目标parcel对象的目标写函数和目标进程间调用函数。
72.因通过上述s1021已经获取到调用目标系统服务的writeinterfacetoken函数,因一次系统调用中parcel对象可以被parcel.write函数和ibinder.transact函数共用,writeinterfacetoken函数也是一种parcel.write函数,所以可以将该writeinterfacetoken函数的目标parcel对象作为标识,筛选出属于该目标parcel对象的写函数和进程间调用函数,筛选出的函数就是调用目标系统服务的目标写函数和目标进程间调用函数。
73.本公开实施例中,目标应用程序不仅调用了目标系统服务,还调用了其他系统服务,所以获取到的写函数和进程间调用函数中包含了目标写函数和目标进程间调用函数,而目标parcel对象为目标应用程序和目标系统服务之间传递参数的载体,所以电子设备可以在获取到的写函数和进程调用函数中,基于目标parcel对象筛选出调用目标系统服务的目标写函数和目标进程间调用函数,进而可以准确完整地获取调用目标系统服务时的接口信息,为后续对目标系统服务进行模糊测试提供了数据支撑。
74.在本公开另一实施例中,如图4所示,在上述实施例的基础上,s103可以实现为:
75.s1031、获取属于目标parcel对象的每个目标写函数的获取顺序,以及每个目标写函数的参数类型。
76.例如,目标parcel对象包括的写函数依次为writeint、writestring和o.writetoparcel,其中“o”代表对象类型的参数。则可确定需要依次传输int、string和对象类型的参数。
77.s1032、若存在目标写函数的参数类型为对象类型,则解析该目标写函数的对象类型参数包括的各参数的参数类型和顺序。
78.假设上述对象类型的参数的成员变量包括writeint和writebyte,则可确定该对象类型参数依次包括int和byte类型的参数。
79.s1033、将目标parcel对象包括的各目标写函数的获取顺序和参数类型,以及对象类型参数包括的各参数的参数类型和顺序,作为参数序列化方式信息。
80.结合上述s1031和s1032中的举例,可以得到参数序列化方式为:int-string-int-byte。即接口中先写入int类型参数,再写入string类型参数,然后写入对象类型参数,在写入该对象类型参数时,先写入int类型参数,再写入byte类型参数。
81.采用该方法,电子设备可以利用hook函数获取各目标写函数的参数类型以及被调用的顺序,并且可以解析对象类型参数,获取到对象类型参数包括的各参数的类型和顺序,也就可以得到目标服务系统接口的参数序列化方式信息,进而,也就可以获取完整的目标系统服务的接口信息。
82.参见图5,图5为本公开实施例提供的一种接口信息提取方法的示例性流程图,下面结合图5进行说明。
83.s501、电子设备利用hook函数筛选目标应用程序。
84.本公开实施例中可以由技术人员预先下载应用程序,然后利用hook函数筛选调用目标系统服务的目标应用程序。
85.s502、获取目标应用程序的hook脚本。
86.该hook脚本可由技术人员编写,hook脚本中收集了调用目标应用程序所需的parcel类的write函数和transact函数。
87.s503、运行目标应用程序。
88.当目标应用程序运行时,会调用多个系统服务,其中包括目标系统服务。
89.s504、运行hook脚本,捕获应用程序调用系统服务时的write函数和transact函数。
90.s505、记录以目标系统服务的descriptor为参数的writeinterfacetoken的调用者地址。
91.其中,该调用者地址为parcel对象的地址。
92.s506、根据调用者地址筛选出调用目标系统服务的write函数和transact函数。
93.s507、根据筛选出的write函数和transact函数获取transactid和参数序列化方式信息。
94.采用该方法,由于hook脚本可以收集到目标应用程序在实际运行时,调用目标系统服务的parcel类的write函数的类型及顺序,也就可以得到参数序列化方式,所以相比于现有技术,本公开实施例可以获取到完整的接口信息。
95.对应于上述方法实施例,本公开实施例还提供了一种接口信息提取装置,如图6所示,该装置包括:
96.第一获取模块601,用于使用钩子函数获取目标应用程序调用系统服务时的写函数和进程间调用函数;
97.筛选模块602,用于从获取到的写函数和进程间调用函数中,筛选出针对目标系统服务的目标写函数和目标进程间调用函数;
98.第一确定模块603,用于根据筛选出的各目标写函数的参数类型和各目标写函数被调用的顺序,确定参数序列化方式信息;
99.提取模块604,用于从筛选出的目标进程间调用函数中提取进程间调用函数的标识。
100.在本公开另一实施中,筛选模块602,具体用于:
101.从获取到的写函数中,查找以目标系统服务的描述符为参数的写接口标记函数;
102.获取写接口标记函数的目标parcel对象;
103.从获取到的写函数和进程间调用函数中,筛选出属于目标parcel对象的目标写函数和目标进程间调用函数。
104.在本公开另一实施中,第一确定模块603,具体用于:
105.获取属于目标parcel对象的每个目标写函数的获取顺序,以及每个目标写函数的参数类型;
106.若存在目标写函数的参数类型为对象类型,则解析该目标写函数的对象类型参数包括的各参数的参数类型和顺序;
107.将目标parcel对象包括的各目标写函数的获取顺序和参数类型,以及对象类型参数包括的各参数的参数类型和顺序,作为参数序列化方式信息。
108.在本公开另一实施中,该装置还包括:
109.第二获取模块,用于使用钩子函数获取多个应用程序的系统服务获取函数;
110.第二确定模块,用于针对每个系统服务获取函数,若该系统服务获取函数所请求获取的系统服务名称与目标系统服务的服务名称一致,则确定该系统服务获取函数所属的
应用程序为目标应用程序。
111.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
112.图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
113.如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
114.设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
115.计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如接口信息提取方法。例如,在一些实施例中,接口信息提取方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的接口信息提取方法一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行接口信息提取方法。
116.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
117.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的
功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
118.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
119.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
120.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
121.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
122.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
123.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1