CN110286958A - 节点信息获取方法、装置及存储介质 - Google Patents
节点信息获取方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110286958A CN110286958A CN201910538538.0A CN201910538538A CN110286958A CN 110286958 A CN110286958 A CN 110286958A CN 201910538538 A CN201910538538 A CN 201910538538A CN 110286958 A CN110286958 A CN 110286958A
- Authority
- CN
- China
- Prior art keywords
- applications client
- function
- designated program
- thread
- nodal information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种节点信息获取方法、装置及存储介质,属于计算机技术领域。该方法包括:在应用客户端启动时,操作***中包括的指定程序开始运行;指定程序启动线程,线程启动通信服务端,通信服务端与通信客户端建立通信连接;线程通过调用应用客户端的库文件中用于提取应用客户端的节点信息的第一函数,提取应用客户端的节点信息;线程通过通信服务端,向通信客户端发送节点信息。本发明实施例提供了一种节点信息获取方法,无需获取应用客户端的源程序,只需在操作***中添加指定程序,即可获取应用客户端的节点信息,摆脱了应用客户端的源程序的限制,扩展了应用范围。
Description
技术领域
本发明实施例涉及计算机技术领域,特别涉及一种节点信息获取方法、装置及存储介质。
背景技术
随着计算机技术的发展以及应用客户端逐渐趋向于大型化、复杂化,获取应用客户端的节点信息已成为一种常用的应用分析方式,通过获取应用客户端的节点信息,对节点信息进行分析,可以发现应用客户端的错误,衡量应用客户端的质量。
相关技术中提供了一种利用应用客户端的源程序获取节点信息的方法,如图1所示,在源程序中植入用于获取应用客户端节点信息的指定程序。在植入指定程序后的应用客户端的运行过程中,指定程序开始运行,提取应用客户端的节点信息,对该节点信息进行分析。上述方案需要预先获取应用客户端的源程序,才能在源程序中植入指定程序,局限性强,应用范围狭窄。
发明内容
本发明实施例提供了一种节点信息获取方法、装置及存储介质,能够扩展应用范围。所述技术方案如下:
一方面,提供了一种节点信息获取方法,应用于终端中,所述终端安装有应用客户端,所述方法包括:
在所述应用客户端启动时,所述操作***中包括的指定程序开始运行;
所述指定程序启动线程,所述线程启动通信服务端,由所述通信服务端与通信客户端建立通信连接;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,所述第一函数用于提取应用客户端的节点信息;
所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息。
可选地,所述在所述应用客户端启动时,所述操作***中包括的指定程序开始运行,包括:
在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行。
可选地,所述在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行之前,所述方法还包括:在所述操作***中的第二函数之后,添加所述指定程序,所述第二函数用于在所述操作***中加载所述应用客户端的库文件;
所述在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行,包括:当所述应用客户端启动时调用所述第二函数,所述第二函数运行完成后,所述指定程序开始运行。
可选地,所述指定程序启动线程,包括:
通过调用第三函数,获取所述应用客户端的库文件中包括的至少一个函数的函数名称,所述第三函数用于获取函数名称;
当获取到的函数名称中包括所述指定程序中设置的目标函数名称时,所述指定程序启动线程。
可选地,所述在所述应用客户端启动时,所述操作***中包括的指定程序开始运行之前,所述方法还包括:将所述指定程序注入到所述操作***中,所述指定程序挂钩HOOK所述第一函数;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,包括:当所述应用客户端调用所述第一函数时,所述线程截获所述应用客户端的节点信息。
可选地,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息,包括:
所述线程缓存提取的所述节点信息;
当所述线程通过所述通信服务端接收到节点信息获取请求时,向所述通信客户端发送缓存的所述节点信息。
可选地,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息之后,所述方法还包括:
根据所述节点信息中至少一个节点的操作类型,确定所述应用客户端的应用界面中可操作的节点;
对所述节点执行触发操作,得到操作结果。
可选地,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息之后,所述方法还包括:
根据所述节点信息中至少一个节点对应的显示元素,显示所述应用客户端的应用界面。
另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序包括操作***、指定程序和应用客户端;所述指定程序包括线程、通信服务端和通信客户端;
所述处理器用于加载所述至少一段程序,以实现如下操作:
在所述应用客户端启动时,所述操作***中包括的指定程序开始运行;
所述指定程序启动线程,所述线程启动通信服务端,由所述通信服务端与通信客户端建立通信连接;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,所述第一函数用于提取应用客户端的节点信息;
所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:在所述操作***中的第二函数之后,添加所述指定程序,所述第二函数用于在所述操作***中加载所述应用客户端的库文件;
所述处理器还用于加载所述至少一段程序,以实现如下操作:当所述应用客户端启动时调用所述第二函数,所述第二函数运行完成后,所述指定程序开始运行。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:
通过调用第三函数,获取所述应用客户端的库文件中包括的至少一个函数的函数名称,所述第三函数用于获取函数名称;
当获取到的函数名称中包括所述指定程序中设置的目标函数名称时,所述指定程序启动线程。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:将所述指定程序注入到所述操作***中,所述指定程序挂钩HOOK所述第一函数;
所述处理器还用于加载所述至少一段程序,以实现如下操作:当所述应用客户端调用所述第一函数时,所述线程截获所述应用客户端的节点信息。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:
所述线程缓存提取的所述节点信息;
当所述线程通过所述通信服务端接收到节点信息获取请求时,向所述通信客户端发送缓存的所述节点信息。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:
根据所述节点信息中至少一个节点的操作类型,确定所述应用客户端的应用界面中可操作的节点;
对所述节点执行触发操作,得到操作结果。
可选地,所述处理器还用于加载所述至少一段程序,以实现如下操作:
根据所述节点信息中至少一个节点对应的显示元素,显示所述应用客户端的应用界面。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一段程序,所述至少一段程序包括操作***、指定程序和应用客户端;所述指定程序包括线程、通信服务端和通信客户端;
所述至少一段程序由处理器加载并执行以实现所述的节点信息获取方法中所执行的操作。
本发明实施例提供的方法、装置及存储介质,在操作***中第二函数之后添加指定程序,当第二函数开始运行时,指定程序开始运行,调用第三函数获取应用客户端的库文件中的函数名称,当获取到的函数名称中包括指定程序中设置的目标函数名称时,指定程序启动线程,线程调用应用客户端的库文件中用于提取应用客户端的节点信息的第一函数,提取应用客户端的节点信息,线程通过通信服务端,节点信息发送至通信客户端。本发明实施例提供了一种节点信息获取方法,无需获取应用客户端的源程序,只需在操作***中添加指定程序,即可利用该指定程序获取应用客户端的节点信息,摆脱了应用客户端的源程序的限制,扩展了应用范围。
对于多个应用客户端来说,相关技术的方案只能适用于已经获取到源程序的应用客户端,而不适用于未获取到源程序的应用客户端。而本发明实施例提供的方法适用于终端上安装的任一应用客户端。无论是否获取到应用客户端的源程序均可采用本发明实施例提供的方法来获取节点信息。
并且,相关技术的方案在每个应用客户端的源程序中植入指定程序后,均需要进行编译,得到植入指定程序的应用客户端,编译过程会耗费较长的时间。而本发明实施例提供的方法不需要对每个应用客户端植入指定程序后的源程序进行编译,节省了时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术示出的一种节点信息获取方法的流程图;
图2是本发明实施例提供的一种终端的框图;
图3是本发明实施例提供的一种节点信息获取方法的流程图;
图4是本发明实施例提供的一种操作流程示意图;
图5是本发明实施例提供的另一种操作流程示意图;
图6是本发明实施例提供的另一种操作流程示意图;
图7是本发明实施例提供的另一种操作流程示意图;
图8是本发明实施例提供的一种终端的框图;
图9是本发明实施例提供的一种终端的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种终端的框图,该终端可以为手机、平板电脑、计算机等设备。如图2所示,该终端包括:操作***1和应用客户端2,操作***1中包括指定程序101和应用客户端的库文件102。
操作***1作为终端运行的基础,是管理和控制终端的计算机程序,为终端上的其他程序提供接口,供其他程序调用。操作***1可以为安卓操作***或iOS(iPhoneOperating System,苹果操作***)等。
应用客户端2是安装于终端的第三方应用程序,能够调用操作***提供的接口,实现特定的功能。开发者开发出应用客户端2的安装包后进行发布,终端可以通过网络下载或蓝牙传输等方式获取应用客户端2的安装包,运行该安装包,从而将该应用客户端2安装于终端中。并且,该应用客户端2的安装包中包括库文件102,库文件102包括多种函数,用于为应用客户端2的运行提供支持,则将应用客户端2安装于终端上时,可将该应用客户端2的库文件102添加至操作***1中,后续应用客户端2在运行过程中可以调用该库文件102中的函数。
本发明实施例中,为了便于获取应用客户端2的节点信息,在操作***中添加了指定程序101,指定程序101包括线程1011、通信服务端1012和通信客户端1013。
线程1011用于获取应用客户端2的节点信息,通过通信服务端1012和通信客户端1011之间建立的通信连接,将该节点信息发送至通信客户端1013。
本发明实施例提供的节点信息获取方法,可应用于根据应用客户端的节点信息进行分析的场景下。
例如,第一种场景:应用测试场景
当开发人员开发出应用客户端后,将应用客户端安装于测试终端上,在测试终端上,采用本发明实施例提供的节点信息获取方法获取应用客户端的节点信息。利用获取到的节点信息确定应用客户端中的各个节点,对各个节点分别进行触发操作,从而模拟用户触发节点的效果,得到该应用客户端的测试结果,根据该测试结果分析应用客户端运行是否正常,发现应用客户端的错误。
第二种场景:应用安全检测场景
检测人员将应用客户端安装于检测终端中,在检测终端上,采用本发明实施例提供的节点信息获取方法获取应用客户端的节点信息。利用获取到的节点信息显示应用客户端的应用界面。检测人员可以查看应用界面,基于应用界面进行下一步操作等,从而检测应用客户端中是否存在违规行为,如应用界面中包括敏感图片、未经用户同意进行转账的行为等。
图3是本发明实施例提供的一种节点信息获取方法的流程图。本发明实施例应用于终端中。如图3所示,该方法包括:
301、在操作***中用于加载应用客户端的库文件的第二函数之后,添加指定程序。
本发明实施例是以终端中已安装应用客户端为例,对获取应用客户端的节点信息的过程进行说明。
其中,应用客户端可以为即时通讯客户端,用户可通过该即时通讯客户端与好友进行通讯。或者,应用客户端也可以为游戏客户端,用户可通过游戏客户端进行游戏。或者,应用客户端也可以为信息展示客户端,用户可以浏览信息展示客户端上展示的多种信息。
本发明实施例中,在终端的操作***中添加指定程序,该指定程序用于获取应用客户端的节点信息。因此,在应用客户端启动时,可以控制指定程序运行,以获取应用客户端的节点信息。
在一种可能实现方式中,在终端上安装应用客户端时,将该应用客户端的库文件添加至该终端的操作***中,该库文件中包括供应用客户端调用的至少一个函数。而在应用客户端启动时,操作***会加载应用客户端的库文件,从而使应用客户端启动后能够基于操作***加载的库文件运行,由库文件为应用客户端的运行过程提供支持。
因此,通过操作***是否加载应用客户端的库文件,可以确定应用客户端是否启动。操作***加载应用客户端的库文件时,表明该应用客户端启动,则指定程序开始运行。
在一种可能实现方式中,应用客户端启动时,会调用用于在操作***中加载应用客户端的库文件的第二函数,以便操作***加载该库文件,从而使应用客户端启动后能够基于操作***加载的库文件运行。
因此,当第二函数运行时,即操作***已经加载应用客户端的库文件时,表明该应用客户端已经启动,通过第二函数的运行与否,可以确定应用客户端是否已经开始运行。而在操作***中的第二函数之后添加指定程序,这样可以保证在第二函数运行完成后,即应用客户端已经启动后,位于第二函数之后的指定程序开始运行。
本发明实施例中,在第二函数之后添加指定程序,也即是在操作***的源码中第二函数之后植入了指定程序,对操作***的源码进行了修改。除第二函数之外,还可以在操作***的源码中的其他位置植入指定程序。
302、当应用客户端调用第二函数,第二函数开始运行时,操作***加载应用客户端的库文件,第二函数运行完成后指定程序开始运行。
当终端检测到对应用客户端的触发操作时,启动应用客户端,在应用客户端的启动过程中,会调用用于加载应用客户端的库文件的第二函数,第二函数开始运行,此时操作***会加载该应用客户端的库文件。由于指定程序位于第二函数之后,故在第二函数运行完成后,指定程序开始运行。
303、指定程序调用第三函数,获取应用客户端的库文件中包括的至少一个函数的函数名称。
应用客户端基于框架开发,库文件由框架提供,则基于相同框架开发的应用客户端,其库文件相同,而基于不同框架开发的应用客户端,其库文件也不同。其中,框架可以为cocos2dx(一种开源的移动2D游戏框架)、unity(一种游戏引擎)或其他框架。
而库文件中包括至少一个函数,每个函数具有函数名称,且不同函数的函数名称不同。因此,库文件中的函数名称可以在一定程度上表示应用客户端是哪一类应用客户端。
为了对启动的应用客户端进行判别,指定程序中包括第三函数,该第三函数用于获取应用客户端的库文件中包括的至少一个函数的函数名称。当指定程序启动时,第三函数运行,获取到库文件中每个函数的函数名称。该第三函数可以为dlsym函数或其他函数。
例如,库文件中包括函数A、函数B、函数C,通过调用第三函数,获取到该库文件中的三个函数的名称:“函数A”、“函数B”和“函数C”。
304、当获取到的函数名称中包括指定程序中设置的目标函数名称时,指定程序启动线程。
指定程序中预先设置目标函数名称,用于指示库文件中包括该目标函数名称的应用客户端即为需要获取节点信息的应用客户端。因此通过调用第三函数,获取到应用客户端的库文件中每个函数的函数名称后,与指定程序中目标函数名称进行对比,当获取到的函数名称中包括目标函数名称时,表示当前运行的应用客户端即为需要获取节点信息的应用客户端,因此指定程序启动线程,该线程用于获取应用客户端的节点信息。
基于步骤203的举例,在指定程序中预先设置的目标函数名称为“函数B”,由于应用客户端的库文件中的函数名称分别为“函数A”、“函数B”和“函数C”,包括“函数B”,因此指定程序启动用于获取节点信息的线程。
需要说明的是,该目标函数名称可以为技术人员设置的、需要获取节点信息的应用客户端的库文件中包括的任一函数名称,或者还可以为某种框架提供的库文件中特有的函数名称,从而仅获取基于该框架开发的应用客户端的节点信息,而不再获取基于其他框架开发的应用客户端的节点信息。
图4是本发明实施例提供的一种操作流程示意图,当应用客户端启动,第二函数运行,以加载应用客户端的库文件,而后指定程序运行,指定程序中包括的第三函数运行,以获取库文件中函数名称,判断是否获取到目标函数名称,如果是,启动线程,如果否,不启动线程,应用客户端继续运行。
305、线程启动通信服务端,由通信服务端与通信客户端建立通信连接。
指定程序中包括线程、通信服务端和通信客户端,指定程度启动线程后,线程启动通信服务端。此时,通信服务端与通信客户端建立通信连接,两者通过建立的通信连接可以进行数据传输,通信服务端通过该通信连接,向通信客户端发送数据,或者接收通信客户端发送的请求,通信客户端通过该通信连接,接收通信服务端发送的数据,或者向通信服务端发送请求。
例如,通信服务端为socket(套接字)服务端,通信客户端为socket客户端,线程启动之后启动socket服务端,socket服务端通过已设置的socket端口,与socket客户端建立socket连接。并且,socket服务端监听该socket端口,判断是否接收到socket客户端发送的请求。
306、线程调用应用客户端的库文件中用于提取应用客户端的节点信息的第一函数,提取应用客户端的节点信息。
由于应用客户端的库文件中包括用于提取应用客户端的节点信息的第一函数,因此线程调用第一函数,第一函数提取应用客户端的节点信息后,返回给线程,线程即可获取到应用客户端的节点信息。
其中,应用客户端的节点信息中包括一个或多个节点,每个节点代表应用界面中的一个显示元素,显示元素可以包括控件或控件中显示的素材,控件包括按钮、滑动条、图标等,素材包括图片、视频、文本等。节点信息中还包括每个节点的描述信息,该描述信息可以包括节点的属性、样式、在界面中的位置等信息。
需要说明的是,本发明实施例的步骤201-206是在操作***的源码中植入指定程序以获取节点信息。而在另一实施例中,也可以不修改操作***的源码,而是采用HOOK(挂钩)的方式获取节点信息。
相应的,步骤301-306可以由以下步骤代替:
1、将指定程序注入到操作***中,指定程序HOOK应用客户端的库文件中的第一函数。
2、操作***中包括的指定程序开始运行,启动线程,线程启动通信服务端,由通信服务端与通信客户端建立通信连接。
3、在应用客户端的运行过程中,当应用客户端调用第一函数时,第一函数提取应用客户端的节点信息,由于指定程序已经HOOK该第一函数,因此线程截获应用客户端的节点信息。
例如,应用客户端的运行过程中,当需要显示应用界面A时,会调用第一函数,获取应用界面A的节点信息,此时线程可以截获应用界面A的节点信息。
307、线程通过通信服务端,向通信客户端发送节点信息。
308、通信客户端接收节点信息。
在一种可能实现方式中,当线程提取到节点信息时,不再进行缓存,直接通过通信服务端,将节点信息发送至通信客户端,通信客户端接收该节点信息,存储接收到的节点信息,以备后续使用。
在另一种可能实现方式中,线程提取到节点信息后,缓存提取的节点信息。
其中,终端上可以设置缓存区,线程可以将提取到的节点信息存储于缓存区中。另外,缓存节点信息时还可以记录节点信息的存储时间,如果线程提取的节点信息的数据量超出了缓存区的最大数据量时,按照存储时间的早晚,确定缓存区中存储时间最早的节点信息,删除该节点信息。例如,在采用HOOK方式获取节点信息时,由于应用客户端会在不同的时间获取不同应用界面的节点信息,以显示不同的应用界面,因此线程也会在不同的时间获取到不同的节点信息,并在缓存区中尽可能保留存储时间较晚的节点信息。
当通信客户端需要使用节点信息时,向通信服务端发送节点信息获取请求,当线程通过通信服务端接收到节点信息获取请求时,向通信客户端发送缓存的节点信息。
可选地,通信客户端可以周期性地发送节点信息获取请求,也即是每隔固定的时长,向通信服务端发送节点信息获取请求,从而接收通信服务端返回的节点信息。或者,通信客户端接收到节点信息获取指令时,向通信服务端发送节点信息获取请求,从而接收通信服务端返回的节点信息。该节点信息获取指令可以由操作人员在终端上触发。例如,终端上显示开始测试按钮,当操作人员点击开始测试按钮时,生成节点信息获取指令,通信客户端接收到节点信息获取指令时,向通信服务端发送节点信息获取请求,从而接收通信服务端返回的节点信息,根据该节点信息进行测试。
图5是本发明实施例提供的另一种操作流程示意图,当启动线程时,线程启动通信服务端,通信服务端与通信客户端建立通信连接,线程提取节点信息后存储,通信服务端监听通信端口,判断是否接收到通信客户端发送的节点信息获取请求,如果是,提取存储的节点信息,通过通信服务端发送至通信客户端,如果否,继续监听。
通信客户端接收到节点信息后,可将该节点信息用于以下任一项:
在一种可能实现方式中,根据节点信息中至少一个节点的操作类型,确定应用客户端的应用界面中可操作的节点,对确定的节点执行触发操作,得到操作结果。
节点可以包括两种操作类型:可操作的节点以及不可操作的节点,例如按钮、滑动条等控件均属于可操作的节点,可操作的节点包括可点击的节点和可滑动的节点,对于可点击的节点的触发操作为点击操作,对于可滑动节点的触发操作为滑动操作;而图片、视频等素材均属于不可操作的节点。
本发明实施例中,为了模拟应用客户端的运行过程,根据节点信息确定每个节点的操作类型,根据操作类型确定应用客户端的应用界面中可操作的节点,对可操作的节点进行触发操作,模拟了用户触发该节点的效果,此时,应用客户端会检测到该触发操作,并根据该触发操作进行操作,产生操作结果,该操作结果能够反映应用客户端的运行情况。
可选地,当可操作的节点包括多个节点时,采用上述方式,依次对该多个节点进行触发操作,得到每个节点对应的操作结果。
后续过程中,操作人员可以利用得到的操作结果,对应用客户端进行分析,了解应用客户端的运行情况,发现应用客户端中存在的错误,衡量应用客户端的质量,对应用客户端的应用安全性进行判别。
例如,应用客户端内包括登录界面,该登录界面中包括输入框和登录按钮,需要通过该登录界面进行登录后才可进入登录成功后的应用界面,从而获取登录成功后的应用界面的节点信息。因此,采用本发明实施例提供的节点信息获取方法,能够获取到该登录界面的节点信息,确定应用客户端的应用界面中可操作的节点,即为输入框和登录按钮,在输入框中输入用户账号,对登录按钮进行触发操作,模拟了用户输入用户账号后触发该登录按钮的操作,此时登录完成,应用客户端从登录界面切换成登录成功后的应用界面,即可获取登录成功后的应用界面的节点信息。后续操作人员可利用登录成功后的应用界面的节点信息,对应用客户端进行分析。
例如,应用客户端内设置了一个登录界面,该登录界面用于登录至一个违规网站,如果仅获取应用客户端的其他应用界面的节点信息,将无法识别出该违规网站。但是,采用本发明实施例提供的节点信息获取方法,能够获取到该登录界面的节点信息,从而登录至该违规网站,及时地发现该违规网站。
图6是本发明实施例提供的另一种操作流程示意图,通信客户端接收节点信息,从节点信息中提取一个节点的信息,判断当前的节点是否为可操作节点,如果是,对可操作节点进行触发操作,得到操作结果,如果否,继续从节点信息中提取下一个节点的信息。
图7是本发明实施例提供的另一种操作流程示意图,对应用客户端启动后获取应用客户端的节点信息的整体过程进行了说明。
在另一种可能实现方式中,根据节点信息中至少一个节点对应的显示元素,显示应用客户端的应用界面。
应用客户端的节点信息中包括一个或多个节点,以及每个节点的描述信息,根据节点信息可以确定每个节点对应的显示元素,还原出该应用客户端的应用界面。
后续过程中,操作人员可以查看应用客户端的应用界面,根据应用界面对应用客户端进行分析,了解应用客户端的运行情况,发现应用客户端中存在的错误,衡量应用客户端的质量。
例如,应用客户端的应用界面中包括隐藏按钮或隐藏图片,用户观看应用客户端的应用界面时,无法查看到隐藏按钮或隐藏图片,可能会不小心执行了对隐藏按钮或隐藏图片的触发操作。当应用客户端检测到用户对隐藏按钮或隐藏图片的触发操作时,会从用户的银行账户中扣费,给用户带来了损失。
而采用本发明实施例提供的节点信息获取方法,能够获取应用客户端的节点信息,根据节点信息可以确定每个节点对应的显示元素,还原出该应用客户端的应用界面,还原出的应用界面会将该隐藏按钮或隐藏图片显示出来,以供检测人员对该应用客户端进行检测时对该隐藏按钮或隐藏图片进行分析,及时发现应用客户端私自扣费的行为。
又如,采用本发明实施例提供的节点信息获取方法,可以获取到应用客户端的节点信息,根据节点信息还原出应用客户端的应用界面,确定应用界面中包含的控件、素材及其所在位置,此时可以将应用界面与样本应用客户端的应用界面进行对比分析,得到该应用界面与样本应用客户端的应用界面之间的相似度,供操作人员参考,操作人员根据该相似度,可以判断应用客户端是否模仿了样本应用客户端。
本发明实施例提供的方法,在操作***中第二函数之后添加指定程序,当第二函数开始运行时,指定程序开始运行,调用第三函数获取应用客户端的库文件中的函数名称,当获取到的函数名称中包括指定程序中设置的目标函数名称时,指定程序启动线程,线程调用应用客户端的库文件中用于提取应用客户端的节点信息的第一函数,提取应用客户端的节点信息,线程通过通信服务端,节点信息发送至通信客户端。本发明实施例提供了一种节点信息获取方法,无需获取应用客户端的源程序,只需在操作***中添加指定程序,即可利用该指定程序获取应用客户端的节点信息,摆脱了应用客户端的源程序的限制,扩展了应用范围。
对于多个应用客户端来说,相关技术的方案只能适用于已经获取到源程序的应用客户端,而不适用于未获取到源程序的应用客户端。而本发明实施例提供的方法适用于终端上安装的任一应用客户端。无论是否获取到应用客户端的源程序均可采用本发明实施例提供的方法来获取节点信息。
并且,相关技术的方案在每个应用客户端的源程序中植入指定程序后,均需要进行编译,得到植入指定程序的应用客户端,编译过程会耗费较长的时间。而本发明实施例提供的方法不需要对每个应用客户端植入指定程序后的源程序进行编译,节省了时间。
图8是本发明实施例提供的一种终端的框图,如图8所示,该终端800包括:处理器801和存储器802,存储器802中存储有至少一段程序,至少一段程序包括操作***、指定程序和应用客户端;指定程序包括线程、通信服务端和通信客户端;
处理器801用于加载至少一段程序,以实现如下操作:
在应用客户端启动时,操作***中包括的指定程序开始运行;
指定程序启动线程,线程启动通信服务端,由通信服务端与通信客户端建立通信连接;
线程通过调用应用客户端的库文件中的第一函数,提取应用客户端的节点信息,第一函数用于提取应用客户端的节点信息;
线程通过通信服务端,向通信客户端发送节点信息。
在一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:在应用客户端启动时,终端的操作***加载应用客户端的库文件,则指定程序开始运行。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:在操作***中的第二函数之后,添加指定程序,第二函数用于在操作***中加载应用客户端的库文件;
处理器801还用于加载至少一段程序,以实现如下操作:当应用客户端启动时调用第二函数,第二函数运行完成后,指定程序开始运行。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:
通过调用第三函数,获取应用客户端的库文件中包括的至少一个函数的函数名称,第三函数用于获取函数名称;
当获取到的函数名称中包括指定程序中设置的目标函数名称时,指定程序启动线程。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:将指定程序注入到操作***中,指定程序HOOK第一函数;
处理器801还用于加载至少一段程序,以实现如下操作:当应用客户端调用第一函数时,线程截获应用客户端的节点信息。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:
线程缓存提取的节点信息;
当线程通过通信服务端接收到节点信息获取请求时,向通信客户端发送缓存的节点信息。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:
根据节点信息中至少一个节点的操作类型,确定应用客户端的应用界面中可操作的节点;
对节点执行触发操作,得到操作结果。
在另一种可能实现方式中,处理器801还用于加载至少一段程序,以实现如下操作:
根据节点信息中至少一个节点对应的显示元素,显示应用客户端的应用界面。
本发明实施例提供的终端,在操作***中第二函数之后添加指定程序,当第二函数开始运行时,指定程序开始运行,调用第三函数获取应用客户端的库文件中的函数名称,当获取到的函数名称中包括指定程序中设置的目标函数名称时,指定程序启动线程,线程调用应用客户端的库文件中用于提取应用客户端的节点信息的第一函数,提取应用客户端的节点信息,线程通过通信服务端,节点信息发送至通信客户端。本发明实施例提供了一种节点信息获取方法,无需获取应用客户端的源程序,只需在操作***中添加指定程序,即可利用该指定程序获取应用客户端的节点信息,摆脱了应用客户端的源程序的限制,扩展了应用范围。
图9是本发明一个示例性实施例提供的一种终端900的框图。该终端900可以是便携式移动终端,比如:智能手机、平板电脑、笔记本电脑、台式电脑,或其他终端。
通常,终端900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的,用于存储至少一段程序,该至少一段程序用于被处理器901所加载以实现本申请中方法实施例提供的节点信息获取方法。
在一些实施例中,终端900还可选包括有:***设备接口903和至少一个***设备。处理器901、存储器902和***设备接口903之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口903相连。具体地,***设备包括:射频电路904、显示屏905和音频电路906中的至少一种。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。该显示屏905可以是触摸显示屏,还可以用于提供虚拟按钮和/或虚拟键盘。
音频电路906可以包括麦克风和扬声器。麦克风用于采集用户及环境的音频信号,并将音频信号转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为音频信号。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一段程序,至少一段程序包括操作***、指定程序和应用客户端;指定程序包括线程、通信服务端和通信客户端;
至少一段程序由处理器加载并具有以实现上述实施例的节点信息获取方法中所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明实施例的较佳实施例,并不用以限制本发明实施例,凡在本发明实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种节点信息获取方法,其特征在于,应用于终端中,所述终端安装有应用客户端,所述方法包括:
在所述应用客户端启动时,所述操作***中包括的指定程序开始运行;
所述指定程序启动线程,所述线程启动通信服务端,由所述通信服务端与通信客户端建立通信连接;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,所述第一函数用于提取应用客户端的节点信息;
所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息。
2.根据权利要求1所述的方法,其特征在于,所述在所述应用客户端启动时,所述操作***中包括的指定程序开始运行,包括:
在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行。
3.根据权利要求2所述的方法,其特征在于,所述在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行之前,所述方法还包括:在所述操作***中的第二函数之后,添加所述指定程序,所述第二函数用于在所述操作***中加载所述应用客户端的库文件;
所述在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行,包括:当所述应用客户端启动时调用所述第二函数,所述第二函数运行完成后,所述指定程序开始运行。
4.根据权利要求1所述的方法,其特征在于,所述指定程序启动线程,包括:
通过调用第三函数,获取所述应用客户端的库文件中包括的至少一个函数的函数名称,所述第三函数用于获取函数名称;
当获取到的函数名称中包括所述指定程序中设置的目标函数名称时,所述指定程序启动线程。
5.根据权利要求1所述的方法,其特征在于,所述在所述应用客户端启动时,所述操作***中包括的指定程序开始运行之前,所述方法还包括:将所述指定程序注入到所述操作***中,所述指定程序挂钩HOOK所述第一函数;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,包括:当所述应用客户端调用所述第一函数时,所述线程截获所述应用客户端的节点信息。
6.根据权利要求1所述的方法,其特征在于,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息,包括:
所述线程缓存提取的所述节点信息;
当所述线程通过所述通信服务端接收到节点信息获取请求时,向所述通信客户端发送缓存的所述节点信息。
7.根据权利要求1所述的方法,其特征在于,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息之后,所述方法还包括:
根据所述节点信息中至少一个节点的操作类型,确定所述应用客户端的应用界面中可操作的节点;
对所述节点执行触发操作,得到操作结果。
8.根据权利要求1所述的方法,其特征在于,所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息之后,所述方法还包括:
根据所述节点信息中至少一个节点对应的显示元素,显示所述应用客户端的应用界面。
9.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序包括操作***、指定程序和应用客户端;所述指定程序包括线程、通信服务端和通信客户端;
所述处理器用于加载所述至少一段程序,以实现如下操作:
在所述应用客户端启动时,所述操作***中包括的指定程序开始运行;
所述指定程序启动线程,所述线程启动通信服务端,由所述通信服务端与通信客户端建立通信连接;
所述线程通过调用所述应用客户端的库文件中的第一函数,提取所述应用客户端的节点信息,所述第一函数用于提取应用客户端的节点信息;
所述线程通过所述通信服务端,向所述通信客户端发送所述节点信息。
10.根据权利要求9所述的装置,其特征在于,所述处理器还用于加载所述至少一段程序,以实现如下操作:在所述应用客户端启动时,所述终端的操作***加载所述应用客户端的库文件,则所述指定程序开始运行。
11.根据权利要求10所述的装置,其特征在于,所述处理器还用于加载所述至少一段程序,以实现如下操作:在所述操作***中的第二函数之后,添加所述指定程序,所述第二函数用于在所述操作***中加载所述应用客户端的库文件;
所述处理器还用于加载所述至少一段程序,以实现如下操作:当所述应用客户端启动时调用所述第二函数,所述第二函数运行完成后,所述指定程序开始运行。
12.根据权利要求9所述的装置,其特征在于,所述处理器还用于加载所述至少一段程序,以实现如下操作:
通过调用第三函数,获取所述应用客户端的库文件中包括的至少一个函数的函数名称,所述第三函数用于获取函数名称;
当获取到的函数名称中包括所述指定程序中设置的目标函数名称时,所述指定程序启动线程。
13.根据权利要求9所述的装置,其特征在于,所述处理器还用于加载所述至少一段程序,以实现如下操作:将所述指定程序注入到所述操作***中,所述指定程序挂钩HOOK所述第一函数;
所述处理器还用于加载所述至少一段程序,以实现如下操作:当所述应用客户端调用所述第一函数时,所述线程截获所述应用客户端的节点信息。
14.根据权利要求9所述的装置,其特征在于,所述处理器还用于加载所述至少一段程序,以实现如下操作:
根据所述节点信息中至少一个节点的操作类型,确定所述应用客户端的应用界面中可操作的节点;
对所述节点执行触发操作,得到操作结果。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一段程序,所述至少一段程序包括操作***、指定程序和应用客户端;所述指定程序包括线程、通信服务端和通信客户端;
所述至少一段程序由处理器加载并执行以实现如权利要求1至8任一权利要求所述的节点信息获取方法中所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910538538.0A CN110286958B (zh) | 2019-06-20 | 2019-06-20 | 节点信息获取方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910538538.0A CN110286958B (zh) | 2019-06-20 | 2019-06-20 | 节点信息获取方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110286958A true CN110286958A (zh) | 2019-09-27 |
CN110286958B CN110286958B (zh) | 2021-10-29 |
Family
ID=68004442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910538538.0A Active CN110286958B (zh) | 2019-06-20 | 2019-06-20 | 节点信息获取方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110286958B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222709A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种手机应用程序快速启动的方法 |
CN103607644A (zh) * | 2013-10-23 | 2014-02-26 | 四川长虹电器股份有限公司 | 一种Android电视自定义屏保程序的方法 |
CN104572046A (zh) * | 2013-10-16 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种堆栈还原方法和计算机*** |
CN104699608A (zh) * | 2015-03-10 | 2015-06-10 | 于秀山 | 图形用户界面软件自动测试方法及装置 |
CN105159832A (zh) * | 2015-09-29 | 2015-12-16 | 北京奇虎科技有限公司 | 一种在应用测试中收集应用异常信息的方法、装置和*** |
CN105224457A (zh) * | 2015-09-29 | 2016-01-06 | 北京奇虎科技有限公司 | 一种测试框架实现方法和装置 |
US20160188432A1 (en) * | 2013-03-20 | 2016-06-30 | Beining Qihoo Technology Company Limited | Method and Apparatus for Intercepting Implanted Information in Application |
CN106162279A (zh) * | 2016-07-01 | 2016-11-23 | 青岛海信电器股份有限公司 | 基于安卓操作***的电视遥控按键响应方法及电视 |
US20170193059A1 (en) * | 2015-12-31 | 2017-07-06 | Quixey, Inc. | Searching For Applications Based On Application Usage |
CN108875011A (zh) * | 2018-06-15 | 2018-11-23 | 广州视源电子科技股份有限公司 | 第三方应用的页面状态信息获取方法、装置、设备及介质 |
CN108984389A (zh) * | 2018-06-01 | 2018-12-11 | 平安科技(深圳)有限公司 | 一种应用程序测试方法及终端设备 |
CN109189496A (zh) * | 2018-08-03 | 2019-01-11 | 平安科技(深圳)有限公司 | 应用程序的动态库信息获取方法及装置 |
-
2019
- 2019-06-20 CN CN201910538538.0A patent/CN110286958B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101222709A (zh) * | 2008-01-22 | 2008-07-16 | 中兴通讯股份有限公司 | 一种手机应用程序快速启动的方法 |
US20160188432A1 (en) * | 2013-03-20 | 2016-06-30 | Beining Qihoo Technology Company Limited | Method and Apparatus for Intercepting Implanted Information in Application |
CN104572046A (zh) * | 2013-10-16 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种堆栈还原方法和计算机*** |
CN103607644A (zh) * | 2013-10-23 | 2014-02-26 | 四川长虹电器股份有限公司 | 一种Android电视自定义屏保程序的方法 |
CN104699608A (zh) * | 2015-03-10 | 2015-06-10 | 于秀山 | 图形用户界面软件自动测试方法及装置 |
CN105159832A (zh) * | 2015-09-29 | 2015-12-16 | 北京奇虎科技有限公司 | 一种在应用测试中收集应用异常信息的方法、装置和*** |
CN105224457A (zh) * | 2015-09-29 | 2016-01-06 | 北京奇虎科技有限公司 | 一种测试框架实现方法和装置 |
US20170193059A1 (en) * | 2015-12-31 | 2017-07-06 | Quixey, Inc. | Searching For Applications Based On Application Usage |
CN106162279A (zh) * | 2016-07-01 | 2016-11-23 | 青岛海信电器股份有限公司 | 基于安卓操作***的电视遥控按键响应方法及电视 |
CN108984389A (zh) * | 2018-06-01 | 2018-12-11 | 平安科技(深圳)有限公司 | 一种应用程序测试方法及终端设备 |
CN108875011A (zh) * | 2018-06-15 | 2018-11-23 | 广州视源电子科技股份有限公司 | 第三方应用的页面状态信息获取方法、装置、设备及介质 |
CN109189496A (zh) * | 2018-08-03 | 2019-01-11 | 平安科技(深圳)有限公司 | 应用程序的动态库信息获取方法及装置 |
Non-Patent Citations (2)
Title |
---|
AIKATERINI PALTOGLOU等: "Automated refactoring of client-side JavaScript code to ES6 modules", 《 2018 IEEE 25TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER)》 * |
JIMMY1224: "MFC框架程序剖析", 《HTTPS://BLOG.CSDN.NET/C_BASE_JIN/ARTICLE/DETAILS/52345563》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110286958B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853232B2 (en) | Adaptive system for mobile device testing | |
CN100562033C (zh) | 一种程控交换机的自动化测试工具和方法 | |
CN107436844B (zh) | 一种接口用例合集的生成方法及装置 | |
US7653547B2 (en) | Method for testing a speech server | |
US20130273853A1 (en) | Mobile device monitoring and testing | |
CN111611121B (zh) | 硬件模拟测试方法、装置及设备 | |
CN109376056A (zh) | 异常日志分析方法、装置、存储介质、移动终端及服务器 | |
CN103139010A (zh) | 终端、测试服务器和测试方法 | |
CN109831351B (zh) | 链路跟踪方法、装置、终端及存储介质 | |
CN109814801A (zh) | 应用登录方法、装置、终端及存储介质 | |
CN110377503A (zh) | 压力测试方法、装置、计算机设备及存储介质 | |
CN106357719A (zh) | 用于网络应用的基于页面的事件相关 | |
CN109783335B (zh) | 用户操作录制还原方法、装置、设备及可读存储介质 | |
CN109828920A (zh) | 一种日志分析方法、装置及计算机可读存储介质 | |
CN1996374A (zh) | 一种用于前置测试的方法、装置及*** | |
CN111427776A (zh) | 一种智能设备自动化测试方法及装置 | |
US9232420B1 (en) | Automated network testing using in-progress call detail records | |
CN116933707A (zh) | 设计电路的测试方法、装置、设备及介质 | |
CN110209557A (zh) | 用户操作录制还原方法、装置、设备及可读存储介质 | |
CN107197088A (zh) | 基于安卓移动设备的截图方法与装置 | |
CN110286958A (zh) | 节点信息获取方法、装置及存储介质 | |
CN107168648B (zh) | 文件存储方法、装置及终端 | |
CN107391354B (zh) | 自动监测终端性能的方法及***、存储装置 | |
CN110990275B (zh) | 一种手机银行的页面展示测试方法及装置 | |
CN114428737A (zh) | 基于微服务体系的通信方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |