CN108595240B - 屏幕快照的抓取方法、装置、设备及可读存储介质 - Google Patents
屏幕快照的抓取方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN108595240B CN108595240B CN201810357950.8A CN201810357950A CN108595240B CN 108595240 B CN108595240 B CN 108595240B CN 201810357950 A CN201810357950 A CN 201810357950A CN 108595240 B CN108595240 B CN 108595240B
- Authority
- CN
- China
- Prior art keywords
- window
- software
- screen
- snapshot
- operation key
- 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.)
- Active
Links
Images
Classifications
-
- 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/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种屏幕快照的抓取方法、装置、设备及可读存储介质,该方法包括:调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口;获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄;根据句柄的类别,确定软件在运行窗口内的操作键;触发操作键,获取屏幕快照。解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种屏幕快照的抓取方法、装置、设备及可读存储介质。
背景技术
病毒、蠕虫和特洛伊木马程序等恶意软件,传播速度快、影响范围广,严重威胁网络环境安全。运行展示是恶意软件分析中的重要手段,屏幕快照作为恶意软件运行状态的直接呈现,可以及时正确抓取恶意软件的行为及软件运行的特征动作。运行展示是恶意软件异常监视展现的基础,是恶意软件行为分析领域的一个重要研究内容。
目前,抓取屏幕快照通常是基于时间序列的全屏快照抓取。基于时间序列的全屏快照抓取,通常在沙箱系统运行后,启动需要分析的样本软件,定期抓取整个沙箱系统的屏幕快照。
然而,基于时间序列的全屏快照抓取有两个缺陷:1)、可操作性差,时间阈值设置具有不确定性,阈值设置的过低可能会产生大量无用截屏;过高则可能漏掉核心的信息;2)、精确性差,抓取时,抓取的内容包含大量无用的系统运行屏幕快照来。而且,当应用软件在后台运行时,抓取的屏幕快照将会是后台运行记录,而非恶意软件运行状态的直接呈现。
发明内容
本发明实施例提供一种屏幕快照的抓取方法、装置、设备及可读存储介质,用以解决现有技术中抓取屏幕快照可操作性差,精确性差的技术问题。
依据本发明实施例的第一个方面,提供了一种屏幕快照的抓取方法,所述方法包括:
调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口;
获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄;
根据句柄的类别,确定软件在运行窗口内的操作键;
触发操作键,获取屏幕快照。
可选的,所述根据句柄的类别,确定软件在运行窗口内的操作键,具体包括:
判断句柄的类别是否为按键button;
当判断结果为是时,获取button的文本内容;
在文本内容中没有包含预设的终止文本数据时,确定button为操作键。
可选的,所述触发操作键,获取屏幕快照之后,还包括:
将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度;
当相似度没有在预设的范围内时,存储抓取到的屏幕快照。
可选的,所述通过用户界面接口激活软件在沙箱内的运行窗口,包括:
判断软件在沙箱内的运行窗口是否为最前端窗口;
当结果为是时,通过用户界面接口激活软件在沙箱内的运行窗口;
当结果为否时,将运行窗口设置为最前端窗口,通过用户界面接口激活软件在沙箱内的运行窗口。
可选的,所述触发操作键,获取屏幕快照,包括:
按照预设的触发规则,触发操作键;
获取运行窗口的坐标范围,在坐标范围内获取屏幕快照。
依据本发明实施例的第二个方面,提供了一种屏幕快照的抓取装置,所述装置包括:
窗口获取模块,用于调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口;
句柄获取模块,用于获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄;
操作键获取模块,用于根据句柄的类别,确定软件在运行窗口内的操作键;
快照获取模块,用于触发操作键,获取屏幕快照。
可选的,所述装置还包括:
相似度获取模块,用于将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度;
存储模块,用于在相似度没有在预设的范围内时,存储抓取到的屏幕快照。
可选的,快照获取模块包括:
操作键触发单元,用于按照预设的触发规则,触发操作键;
范围获取单元,用于获取运行窗口的坐标范围,在坐标范围内获取屏幕快照。
依据本发明实施例的第三个方面,提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的屏幕快照的抓取程序,所述处理器执行所述屏幕快照的抓取程序时实现本发明实施例所提供的屏幕快照的抓取方法的步骤。
依据本发明实施例的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有屏幕快照的抓取程序,当所述屏幕快照的抓取程序被至少一个处理器执行时,导致所述至少一个处理器执行本发明实施例所提供的屏幕快照的抓取方法的步骤。
根据本发明实施例提供的一种屏幕快照的抓取方法、装置、设备及可读存储介质,通过调用用户界面接口激活软件在沙箱内的运行窗口,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄,根据句柄的类别,确定软件在运行窗口内的操作键,进一步地触发操作键,获取屏幕快照。以解决现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例提供的一种屏幕快照的抓取方法的流程图;
图2为本发明第二实施例提供的一种屏幕快照的抓取方法的流程图;
图3为本发明第三实施例提供的一种屏幕快照的抓取方法的流程图;
图4为本发明第四实施例提供的一种屏幕快照的抓取方法的流程图;
图5为本发明第五实施例提供的一种屏幕快照的抓取方法的流程图;
图6为本发明第六实施例提供的一种屏幕快照的抓取装置的功能模块示意图;
图7为本发明第七实施例提供的一种屏幕快照的抓取装置的功能模块示意图;
图8为本发明第八实施例提供的一种屏幕快照的抓取装置的功能模块示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
沙箱是一个虚拟系统程序,允许在虚拟环境中运行浏览器或其他程序,运行所产生的变化可以随后删除。沙箱搭建了一个独立作业环境,在沙箱内部运行的程序并不能对硬盘产生永久性的影响。
请参阅图1,为本发明第一实施提供的一种屏幕快照的抓取方法的流程图。本实施例中,所述屏幕快照的抓取方法包括如下步骤:
步骤S101,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
调用用户界面接口,通过所述用户界面接口激活软件在沙箱内的运行窗口。
其中,所述软件指的是测试使用的样本软件。调用用户界面接口激活样本软件在沙箱内的运行窗口,以使样本软件在沙箱内运行并在沙箱内展示该样本软件对应的用户界面。
具体实施时,基于python语言开发环境,其拥有丰富的库函数提供Windows API方法,进而对windows操作系统进行操作。使用ctypes模块,调用windows操作系统下的user32库激活样本软件在沙箱内的运行窗口。需要说明的是,其中,user32库为user32.dll库的简称,是Windows用户界面相关应用程序接口,用于用户界面处理;ctypes模块为Python内建的用于调用动态链接库函数的功能模块,用于Python与其他语言的混合编程。
步骤S102,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
具体实施时,枚举运行窗口内的所有顶层窗口,获取每一顶层窗口的句柄。根据顶层窗口的句柄,判断该顶层窗口是否对应有子窗口。在该顶层窗口对应有子窗口时,获取每一子窗口对应的句柄。
步骤S103,根据句柄的类别,确定软件在运行窗口内的操作键。
具体实施时,获取句柄的类别,根据句柄的类别确定软件在运行窗口内的操作键。如,该句柄的类别为按键button,则确定该按键button为操作键。
步骤S104,触发操作键,获取屏幕快照。
具体实施时,通过触发对应的操作键,获取样本软件在沙箱内的屏幕快照。可以清楚的是,通过触发样本软件的操作键,样本软件会执行对应的操作,以生成触发的结果,通过屏幕快照的方式获取该触发结果。具体的,通过枚举坐标位置,user32库的SetCursorPos函数将光标移动到指定位置,mouse_event函数来实现鼠标的点击动作。EnumWindows函数会枚举运行软件的所有顶层窗口,点击操作键,使软件运行下去。SendMessageW函数将指定的消息发送到指定前台窗口,从而获取动作处理结果,已确定是否完成屏幕快照的截取。
通过调用用户界面接口激活软件在沙箱内的运行窗口,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄,根据句柄的类别,确定软件在运行窗口内的操作键,进一步地触发操作键,获取屏幕快照。使的抓取到的屏幕快照更加的准确,解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,及提升了屏幕快照抓取的效率。
请参阅图2,为本发明第二实施提供的一种屏幕快照的抓取方法的流程图。本实施例中,所述屏幕快照的抓取方法包括如下步骤:
步骤S201,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
步骤S202,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S203,判断句柄的类别是否为按键button。
步骤S204,当判断结果为是时,获取button的文本内容。
具体实施时,如果句柄的类别为按键button时,获取button的文本内容,以便于确定该按键button的是否具备继续执行软件的功能。
步骤S205,在文本内容中没有包含预设的终止文本数据时,确定button为操作键。
具体实施时,判断获取到的文本内容中是否包含预设的终止文本内容。如,该预设的终止文本内容为:终止、退出、以及关闭等文本内容。为了使软件在触发操作键后能继续运行下去,无需将包含终止文本内容的按键button设置为操作键。软件尽可能运行下去,以便于完整的获取软件运行的所有屏幕快照。
步骤S206,触发操作键,获取屏幕快照。
其中,步骤S201、步骤S202、以及步骤S206已在第一实施例中进行了详细说明,在此不做赘述。
请参阅图3,为本发明第三实施提供的一种屏幕快照的抓取方法的流程图。本实施例中,所述屏幕快照的抓取方法包括如下步骤:
步骤S301,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
步骤S302,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S303,根据句柄的类别,确定软件在运行窗口内的操作键。
步骤S304,触发操作键,获取屏幕快照。
步骤S305,将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度。
本实施例中,为了避免快照重复性的保存,将抓取到的屏幕快照与已存储的屏幕快照两两比对。其中,可以理解的是,已存储的屏幕快照可以为与本次屏幕快照抓取时距离的最近的一次抓取并保存的屏幕快照。具体的,可以通过归一化互相关匹配法NCC算法将抓取到的屏幕快照与已存储的屏幕快照两两比对。
需要说明的是,归一化互相关匹配法NCC算法(Normalized cross correlation,NCC),能够摒弃快照抓取过程中最前端窗口与软件运行窗口一样的部分。对于大小一样的图片,首先预计算模板图像和目标图像的积分图,然后根据输入的窗口半径大小使用积分图完成NCC计算,进而比较运行软件快照之间的相似度。具体实施时,可以采用OpenCV模块提供的相关库来进行以上的操作。其中,OpenCV:基于BSD许可(开源)发行的跨平台计算机视觉库,其提供了丰富的视觉处理算法。
步骤S306,当相似度没有在预设的范围内时,存储抓取到的屏幕快照。
具体实施时,判断软件快照的相似度是否在预设的范围内,当相似度没有在预设的范围内时,存储抓取到的屏幕快照。
将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度;当相似度没有在预设的范围内时,存储抓取到的屏幕快照。使得获取到的屏幕快照无大量不用截屏,以保证抓取到的屏幕快照的精准性。解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
其中,步骤S301至步骤S204已在第一实施例中进行了详细说明,在此不做赘述。
请参阅图4,为本发明第四实施提供的一种屏幕快照的抓取方法的流程图。本实施例中,所述屏幕快照的抓取方法包括如下步骤:
步骤S401,调用用户界面接口。
步骤S402,判断软件在沙箱内的运行窗口是否为最前端窗口。
本发明实施例中,当判断所述软件在沙箱内的运行窗口为最前端窗口时,执行步骤S403;当判断所述软件在沙箱内的运行窗口不是最前端窗口时,执行步骤S404。
步骤S403,将运行窗口设置为最前端窗口。
步骤S404,通过用户界面接口激活软件在沙箱内的运行窗口。
本实施例中,当样本软件对应的运行窗口不是为最前端窗口时,将所述运行窗口设置为最前端窗口,通过用户界面接口激活样本软件在沙箱内运行的窗口。具体实施时,基于python语言开发环境,其拥有丰富的库函数提供Windows API方法,进而对windows操作系统进行操作。使用ctypes模块,调用windows操作系统下的user32库激活样本软件在沙箱内的运行窗口,使用该库的SetForegroundWindow函数,将该窗口的线程设置到前台,以使将所述运行窗口设置为最前端窗口。
步骤S405,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S406,根据句柄的类别,确定软件在运行窗口内的操作键。
步骤S407,触发操作键,获取屏幕快照。
其中,步骤S405至步骤S407已在第一实施例中进行了详细说明,在此不做赘述。
通过判断所述样本软件在沙箱内的运行窗口是否为最前端窗口,在样本软件的运行窗口不是在最前端时,将将运行窗口设置为最前端窗口,以便于完整获取所述样本软件的运行窗口在沙箱内的屏幕快照。解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
请参阅图5,为本发明第五实施提供的一种屏幕快照的抓取方法的流程图。本实施例中,所述屏幕快照的抓取方法包括如下步骤:
步骤S501,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
步骤S502,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S503,根据句柄的类别,确定软件在运行窗口内的操作键。
其中,步骤S501至步骤S503已在第一实施例中进行了详细说明,在此不做赘述。
步骤S504,按照预设的触发规则,触发操作键。
具体实施时,由于软件在沙箱内的运行窗口内,可能会包含多个顶层窗口,每一顶层窗口对应多个子窗口。因此,需要设定预设的触发规则,使软件在沙箱内连续运行下去。如,获取运行窗口的坐标值范围,在坐标值范围内产生均匀分布的随机数,从左到右,从上到下的优先级方式的方式依次触发顶层窗口对应的操作键。其中,在触发顶层窗口的操作键后,优先触发其子窗口对应的操作键,当该顶层窗口对应子窗口内的操作键全部完成触发后,再按照顶层窗口触发的优先级触发顶层窗口的操作键。
步骤S505,获取运行窗口的坐标范围,在坐标范围内获取屏幕快照。
具体实施时,样本软件在沙箱内的运行窗口对应的坐标值范围可能超过沙箱屏幕的整体大小。在软件的运行窗口超过沙箱屏幕的整体大小时,调用ImageGrab模块中的grab函数,最终来抓取运行窗口坐标值范围内的屏幕快照;当样本软件在沙箱内的运行窗口对应的坐标值范围小于沙箱屏幕的整体大小时,为了获取精准的屏幕快照,只需要抓取运行窗口坐标范围内的屏幕快照。通过获取运行窗口的坐标范围,在坐标范围内获取屏幕快照,以完整抓取该坐标范围内的屏幕快照。
请参阅图6,为本发明第六实施例提供的一种屏幕快照的抓取装置100的功能模块示意图。应用于计算机设备,该屏幕快照的抓取装置100包括窗口获取模块110、句柄获取模块120、操作键获取模块130、以及快照获取模块140。该装置主要用来实现本发明实施例提供的屏幕快照的抓取方法,该方法主要用于解决现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题。
其中,该计算机设备包括但不限于移动电话、手机、智能手机、平板电脑、个人电脑、个人数字助理、媒体播放器和其他电子设备。
窗口获取模块110,用于调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
调用用户界面接口,通过所述用户界面接口激活软件在沙箱内的运行窗口。
其中,所述软件指的是测试使用的样本软件。调用用户界面接口激活样本软件在沙箱内的运行窗口,以使样本软件在沙箱内运行并在沙箱内展示该样本软件对应的用户界面。
具体实施时,基于python语言开发环境,其拥有丰富的库函数提供Windows API方法,进而对windows操作系统进行操作。使用ctypes模块,调用windows操作系统下的user32库激活样本软件在沙箱内的运行窗口。需要说明的是,其中,user32库为user32.dll库的简称,是Windows用户界面相关应用程序接口,用于用户界面处理;ctypes模块为Python内建的用于调用动态链接库函数的功能模块,用于Python与其他语言的混合编程。
句柄获取模块120,用于获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
具体实施时,枚举运行窗口内的所有顶层窗口,获取每一顶层窗口的句柄。根据顶层窗口的句柄,判断该顶层窗口是否对应有子窗口。在该顶层窗口对应有子窗口时,获取每一子窗口对应的句柄。
操作键获取模块130,用于根据句柄的类别,确定软件在运行窗口内的操作键。
具体实施时,获取句柄的类别,根据句柄的类别确定软件在运行窗口内的操作键。如,该句柄的类别为按键button,则确定该按键button为操作键。
快照获取模块140,用于触发操作键,获取屏幕快照。
具体实施时,通过触发对应的操作键,获取样本软件在沙箱内的屏幕快照。可以清楚的是,通过触发样本软件的操作键,样本软件会执行对应的操作,以生成触发的结果,通过屏幕快照的方式获取该触发结果。具体的,通过枚举坐标位置,user32库的SetCursorPos函数将光标移动到指定位置,mouse_event函数来实现鼠标的点击动作。EnumWindows函数会枚举运行软件的所有顶层窗口,点击操作键,使软件运行下去。SendMessageW函数将指定的消息发送到指定前台窗口,从而获取动作处理结果,已确定是否完成屏幕快照的截取。
通过调用用户界面接口激活软件在沙箱内的运行窗口,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄,根据句柄的类别,确定软件在运行窗口内的操作键,进一步地触发操作键,获取屏幕快照。使的抓取到的屏幕快照更加的准确,解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,及提升了屏幕快照抓取的效率。
请参阅图7,为本发明第七实施例提供的屏幕快照的抓取装置100的功能模块示意图。应用于计算机设备,该计算机设备包括但不限于移动电话、手机、智能手机、平板电脑、个人电脑、个人数字助理、媒体播放器和其他电子设备。该屏幕快照的抓取装置100包括窗口获取模块110、句柄获取模块120、操作键获取模块130、以及快照获取模块140。在第六实施例的基础上,该装置还包括:
相似度获取模块150,用于将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度。
本实施例中,为了避免快照重复性的保存,将抓取到的屏幕快照与已存储的屏幕快照两两比对。其中,可以理解的是,已存储的屏幕快照可以为与本次屏幕快照抓取时距离的最近的一次抓取并保存的屏幕快照。具体的,可以通过归一化互相关匹配法NCC算法将抓取到的屏幕快照与已存储的屏幕快照两两比对。
需要说明的是,归一化互相关匹配法NCC算法(Normalized cross correlation,NCC),能够摒弃快照抓取过程中最前端窗口与软件运行窗口一样的部分。对于大小一样的图片,首先预计算模板图像和目标图像的积分图,然后根据输入的窗口半径大小使用积分图完成NCC计算,进而比较运行软件快照之间的相似度。具体实施时,可以采用OpenCV模块提供的相关库来进行以上的操作。其中,OpenCV:基于BSD许可(开源)发行的跨平台计算机视觉库,其提供了丰富的视觉处理算法。
存储模块160,用于在相似度没有在预设的范围内时,存储抓取到的屏幕快照。
具体实施时,判断软件快照的相似度是否在预设的范围内,当相似度没有在预设的范围内时,存储抓取到的屏幕快照。
将抓取到的屏幕快照与已存储的屏幕快照两两比对,获取相似度;当相似度没有在预设的范围内时,存储抓取到的屏幕快照。使得获取到的屏幕快照无大量不用截屏,以保证抓取到的屏幕快照的精准性。解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
请参阅图8,为本发明第八实施例提供的屏幕快照的抓取装置100的功能模块示意图。应用于计算机设备,该计算机设备包括但不限于移动电话、手机、智能手机、平板电脑、个人电脑、个人数字助理、媒体播放器和其他电子设备。该屏幕快照的抓取装置100包括窗口获取模块110、句柄获取模块120、操作键获取模块130、以及快照获取模块140。在第六实施例的基础上,所述快照获取模块140包括:
操作键触发单元141,用于按照预设的触发规则,触发操作键。
具体实施时,由于软件在沙箱内的运行窗口内,可能会包含多个顶层窗口,每一顶层窗口对应多个子窗口。因此,需要设定预设的触发规则,使软件在沙箱内连续运行下去。如,获取运行窗口的坐标值范围,在坐标值范围内产生均匀分布的随机数,从左到右,从上到下的优先级方式的方式依次触发顶层窗口对应的操作键。其中,在触发顶层窗口的操作键后,优先触发其子窗口对应的操作键,当该顶层窗口对应子窗口内的操作键全部完成触发后,再按照顶层窗口触发的优先级触发顶层窗口的操作键。
范围获取单元142,用于获取运行窗口的坐标范围,在坐标范围内获取屏幕快照。
具体实施时,样本软件在沙箱内的运行窗口对应的坐标值范围可能超过沙箱屏幕的整体大小。在软件的运行窗口超过沙箱屏幕的整体大小时,调用ImageGrab模块中的grab函数,最终来抓取运行窗口坐标值范围内的屏幕快照;当样本软件在沙箱内的运行窗口对应的坐标值范围小于沙箱屏幕的整体大小时,为了获取精准的屏幕快照,只需要抓取运行窗口坐标范围内的屏幕快照。通过获取运行窗口的坐标范围,在坐标范围内获取屏幕快照,以完整抓取该坐标范围内的屏幕快照。
本实施例中,当样本软件对应的运行窗口不是为最前端窗口时,将所述运行窗口设置为最前端窗口,通过用户界面接口激活样本软件在沙箱内运行的窗口。具体实施时,基于python语言开发环境,其拥有丰富的库函数提供Windows API方法,进而对windows操作系统进行操作。使用ctypes模块,调用windows操作系统下的user32库激活样本软件在沙箱内的运行窗口,使用该库的SetForegroundWindow函数,将该窗口的线程设置到前台,以使将所述运行窗口设置为最前端窗口。
通过判断所述样本软件在沙箱内的运行窗口是否为最前端窗口,以便于完整获取所述样本软件坐标范围内的操作键和截取到完整的软件运行窗口的屏幕快照。解决了现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有屏幕快照的抓取方法,当屏幕快照的抓取方法被至少一个处理器执行时,导致至少一个处理器执行如下步骤:
步骤S101,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
步骤S102,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S103,根据句柄的类别,确定软件在运行窗口内的操作键。
步骤S104,触发操作键,获取屏幕快照。
可选的,执行的步骤可替换为步骤S201至步骤S206、步骤S301至步骤S306、步骤S401至步骤S407、以及步骤S501至步骤S505。
由于在第一实施例至第五实施例中已经对屏幕快照的抓取方法实施过程进行了详细说明,本实施例中不再赘述。
本实施例中计算机设备包括但不限于移动电话、手机、智能手机、平板电脑、个人电脑、个人数字助理、媒体播放器和其他电子设备。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的屏幕快照的抓取程序,所述处理器执行所述屏幕快照的抓取程序,以实现如下步骤:
步骤S101,调用用户界面接口,通过用户界面接口激活软件在沙箱内的运行窗口。
步骤S102,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄。
步骤S103,根据句柄的类别,确定软件在运行窗口内的操作键。
步骤S104,触发操作键,获取屏幕快照。
可选的,执行的步骤可替换为步骤S201至步骤S206、步骤S301至步骤S306、步骤S401至步骤S407、以及步骤S501至步骤S505。
由于在第一实施例至第五实施例中已经对屏幕快照的抓取方法实施过程进行了详细说明,本实施例中不再赘述。
本实施例中计算机设备包括但不限于移动电话、手机、智能手机、平板电脑、个人电脑、个人数字助理、媒体播放器和其他电子设备。
本实施例计算机可读存储介质包括但不限于为:ROM、RAM、磁盘或光盘等。
综上所述,本发明实施例公开了一种屏幕快照的抓取方法、装置、设备及可读存储介质,通过调用用户界面接口激活软件在沙箱内的运行窗口,获取运行窗口内的每一顶层窗口和/或顶层窗口对应的每一子窗口的句柄,根据句柄的类别,确定软件在运行窗口内的操作键,进一步地触发操作键,获取屏幕快照。以解决现有技术中的抓取屏幕快照可操作性差,精确性差的技术问题,以及提升了屏幕快照抓取的效率。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种屏幕快照的抓取方法,其特征在于,所述方法包括:
调用用户界面接口,通过所述用户界面接口激活软件在沙箱内的运行窗口;
获取所述运行窗口内的每一顶层窗口和/或所述顶层窗口对应的每一子窗口的句柄;
根据所述句柄的类别,确定所述软件在所述运行窗口内的操作键;
触发所述操作键,获取所述操作键执行对应操作生成的触发结果的屏幕快照。
2.根据权利要求1所述的方法,其特征在于,根据所述句柄的类别,确定所述软件在所述运行窗口内的操作键,具体包括:
判断所述句柄的类别是否为按键button;
当判断结果为是时,获取所述button的文本内容;
在所述文本内容中没有包含预设的终止文本数据时,确定所述button为操作键。
3.根据权利要求1所述的方法,其特征在于,所述触发所述操作键,获取屏幕快照之后,还包括:
将抓取到的所述屏幕快照与已存储的屏幕快照两两比对,获取相似度;
当所述相似度没有在预设的范围内时,存储抓取到的所述屏幕快照。
4.根据权利要求1所述的方法,其特征在于,所述通过所述用户界面接口激活软件在沙箱内的运行窗口,包括:
判断所述软件在沙箱内的运行窗口是否为最前端窗口;
当结果为是时,通过所述用户界面接口激活软件在沙箱内的运行窗口;
当结果为否时,将所述运行窗口设置为最前端窗口,通过所述用户界面接口激活软件在沙箱内的运行窗口。
5.根据权利要求1所述的方法,其特征在于,所述触发所述操作键,获取屏幕快照,包括:
按照预设的触发规则,触发所述操作键;
获取所述运行窗口的坐标范围,在所述坐标范围内获取屏幕快照。
6.一种屏幕快照的抓取装置,其特征在于,所述装置包括:
窗口获取模块,用于调用用户界面接口,通过所述用户界面接口激活软件在沙箱内的运行窗口;
句柄获取模块,用于获取所述运行窗口内的每一顶层窗口和/或所述顶层窗口对应的每一子窗口的句柄;
操作键获取模块,用于根据所述句柄的类别,确定所述软件在所述运行窗口内的操作键;
快照获取模块,用于触发所述操作键,获取所述操作键执行对应操作生成的触发结果的屏幕快照。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
相似度获取模块,用于将抓取到的所述屏幕快照与已存储的屏幕快照两两比对,获取相似度;
存储模块,用于在所述相似度没有在预设的范围内时,存储抓取到的所述屏幕快照。
8.根据权利要求6所述的装置,其特征在于,所述快照获取模块包括:
操作键触发单元,用于按照预设的触发规则,触发所述操作键;
范围获取单元,用于获取所述运行窗口的坐标范围,在所述坐标范围内获取屏幕快照。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有屏幕快照的抓取程序,当所述屏幕快照的抓取程序被至少一个处理器执行时,导致所述至少一个处理器执行如权利要求1至5任意一项所述的方法步骤。
10.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的屏幕快照的抓取程序,所述处理器执行所述屏幕快照的抓取程序时实现权利要求1至5中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810357950.8A CN108595240B (zh) | 2018-04-20 | 2018-04-20 | 屏幕快照的抓取方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810357950.8A CN108595240B (zh) | 2018-04-20 | 2018-04-20 | 屏幕快照的抓取方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595240A CN108595240A (zh) | 2018-09-28 |
CN108595240B true CN108595240B (zh) | 2021-12-14 |
Family
ID=63613683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810357950.8A Active CN108595240B (zh) | 2018-04-20 | 2018-04-20 | 屏幕快照的抓取方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595240B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992125B (zh) * | 2019-03-29 | 2022-11-15 | 京东方科技集团股份有限公司 | 信息输入方法、装置和系统 |
CN110096324B (zh) * | 2019-04-22 | 2022-11-25 | 四川易简天下科技股份有限公司 | 一种基于windows系统的自动过滤自身窗口的高效抓屏方法 |
CN110806913A (zh) * | 2019-10-30 | 2020-02-18 | 支付宝(杭州)信息技术有限公司 | 网页截图方法、装置及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587456A (zh) * | 2009-07-08 | 2009-11-25 | 腾讯科技(深圳)有限公司 | 一种对软件运行的保护处理方法及装置 |
CN103425384A (zh) * | 2012-05-22 | 2013-12-04 | 北京神州泰岳软件股份有限公司 | 一种截取屏幕中窗口的方法和装置 |
CN103500104A (zh) * | 2013-09-09 | 2014-01-08 | 北京奇虎科技有限公司 | 一种沙箱界面的实现方法和装置 |
CN104200161A (zh) * | 2014-08-05 | 2014-12-10 | 杭州安恒信息技术有限公司 | 一种实现沙箱智能检测文件的方法及其沙箱智能检测系统 |
CN104346570A (zh) * | 2014-12-01 | 2015-02-11 | 西安邮电大学 | 一种基于动态代码序列跟踪分析的木马判定系统 |
CN106341282A (zh) * | 2016-11-10 | 2017-01-18 | 广东电网有限责任公司电力科学研究院 | 一种恶意代码行为分析装置 |
CN107368298A (zh) * | 2017-06-22 | 2017-11-21 | 努比亚技术有限公司 | 一种文本控件模拟触控方法、终端及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8701001B2 (en) * | 2011-01-28 | 2014-04-15 | International Business Machines Corporation | Screen capture |
CN103677489B (zh) * | 2012-08-31 | 2021-07-09 | 腾讯科技(深圳)有限公司 | 对浏览窗口进行操作的方法及装置 |
US10223192B2 (en) * | 2016-08-31 | 2019-03-05 | International Business Machines Corporation | Automated data storage library snapshot for host detected errors |
CN106775625A (zh) * | 2016-11-15 | 2017-05-31 | 北京金山安全软件有限公司 | 一种截屏图片的分享方法、装置及电子设备 |
-
2018
- 2018-04-20 CN CN201810357950.8A patent/CN108595240B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587456A (zh) * | 2009-07-08 | 2009-11-25 | 腾讯科技(深圳)有限公司 | 一种对软件运行的保护处理方法及装置 |
CN103425384A (zh) * | 2012-05-22 | 2013-12-04 | 北京神州泰岳软件股份有限公司 | 一种截取屏幕中窗口的方法和装置 |
CN103500104A (zh) * | 2013-09-09 | 2014-01-08 | 北京奇虎科技有限公司 | 一种沙箱界面的实现方法和装置 |
CN104200161A (zh) * | 2014-08-05 | 2014-12-10 | 杭州安恒信息技术有限公司 | 一种实现沙箱智能检测文件的方法及其沙箱智能检测系统 |
CN104346570A (zh) * | 2014-12-01 | 2015-02-11 | 西安邮电大学 | 一种基于动态代码序列跟踪分析的木马判定系统 |
CN106341282A (zh) * | 2016-11-10 | 2017-01-18 | 广东电网有限责任公司电力科学研究院 | 一种恶意代码行为分析装置 |
CN107368298A (zh) * | 2017-06-22 | 2017-11-21 | 努比亚技术有限公司 | 一种文本控件模拟触控方法、终端及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108595240A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2016286308B2 (en) | Robotic process automation | |
US10311234B2 (en) | Anti-ransomware | |
US10460106B2 (en) | Method and device for identifying computer virus variants | |
US9519401B2 (en) | Providing context menu based on predicted commands | |
CN108595240B (zh) | 屏幕快照的抓取方法、装置、设备及可读存储介质 | |
CN110837403A (zh) | 机器人过程自动化 | |
US20160170547A1 (en) | Distinguishing Between Touch Gestures and Handwriting | |
US11809556B2 (en) | System and method for detecting a malicious file | |
US11531748B2 (en) | Method and system for autonomous malware analysis | |
WO2017001560A1 (en) | Robotic process automation | |
US9733826B2 (en) | Interacting with application beneath transparent layer | |
US9884257B2 (en) | Method for preventing misoperations of intelligent terminal, and intelligent terminal | |
CN108470126B (zh) | 数据处理方法、装置及存储介质 | |
WO2014135055A1 (en) | Method for preventing misoperations of intelligent terminal, and intelligent terminal | |
WO2015073469A1 (en) | Functional validation of software | |
CN113256583A (zh) | 图像质量检测方法及装置、计算机设备和介质 | |
US20240152439A1 (en) | Detection Method and Electronic Device | |
US20170115866A1 (en) | Method, device and terminal apparatus for recognizing multi-finger sliding gesture | |
CN107250979B (zh) | 应用事件跟踪 | |
US20220004801A1 (en) | Image processing and training for a neural network | |
CN114205156A (zh) | 面向切面技术的报文检测方法、装置、电子设备及介质 | |
CN113342684A (zh) | 一种网页的测试方法、装置及设备 | |
CN111240696A (zh) | 移动恶意程序相似模块提取方法 | |
CN113094709B (zh) | 风险应用的检测方法、装置和服务器 | |
CN108803975B (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 |