CN111435391A - 自动确定gui中待交互的交互式gui元素的方法和设备 - Google Patents
自动确定gui中待交互的交互式gui元素的方法和设备 Download PDFInfo
- Publication number
- CN111435391A CN111435391A CN202010025498.2A CN202010025498A CN111435391A CN 111435391 A CN111435391 A CN 111435391A CN 202010025498 A CN202010025498 A CN 202010025498A CN 111435391 A CN111435391 A CN 111435391A
- Authority
- CN
- China
- Prior art keywords
- processor
- interactive gui
- algorithm
- likelihood
- gui
- 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.)
- Pending
Links
- 230000002452 interceptive effect Effects 0.000 title claims abstract description 203
- 238000000034 method Methods 0.000 title claims abstract description 113
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 178
- 230000015654 memory Effects 0.000 claims description 34
- 244000035744 Hura crepitans Species 0.000 claims description 27
- 238000012015 optical character recognition Methods 0.000 claims description 15
- 230000003993 interaction Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 description 18
- 230000006399 behavior Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001747 exhibiting effect Effects 0.000 description 2
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012567 pattern recognition method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/148—Segmentation of character regions
- G06V30/153—Segmentation of character regions using recognition of characters or words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种自动确定图形用户界面(GUI)中的待交互的交互式GUI元素的计算机实现的方法、设备和非暂时性计算机可读存储介质。该方法包括:处理器基于多个算法在GUI中检测一个或多个候选交互式GUI元素;处理器为一个或多个候选交互式GUI元素中的每个确定似然性指示符,似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性;以及处理器基于似然性指示符从一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。
Description
交叉引用
在本公开的描述中引用和讨论了可能包括专利、专利申请和各种出版物在内的一些参考文献。提供对这样的参考文献的引用和/或讨论仅是为了阐明本公开的描述,而不是承认任何这样的参考文献是本文描述的公开的“现有技术”。在本说明书中引用和讨论的所有参考文献均通过引用以其整体并入本文,其程度与每个参考文献通过引用单独并入相同。
技术领域
本公开涉及自动化控制领域,尤其涉及一种自动确定用户交互恶意软件的计算机实现的方法、设备及非暂时性计算机可读存储介质。
背景技术
随着计算机和移动电话等电子设备的日益普及,它们已成为我们日常生活中不可或缺的部分。但是,恶意软件已成为对此类电子设备的威胁。
恶意软件(恶意的软件的俗称)是故意设计成对计算机、服务器、客户端或计算机网络造成损害的任何软件。恶意软件以某种方式植入或引入目标计算机或移动电话后会造成损害,并且可以采取可执行代码、脚本、活动内容和其他软件的形式。该代码被描述为计算机病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件或恐吓软件等。恶意软件具有恶意意图,违背计算机用户的利益而动作,因此不包括由于某些缺陷(其通常被描述为软件错误)而导致意外损坏的软件。
对恶意软件行为的研究可用于开发反恶意软件解决方案,以防止恶意软件发作。沙箱技术通常用于在严格控制的环境中执行不受信任的程序,而不会损害主机设备[2]。对于大规模的恶意软件行为研究,开发了无需用户交互的自动化技术,以提高沙箱的工作效率[3]。但是,恶意软件不断发展,并且在表现出恶意行为之前涉及复杂的图形用户界面(GUI)。
因此,在本领域中存在解决上述缺陷和不足的未解决的需求。
发明内容
本公开提供了一种自动确定图形用户界面(GUI)中的待交互的交互式GUI元素的计算机实现的方法、设备以及非暂时性计算机可读存储介质。
根据一方面,提出了一种计算机实现的方法,该方法自动确定图形用户界面(GUI)中的待交互的交互式GUI元素。该方法包括:处理器基于多个算法在GUI中检测一个或多个候选交互式GUI元素;所述处理器为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性;以及所述处理器基于似然性指示符从一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。
在某些实施例中,多个算法包括以下至少之一:基于应用编程接口API的算法;基于光学字符识别(OCR)的算法;以及基于熵的算法。
在某些实施例中,处理器基于多个算法在GUI中检测一个或多个候选交互式GUI元素的步骤包括:所述处理器通过使用GUI的API 从GUI中的一个或多个交互式GUI元素的每个中提取文本;所述处理器基于所提取的文本为所述一个或多个交互式GUI元素中的每个确定第一算法特定的似然性;对于所计算的第一算法特定的似然性大于第一算法特定的阈值的每个交互式GUI元素,所述处理器将该交互式GUI元素确定为候选交互式GUI元素。
在某些实施例中,所述处理器基于所提取的文本为所述一个或多个交互式GUI元素中的每个确定第一算法特定的似然性的步骤包括:所述处理器将所提取的文本与预定义的一组文本中的一个或多个文本进行比较;响应于比较结果指示所提取的文本与一个文本匹配,所述处理器将与所述预定义的一组文本中的该文本相对应的似然性确定为对应的交互式GUI元素的第一算法特定的似然性。
在某些实施例中,所述处理器为所述一个或多个候选交互式GUI 元素中的每个确定似然性指示符的步骤包括:所述处理器通过用第一算法特定的权重对第一算法特定的似然性进行加权来确定似然性指示符。
在某些实施例中,所述处理器基于多个算法在GUI中检测一个或多个候选交互式GUI元素的步骤包括:所述处理器通过使用基于OCR 的算法在GUI中检测一个或多个文本块;所述处理器为所述一个或多个文本块中的每个基于对应文本块中的文本来计算密度和/或第二算法特定的似然性;对于密度大于第二算法特定的阈值和/或第二算法特定的似然性大于第一算法特定的阈值的每个文本块,所述处理器将与该文本块关联的交互式GUI元素确定为候选交互式GUI元素。
在某些实施例中,所述处理器为所述一个或多个文本块中的每个基于对应文本块中的文本来计算密度的步骤包括:所述处理器确定所述对应文本块中的文本中的目标词的数量和所有词的数量;以及所述处理器通过将所有词的数量除以目标词的数量来计算密度。
在某些实施例中,所述处理器为所述一个或多个候选交互式GUI 元素中的每个确定似然性指示符的步骤包括:所述处理器通过用第三算法特定的权重对第二算法特定的似然性进行加权来确定似然性指示符。
在某些实施例中,所述处理器基于多个算法在GUI中检测一个或多个候选交互式GUI元素的步骤包括:所述处理器获取所述GUI对应的GUI图像;所述处理器将所述GUI图像分割为多个块;所述处理器通过使用基于熵的算法为所述多个块中的每个块确定熵;以及对于熵大于第三算法特定的阈值的每个块,所述处理器将与该块相关联的交互式GUI元素确定为候选交互式GUI元素。
在某些实施例中,所述处理器通过使用基于熵的算法为所述多个块中的每个块确定熵的步骤包括:所述处理器基于GUI图像中的对应块中的像素的强度和/或边缘取向,确定所述多个块中的每个块的熵值。
在某些实施例中,所述处理器为所述一个或多个候选交互式GUI 元素中的每个确定似然性指示符的步骤包括:所述处理器通过使用第三算法特定的权重对所述熵进行加权来确定似然性指示符。
在某些实施例中,所述所述处理器基于似然性指示符从一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素的步骤包括:所述处理器按照似然性指示符对一个或多个候选交互式GUI元素进行排序;以及所述处理器将具有最高似然性指示符的候选交互式GUI 元素确定为待交互的交互式GUI元素。
在某些实施例中,该方法还包括:所述处理器将与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息进行比较。
在某些实施例中,该方法还包括:响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息不匹配,所述处理器通过模拟与待交互的交互式GUI元素的类型相对应的用户操作,来与所确定的待交互的交互式GUI元素进行交互。
在某些实施例中,该方法还包括:所述处理器确定在交互之后所述GUI的状态是否改变;以及响应于确定在交互之后所述GUI的状态被改变,所述处理器将与所确定的交互式GUI元素有关的信息记录在数据库中作为历史信息。
在某些实施例中,该方法还包括:响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息相匹配,所述处理器基于似然性指示符从一个或多个候选交互式GUI元素中确定另一待交互的交互式GUI元素。
在某些实施例中,与所确定的待交互的交互式GUI元素有关的信息包括以下至少之一:GUI的标识符;所确定的待交互的交互式GUI 元素的标题;所确定的待交互的交互式GUI元素的位置;所确定的待交互的交互式GUI元素的大小;待发生交互的位置。
在某些实施例中,与所述GUI相对应的应用是在沙箱中执行的。
根据另一方面,提出了一种设备。该设备包括处理器;存储指令的存储器,该指令在由处理器执行时使得处理器:基于多个算法在GUI 中检测一个或多个候选交互式GUI元素;为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI 元素的似然性;以及基于似然性指示符从一个或多个候选交互式GUI 元素中确定待交互的交互式GUI元素。
根据又一方面,提出了一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时使处理器执行上述方法。
附图说明
附图示出了本公开的一个或多个实施例,并且与文字描述一起用于解释本公开的原理。在所有附图中,尽可能使用相同的附图标记指代实施例的相同或相似元件。
图1A是示出了没有沙箱时的示例性资源图的图。
图1B是示出了具有沙箱时的示例性资源图的图。
图2是示出示例性Windows对话框的图。
图3是示出根据本公开实施例的自动确定图形用户界面(GUI) 中的待交互的交互式GUI元素的示例性方法的流程图。
图4是示出根据本公开实施例的通过使用基于API的算法来确定交互式GUI元素的示例性方法的流程图。
图5是示出根据本公开实施例的要由基于API的算法处理的示例性GUI的图。
图6是示出根据本公开实施例的通过使用基于密度的算法来确定交互式GUI元素的示例性方法的流程图。
图7是示出根据本公开实施例的要由基于密度的算法处理的另一示例性GUI的图。
图8是示出根据本公开实施例的通过使用基于熵的算法来确定交互式GUI元素的示例性方法的流程图。
图9是示出根据本公开实施例的要由基于熵的算法处理的示例性 GUI的图。
图10是示出根据本公开实施例的图3中所示的方法的一些步骤的示例性实施方式的流程图。
图11是示出根据本公开实施例的可以在电子设备中使用的示例性布置的框图。
具体实施方式
在下面的示例中更具体地描述了本公开,这些示例仅旨在举例说明,因为根据本公开的教导,其中的许多修改和变化对本领域技术人员而言是清楚的。现在详细描述本公开的各种实施例。参考附图,在所有图中,相同的标号表示相同的组件。如本文的说明书和随后的整个权利要求书中所使用的,除非上下文另外明确指出,否则“一个”,“一种”和“该”的含义包括复数形式。而且,为了方便读者,可以在说明书中使用标题或副标题,这将不影响本公开的范围。另外,本说明书中使用的一些术语在下面更具体地定义。
在本公开的上下文中以及在使用每个术语的特定上下文中,本说明书中使用的术语通常具有其本领域的普通含义。在下文或说明书的其他地方讨论了用于描述本公开的某些术语,以向从业者提供关于本公开的描述的附加指导。应当理解,可以用不止一种方式描述同一件事。因此,替代的语言和同义词可以用于本文讨论的任何一个或多个术语,术语是否在本文中被阐述或讨论也没有任何特殊意义。提供了某些术语的同义词。一个或多个同义词的记载不排除其他同义词的使用。在本说明书中任何地方使用的示例(包括本文讨论的任何术语的示例)仅是说明性的,绝不限制本公开或任何示例性术语的范围和含义。同样,本公开不限于本说明书中给出的各种实施例。
除非另有定义,否则本文中使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员通常所理解的相同含义。还将理解的是,诸如在常用字典中定义的那些术语应被解释为具有与它们在相关领域和本公开的上下文中的含义一致的含义,并且将不以理想化的方式或过于正式的意义进行解释,除非本文明确定义。
如本文所用,“大约”、“约”、“大致”或“近似”应通常是指给定值或范围的百分之二十以内、百分之十以内和/或百分之五以内。本文给出的数值是近似的,意味着如果没有明确说明,则可以推断出术语“大约”、“约”、“大致”或“近似”。
如本文所用,术语“多个”是指两个或更多个。
如本文所使用的,术语“包括(comprising)”、“包括(inclduing)”、“携带”、“具有”、“包含”、“涉及”等应被理解为开放式的,即意指包括但不限于。
如本文中所使用的,A、B和C中的至少一个这种说法应被解释为使用非排他性逻辑“或”来表示逻辑(A或B或C)。应当理解,在不改变本公开的原理的情况下,可以以不同的顺序(或同时)执行方法内的一个或多个步骤。如本文所使用的,术语“和/或”包括一个或多个相关联的所列项目的任何和所有组合。
如本文所使用的,术语“模块”可以指代、是其一部分或包括:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享处理器、专用处理器或处理器组);提供上述功能的其他合适的硬件组件;或上述部分或全部的组合,例如在片上系统中。术语“模块”可以包括存储由处理器执行的代码的存储器(共享存储器、专用存储器或存储器组)。
如本文所使用的,术语“代码”可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。如上文所使用的,术语“共享”是指可以使用单个(共享)处理器来执行来自多个模块的部分或全部代码。另外,来自多个模块的部分或全部代码可以由单个 (共享)存储器存储。如以上所使用的,术语“组”是指可以使用一组处理器来执行来自单个模块的部分或全部代码。另外,可以使用一组存储器来存储来自单个模块的部分或全部代码。
如本文所使用的,术语“接口”通常是指在组件之间的交互点处用于在组件之间执行数据通信的通信工具或装置。通常,接口可以同时在硬件和软件级别应用,并且可以是单向或双向接口。物理硬件接口的示例可以包括电连接器、总线、端口、电缆、终端和其他I/O设备或组件。与接口通信的组件可以是例如计算机系统的多个组件或外围设备。
本公开涉及计算机系统。如图中所描绘的,计算机组件可以包括物理硬件组件(有时显示为实线框)和虚拟软件组件(有时显示为虚线框)。本领域普通技术人员将理解,除非另外指出,否则可以以软件、固件或硬件组件或其组合的形式(但不限于此)来实现这些计算机组件。
本文描述的装置、系统和方法可以由处理器执行的一个或多个计算机程序来实现。计算机程序包括处理器可执行指令,处理器可执行指令被存储在非暂时性有形计算机可读存储介质上。计算机程序还可以包括存储的数据。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器、磁性存储器和光学存储器。
现在将在下文中参考附图更全面地描述本公开,在附图中示出了本公开的实施例。然而,本公开可以以许多不同的形式来体现,并且不应该被解释为限于本文阐述的实施例;本公开不限于所公开的实施例。相反,提供这些实施例是为了使本公开是彻底和完整的,并将向本领域技术人员充分传达本公开的范围。
在给出本公开的一些实施例的详细描述之前,将简要解释本文使用的一些术语。
光学字符识别(OCR):OCR是指将打字、手写或印刷的文本的图像机械地或电子地转换为机器编码的文本,无论它们是来自扫描的文档、文档的照片、场景照片(例如,风景照片中的标牌和广告牌上的文字),还是来自叠加在图像上的字幕文字(例如电视广播中的文字)。此外,OCR还可以指一般意义上的从光栅化图像中识别文本。
良好软件:良好软件是指并非设计用来损害计算机的优良软件。
窗口:GUI的基本单元,由具有GUI的操作系统(OS)(例如 Microsoft Windows、MacOS、基于Unix/Linux的图形OS)管理,以与用户进行交互。
控件或交互式GUI元素:对于Windows,控件是子窗口,应用将其与其他窗口结合使用以实现用户交互。对于其他OS或通常来说,交互式GUI元素是由软件应用提供的UL元素,用于使用户能够与软件应用进行交互。因此,术语“控件”和“交互式GUI元素”在本文中可以互换使用。
如上所述,恶意的软件或恶意软件是对现代计算机或任何其他计算设备的严重威胁。如果公司正式提供的程序暗中破坏计算机用户的利益,则可以被视为恶意软件。例如,索尼出售了索尼Rootkit,其包含嵌入到CD中的特洛伊木马,它静默安装并隐藏在购买者的计算机上,目的是防止非法复制。它还报告了用户的收听习惯,并且无意中创建了漏洞,这些漏洞随后被不相关的恶意软件利用。
防止恶意软件的一种策略是防止恶意软件获得对目标计算机的访问。因此,除了检查恶意软件和恶意活动是否存在并从攻击中恢复外,防病毒软件、防火墙和其他策略还用于帮助防止恶意软件的入侵。
对恶意软件行为的研究可用于开发反恶意软件解决方案,以防止恶意软件发作。例如,已开发的反恶意软件解决方案之一是沙箱技术,该技术通常用于在严格控制的环境中执行不受信任的程序而不会损害主机设备。
在计算机安全中,沙箱是一种安全机制,用于物理地或逻辑/虚拟地分离正在运行的程序,通常是为了减轻系统故障或软件漏洞的蔓延。它通常用于执行未经测试或不受信任的程序或代码而不会损害主机或操作系统,这些程序或代码可能来自未经验证或不受信任的第三方、供应商、用户或网站。沙箱通常为访客程序运行提供严格控制的资源集,例如磁盘和内存上的临时空间。通常,禁止或严格限制网络访问、检查主机系统或从输入设备读取数据的能力。
在提供高度受控环境的意义上,沙箱可以被视为虚拟化的特定示例。沙箱测试经常用于测试可能包含病毒或其他恶意代码的未经验证的程序,而不允许该软件损害主机设备。
图1A和图1B是示出具有和不具有沙箱时的示例性资源图的示图。如图1A和图1B所示,以资源网格形式显示的计算机资源(例如存储容量、网络带宽或处理器的时间片)可以分配给在计算机上执行的多个软件应用或进程。如果没有沙箱,所安装的恶意软件可以读取/写入其他应用生成/管理的数据,侵入其他软件应用的内存空间,或过度占用宝贵的处理能力和/或网络带宽等,从某种意义上讲这可能会导致计算机用户的损失。
例如,如图1A所示,安装并执行的恶意软件(例如,勒索软件) 可以对由其他应用管理并存储在计算机的存储设备中的数据进行加密,然后销毁原始数据。这使得数据拥有者别无选择,只能为自己的数据支付赎金。相反,如图1B所示,当恶意软件在计算机上的沙箱中安装并执行时,沙箱可将恶意软件包含在指定资源范围内,例如分配给沙箱的指定存储区域100内。以这种方式,可以保护和确保其他应用的资源。
因此,对于大规模的恶意软件行为研究,通常在沙箱中开发无需用户交互的自动化技术以提高工作效率。但是,恶意软件不断发展,并且在表现出恶意行为之前涉及复杂的图形用户界面(GUI)。为了驱动恶意软件,自动化技术必须在恶意软件的GUI中定位正确的触发器或交互式GUI元素,以驱动恶意软件显示其行为。
图2是示出由在沙箱中安装并执行的软件应用生成的示例性 Windows对话框200的图。如图2所示,对话框200可以包括一个或多个GUI元素,例如,按钮210、切换按钮220、链接230和240、关闭按钮250以及对话框标题260。对于这样的对话框200,自动化技术应识别正确的触发器或交互式GUI元素,以驱动软件应用显示其行为。在图2所示的特定实施例中,正确的交互式GUI元素可能是“运行”或“不运行”按钮210。
当前的自动化解决方案依赖于由OS或沙箱提供的标准API(例如Windows枚举API)来枚举对话框并找到需要用户交互(例如文本输入、按钮单击或拨盘旋转)的控件。但是,这种解决方案可能会存在以下缺陷:
(1)标准API可以在对话框中找到控件,但无法确定哪个控件可以正确地将恶意软件驱动到下一步;和/或
(2)恶意软件经常使用混淆技术来绕过沙箱中的自动化机制,例如分层的Windows。
因此,需要一种用于在GUI中定位正确的触发器或交互式GUI 元素的解决方案。在本公开的某些实施例中,设计了启发式解决方案,以使沙箱单击对话框并将恶意软件驱动到下一步,从而可以观察到更多的行为。接下来,将参考图3并结合图2给出这种解决方案的详细描述。
图3是示出根据本公开实施例的自动确定图形用户界面(GUI) 中的待交互的交互式GUI元素的示例性方法的流程图。
该方法可以开始于步骤310,在该步骤中可以在沙箱中执行或运行软件应用。沙箱可以监视软件应用的执行,并检测与软件应用相关的任何GUI事件。在某些实施例中,沙箱可以监视与GUI相关的任何系统函数调用(例如Windows的MessageBoxIndirectA函数等)以检测窗口创建事件。如果在步骤320检测到GUI事件,则该方法前进到步骤340。否则,该方法可以前进到步骤330,在此步骤方法结束。在一些其他实施例中,该方法可以再次循环回到步骤320以重复检测,直到检测到GUI事件为止。重复检测可以与先前的检测相隔一定时间段进行或立即进行。
在步骤340,如果检测到GUI事件,则该方法可以触发图3中虚线框所示的交互式GUI元素检测过程350。通常,交互式GUI元素检测过程可以使用多个交互式GUI元素检测算法来检测候选交互式GUI 元素以供选择,并选择其中之一作为最有希望被激活的交互式GUI元素。
例如,如图3所示,交互式GUI元素检测过程350可以通过使用三个不同算法来确定候选交互式GUI元素:基于API的算法353a,基于密度的算法353b和基于熵的算法353c。然而,本公开不限于此。例如,在一些其他实施例中,可以使用更多或更少的算法,可以使用不同的算法,和/或可以从该过程中排除这三个算法中的任何一个。换句话说,仅出于说明而非限制的目的示出了图3中描绘的三个算法。下面将参考图4至图9详细解释这三个算法。这三个算法353a-353c 的输出可以被馈送到表决算法(在步骤355)以确定具有最高概率的交互式GUI元素,以将恶意软件驱动到下一步。
首先,将参考图4和图5详细描述基于API的算法353a。图4是示出根据本公开实施例的通过使用基于API的算法来确定交互式GUI 元素的示例性方法的流程图。图5是示出根据本公开实施例的要由基于API的算法处理的示例性GUI 500的图。
如图5所示,GUI 500可以包括一个或多个窗口510和520以及一些桌面图标530a-530c。然而,本公开不限于此,并且GUI 500可以包括任何数量和/或任何类型的GUI元素。在图5所示的实施例中,窗口510“软件安装”是由所关注的软件生成的窗口,并且窗口520 “通知”是由另一软件应用生成的。基于API的算法353a用于通过使用由OS或沙箱提供的API来确定GUI 500中的候选交互式GUI元素。
图4所示的方法可以从步骤410开始,在该步骤中确定属于该软件的顶部窗口。在某些实施例中,软件在被执行时可以生成多个窗口。例如,如果软件是即时通讯工具,则即时通讯工具可以分别为多个朋友或好友生成多个聊天窗口。为了将即时通讯工具驱动到下一步,例如,通过API函数调用“GetFocus”来确定焦点窗口。回到图5,为了确定属于所关注的软件的顶部窗口,可以使用API函数调用(例如“GetFocus”)来确定具有焦点的窗口(例如,如图5所示的窗口510) 的句柄。在一些其他实施例中,对于所确定的焦点窗口,例如通过检查其父窗口ID或进程ID,来进一步确定该窗口是否属于该软件。如果该窗口属于该软件,则该方法进入步骤420。但是,如果该窗口不属于该软件,则该方法或算法353a可以简单地将空的结果或指示符返回给例如图3所示的表决算法355。
此外,在该窗口不属于该软件的一些其他实施例中,算法353a 可以通过使用API函数调用(例如“EnumWindows”),随机地或根据预定规则(例如,最后生成的窗口)来选择由该软件生成的窗口之一作为顶部窗口。
在步骤420,该方法可以例如通过使用API函数调用(例如“EnumChildWindows”)来枚举顶部窗口中的控件(或交互式GUI元素)。如果在步骤430确定不存在此类控件,则该方法进行到步骤440,在此步骤方法结束。否则,该方法前进到步骤450,在该步骤中,将通过例如一个或多个API函数调用(例如“GetWindowTextA”,“ComboBox_GetText”和/或“Button_GetText”,这取决于控件的特定类型)从控件中提取与控件关联的文本。
接下来,在步骤460,该方法可以收集控件的位置和文本并检查是否还有控件。如果在顶部窗口中还有另一个控件,则该方法循环回到步骤430,并重复执行步骤430到460。如果在步骤460中确定没有更多控件,则该方法或算法353a可以返回六个元素的元组的列表,该元组例如是(algorithm_type,parent_window,位置,文本,密度,熵)。在该实施例中,所有三个算法都使用该元组的格式,因此存在诸如“密度”和“熵”之类的其他算法的字段,这些字段不会被算法353a使用。在这种情况下,这两个字段可以被设置为默认值,例如0。此外,在一些其他实施例中,算法353a可以以另一格式返回其输出,例如在步骤460中收集的(位置,文字),而没有其他字段。因此,在本实施例中使用的元组的格式仅是示例,而并不限制本公开的范围。
元组的具体示例可以是(“standard_api_method”,0x234,(100, 122,50),“next”,0,0)。在此示例中,algorithm_type(算法类型) 字段的值为“standard_api_method(标准api方法)”,指示该元组由基于API的方法返回。此外,parent_window(父窗口)字段具有值“0x234”,其指示与该元组相对应的控件属于具有Windows ID“0x234”的父窗口。以这种方式,该方法的后续步骤可以将由软件生成的不同窗口彼此区分开。此外,位置字段具有值“(100,122,50)”,该值指示控件在屏幕上或在父窗口中的位置。换句话说,该位置字段可以具有控件的绝对坐标或相对坐标。此外,文本字段的值为“next(下一个)”,这表示控件具有与其关联或在其上标记的文本“next”。此外,稍后将在描述其他算法时解释“密度”和“熵”这两个字段。此外,本公开不限于以上特定值。
此外,在一些实施例中,该方法还可以在检测到的控件中选择部分控件,而不是无条件地选择所有这些控件。例如,如将在算法353b 中详细描述的,可以为每个词或短语分配似然性值,以指示该词或短语与可将该软件驱动到下一步的交互式GUI元素相关的似然性。例如,词“next”可以被分配似然性值1,词“cancel(取消)”可以被分配似然性值“0.6”。基于似然性值,该方法可以选择具有比预定阈值(例如0.8)大的似然性值的那些检测到的控件。
利用图4所示的方法或图3所示的算法353a,可以收集软件的一些文本信息及其位置信息,其可以指导用户与软件的GUI交互。但是,考虑无法通过API函数调用来捕获文本信息的情况。例如,不是向用户显示带有文本的按钮,而是向用户显示带有图片的超链接,在图片上显示文本信息(不能通过API函数调用来直接获取该文本信息),从而使用户由图片上的文本信息引导而与超链接进行交互。在这种情况下,基于API的方法不太有用。
因此,下面将描述在这种情况下可以提取文本信息的一些其他算法(例如,算法353b“基于密度的算法”和算法353c“基于熵的算法”)。这些算法中没有一种算法依赖于由操作系统或沙箱提供的API。
再次参考图3,在执行算法353b或353c之前,该方法可以在步骤351将窗口转换成图像。例如,给定窗口句柄(例如,以与图4的步骤410类似的方式确定的窗口句柄),该方法可以确定其窗口坐标和尺寸信息,并获得窗口的焦点。然后,该方法可以例如通过将矩形区域打印为图像文件,来将窗口的矩形区域捕获或获取为图像。此外,也可以以其他方式对该矩形区域进行栅格化,并且本公开不限于此。该图像文件将由算法353b和353c使用。
接下来,将参照图6和图7详细描述基于密度的算法353b。图6 是示出根据本公开实施例的通过使用基于密度的算法来确定交互式 GUI元素的示例性方法的流程图。图7是示出根据本公开实施例的要由基于密度的算法处理的示例性GUI 700的图。
如图7所示,GUI 700可以包括一个或多个窗口710和720以及一些桌面图标730a-730c。然而,本公开不限于此,并且GUI 700可以包括任何数量和/或任何类型的GUI元素。在图7所示的实施例中,窗口710“软件安装”是由所关注的软件生成的窗口,并且窗口720 “通知”是由另一软件应用生成的。基于密度的算法353b可以基于由图3中的步骤351转换的图像的文本块的密度,来确定GUI 700中的候选交互式GUI元素。
图6所示的方法可以从步骤610开始,在该步骤中可以(例如,通过模式识别方法)找到或确定在屏幕上可见的窗口(例如,顶部的全屏窗口或顶部的两个并排窗口等)。此外,如前所述,也可以用另一种方式(例如,类似于图4所示的步骤410)来确定窗口。参考图7,可以将窗口710确定为顶部窗口,而不选择窗口720,因为窗口720 被窗口710部分覆盖,这表明窗口720不在顶部或不具有焦点。
接下来,在步骤620,可以计算或以其他方式确定窗口710的矩形区域。
在步骤630,该方法可以通过使用OCR方法来检测窗口710的矩形区域的图像中的文本块,并从文本块中提取文本信息。然后,在步骤640,对于每个文本块,基于从中提取的文本来计算密度。
在某些实施例中,密度是文本块中的“目标”词与所有词的比例。例如,块中的文本可以是具有4个词的“Notepad release setup program (记事本发布设置程序)”,而只有“setup(设置)”是目标词,用户更有可能单击该词。因此,可以将密度计算为1/4=0.25。对于另一示例,如图7所示,文本块711a的密度可以为1,因为文本块711a中仅存在一个词“next”;文本块710a的密度可以为0,因为在文本块 710a中没有目标词但有两个非目标词。
在某些实施例中,非穷举性的“目标”词集合可以包括:“next (下一个)”,“install(安装)”,“update(更新)”,“upgrade(升级)”,“upgrade now(立即升级)”,“next(下一步)”,“get stated(启动)”,“start(开始)”,和“run(运行)”,它们的似然性值都可以为1。此外,另一个非穷举性的词集合可以包括:“later(以后)”(似然性值为 0.6),“ignore(忽略)”(似然性值为0.6)和“ok(确定)”(似然性值为0.4)。请注意,与目标词相对应的似然性值稍后将在步骤355中使用,因此,将在那里给出其详细描述。
对于具有比预定阈值(例如0.6)大的密度的每个文本块,可以将与上述元组相同的六元素元组作为算法353b的输出返回给图3的方法。
元组的具体示例可以是(“image_text_recognition”,0x234,(100, 100,30),“next”,0,1)。它与算法353a返回的元组相似,因此仅详细描述它们之间的不同之处。在此示例中,algorithm_type(算法类型)字段的值为“image_text_recognition(图像文本识别)”,指示该元组由基于密度的方法返回。此外,文本字段具有值“next”,其指示文本块具有与其关联或在其上标记的文本“next”。此外,density(密度)字段的值为1,表示该文本块很可能对应于可单击的按钮或交互式GUI元素。该算法背后的直觉是,密度更高的块可能更容易被用户单击。
接下来,将参考图8和图9详细描述基于熵的算法353c。图8是示出根据本公开实施例通过使用基于熵的算法(例如,算法353b)来确定交互式GUI元素的示例性方法的流程图。图9是示出根据本公开实施例的要由基于熵的算法处理的另一示例性GUI 900的图。
如图9所示,GUI 900可以包括一个或多个窗口910和920以及一些桌面图标930a-930c。然而,本公开不限于此,并且GUI 900可以包括任何数量和/或任何类型的GUI元素。在图9所示的实施例中,窗口910“软件安装”是由所关注的软件生成的窗口,并且窗口920 “通知”是由另一软件应用生成的。基于API的算法353b可以基于由图3中的步骤351转换的图像的各部分的熵来确定GUI 900中的候选交互式GUI元素。
图8所示的方法可以从步骤810开始,在该步骤中可以(例如,通过模式识别方法)找到或确定在屏幕上可见的窗口(例如,顶部的全屏窗口或顶部的两个并排窗口等)。此外,如前所述,也可以用另一种方式(例如,类似于图4所示的步骤410)来确定窗口。参考图9,可以将窗口910确定为顶部窗口,而不选择窗口920,因为窗口920 被窗口910部分覆盖,这表明窗口920不在顶部或不具有焦点。
接下来,在步骤820,可以计算或以其他方式确定窗口910的矩形区域。基于计算或确定,可以在步骤830将矩形区域的图像分割成多个块。例如,如图9所示,将窗口910的图像分割成M×N个块,其中M和N是正整数,并且可以根据图像的大小预先确定或动态确定。在特定实施例中,M和N均为10。
接下来,在步骤840,可以为每个块计算熵。在某些实施例中,可以基于块中像素的强度或边缘取向来计算熵(这在本领域中是已知的,并且为简单起见而被省略),并且这样的熵通常可以指示在块中包含多少与强度或边缘取向有关的信息。换句话说,具有较高熵的块比具有较低熵的块更可能包含交互式GUI元素。参照图9,窗口910被分割成多个块,并且按钮911和913落入一些块,例如911a、911b、 913a和913b等。由于块911a包含按钮911的一些文本信息,所以它的熵(其可以基于块911a中的像素的强度来计算)可以高于其他块(例如块911b)。此外,在一些其他实施例中,由于块911b包含窗口910 的边缘,所以它的熵(其可以基于块911b中的像素的边缘取向来计算) 可以高于其他块(例如块911a)。即,取决于如何计算熵,块可具有不同的熵。在某些实施例中,熵可以落在[0,1]的范围内。在一些其他实施例中,熵可以大于1,并且如果需要,可以将其归一化为[0,1]的范围。
对于具有比预定阈值(例如0.8)大的熵的每个块,可以将与上述元组相同的六元素元组作为算法353c的输出返回给图3的方法。
元组的具体示例可以是(“entropy_method”,0x234,(100,122, 40),“next”,0.3,0)。它与由算法353a和算法353b返回的元组相似,因此仅详细描述它们之间的区别。在此示例中,algorithm_type(算法类型)字段的值为“entropy_method(熵方法)”,指示该元组由基于熵的方法返回。此外,文本字段的值为“next”,这指示控件具有与其关联或在其上标记的文本“next”。此外,熵字段具有值“0.3”,其指示该块可能具有一些但不是太多的与强度或边缘取向有关的信息。
此外,算法353c可以按照熵对将要返回给图3的方法的所有块进行排序,并且以熵的降序将它们提供给图3的方法。
返回参考图3,在所有算法提供它们的输出之后,该方法可以进行到步骤355。在步骤355,可以使用表决算法来确定来自所有算法的输出中的哪一个是要由沙箱交互的交互式GUI元素。
下面给出表决算法的示例,该示例仅用于说明。
1.候选者=空表
2.对于列表中的每个(算法类型,位置,文本,熵,密度)元组,进行以下操作
3.如果算法类型为“标准api方法”,并且似然性(文本)>似然性阈值:
4.将(位置,似然性(文本)+算法1的权重值,父窗口,文本)添加到候选者
5.如果算法类型为“图像文本识别”,并且密度(文本)>密度阈值且似然性(文本)>似然性阈值:
6.将(位置,似然性(文本)+算法2的权重值,父窗口,文本)添加到候选者
7.如果算法类型为“熵方法”,并且熵>熵阈值:
8.将(位置,熵+算法3的权重值,父窗口,文本)添加到候选者
9.按照似然性对候选者进行排序
(1.Candidates=empty_list
2.For each(algorithm_type,position,text,entropy,density)tuple in listdo
3.If algorithm_type is“standard_api_method”and likelihood(text)>likelihood_threshold:
4.Add(position,likelihood(text)+weight_value_of_algorithm1, parent_window,text)to candidates
5.if algorithm_type is“image_text_recognition”and density(text)>density_threshold and likelihood(text)>likelihood_threshold:
6.Add(position,likelihood(text)+weight_value_of_algorithm2, parent_window,text)to candidates
7.if algorithm_type is“entropy_method”and entropy> entropy_threshold:
8.Add(position,entropy+weight_value_of_algorithm3, parent_window,text)to candidates
9.sort candidates by the likelihood)
在以上算法中,“似然性阈值”可以是0.8,“密度阈值”可以是 0.6,并且“熵阈值”可以是0.8。此外,在上述算法中,“算法1的权重值”,“算法2的权重值”和“算法3的权重值”可以分别为0.03、 0.02和0.01。然而,本公开不限于此,并且这些值中的任何一个或一些或全部可以凭经验设置。
根据以上表决算法,该方法可以选择性地决定是否将考虑算法 353a/353b/353c的输出以供表决算法选择。例如,对于基于API的算法353a,可以仅考虑似然性值大于0.8的控件以供表决算法选择。又例如,对于基于密度的算法353b,可以仅考虑具有大于0.6的密度和大于0.8的似然性值的文本块以供表决算法选择。又例如,对于基于熵的算法353c,可以仅考虑具有大于0.8的熵值的块以供表决算法选择。然而,本公开不限于此。
此外,由于不同的算法可能具有在不同的值范围内的不同的输出,并且可以在能够用有意义的方式将它们相互比较之前调整这些输出。因此,可以为每个算法的输出分配权重,以平衡来自不同算法的输出。然而,本公开不限于此。在一些其他实施例中,可以用不同于“添加权重”的另一方式来执行加权,例如,通过乘以因子(权重),通过线性函数等。此外,候选交互式GUI元素可以按照似然性值以外的其他特性排序,并且本公开不限于此。
一旦表决算法在步骤355确定了最有希望的交互式GUI元素,该方法可以可选地在步骤357检查所确定的交互式GUI元素是否先前已记录在数据库中。下面将参考图10详细描述此步骤。
如果此元素以前未记录在数据库中,或者如果省略了步骤357(因为它是可选的),则在步骤320处沙箱可以与该元素进行交互以将软件驱动到下一步,并等待以查看或观察是否存在另一个GUI事件。此后,该方法可以重复执行步骤320到步骤360。以这种方式,全自动交互式GUI元素检测机制是可能的,因此可以建立恶意软件行为自动分析系统。
此外,在上面的伪代码中,选择候选的功能用于聚合前面提到的算法的输出,过滤掉不合格的位置,并保留很有可能将驱动软件运行的顶部位置。
此外,可以基于对良好软件和恶意软件两者的经验性研究来建立与文本相对应的似然性。例如,带有文本“下一个”的按钮比“关闭”更有可能被用户单击。此外,文本可以是任何语言的词。
图10是示出根据本公开实施例的图3中所示方法的一些步骤的示例性实施方式的流程图。如上所述,一旦表决算法决定了最有希望的交互式GUI元素,则该方法可以在步骤257检查该元素是否先前已记录。如果答案为是,即该元素在数据库中具有匹配项,然后该方法可以返回到表决算法255以检查表决列表中的下一个元素,并重复该过程直到找到未记录在数据库中的元素。如果所有可能的元素已经被记录在数据库中,则该方法可以直接进行到结束330(图3中)以结束整个过程。如图10所示,一种用于检查该元素是否先前已被记录的特定方法是将其与数据库中的条目进行比较,该数据库存储以前交互的交互式GUI元素的历史信息。下面提供了一种简单的算法,该算法仅用于说明。
drive_window函数接受顶部位置的输入,获取该位置所在的窗口,并模拟鼠标单击该位置。如果窗口状态发生变化,例如窗口处于活动状态/启用状态/可见状态等,则沙箱会持续监视恶意软件行为。
此外,基于上述伪代码,很明显,位置信息被用作数据库中数据的索引或主键。然而,本公开不限于此。
另外,也如图10所示,如果最有希望的交互式GUI元素先前未记录在数据库中,则可以在步骤358将其添加到数据库中以进行后续过程。在某些实施例中,步骤358可以与图3的步骤360并行或在其之前或之后执行,并且本公开不限于此。
通常,数据库可用于跟踪先前访问过哪个窗口和/或其状态改变。它在某种程度上有助于消除重复导航到同一窗口的问题。在某些实施例中,数据库中的每个记录/条目可以唯一地标识当前窗口。例如,记录可以包含以下信息:
父窗口ID;例如0x234
当前窗口标题;例如“记事本设置”
当前窗口坐标(x,y);例如(125,195)
当前窗口大小(高x宽);例如(500x 500)
窗口中被单击的位置;例如列表[(100,100),(120,130)]中的两个位置
上面提出的解决方案旨在应对使用GUI界面逃避沙箱检测的复杂恶意软件。如果沙箱找不到正确的位置来将恶意软件驱动到下一步,则无法观察到恶意软件的动态行为。先进的反恶意软件检测方法(例如基于行为的方法)需要来自恶意软件和良好软件的更多行为数据。因此,当恶意软件/良好软件涉及GUI时,以上提出的方法可以提供丰富的行为数据。
总之,根据本申请的一些实施例的以上提出的解决方案利用标准 API方法和启发式方法(例如,图像识别(基于熵)和基于OCR的技术)来识别GUI界面中的将导致恶意软件运行到下一步的位置。
图11是示出根据本公开实施例的可以在电子设备中使用的示例性布置的框图。
如图11所示,电子设备或计算设备1110可以是服务器计算机、集群、云计算机、通用计算机、移动设备、平板电脑或专用计算机,其可以基于多个算法检测GUI中的一个或多个候选交互式GUI元素;为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI 元素是待交互的交互式GUI元素的似然性;并基于所述似然性指示符从所述一个或多个候选交互式GUI元素中确定待交互的交互式GUI 元素。
在某些实施例中,计算设备1110可以与其他计算设备或服务通信,以便从那些计算设备获得必要的数据以执行上述方法并将结果提供给那些计算设备。在某些实施例中,可以经由网络来执行通信,该网络可以是有线或无线网络,并且可以具有各种形式,诸如公共网络和/ 或专用网络。
如图11所示,计算设备1110可以包括但不限于处理器1112、存储器1114和可选的存储设备1116。在某些实施例中,计算设备1110 可以包括其他硬件组件和/或软件组件(未显示)以执行其相应任务。这些硬件和/或软件组件的示例可以包括但不限于其他所需的存储器、接口、总线、输入/输出(I/O)模块或设备、网络接口和/或外围设备。
处理器1112可以是配置为控制计算设备1110的操作的中央处理单元(CPU)。处理器1112可以执行计算设备1110的操作系统(OS) 或其他应用。在某些实施例中,计算设备1110可能具有多个CPU作为处理器,例如两个CPU、四个CPU、八个CPU或任何合适数量的CPU。
存储器1114可以是易失性存储器,例如随机存取存储器(RAM),用于在计算设备1110的操作期间存储数据和/或信息。在某些实施例中,存储器1114可以是易失性存储器阵列。在某些实施例中,计算设备1110可以在一个以上的存储器1114上运行。可选的存储设备1116 可以是用于存储计算设备1110的OS(未示出)和其他应用的非易失性数据存储介质。存储设备1116的示例可以包括非易失性存储器,诸如闪存、存储卡、USB驱动器、硬盘驱动器、软盘、光盘驱动器、固态驱动器(SSD)或任何其他类型的数据存储设备。在某些实施例中,存储设备1116可以是本地存储、远程存储或云存储。在某些实施例中,计算设备1110可以具有多个存储设备1116,其可以是相同的存储设备或不同类型的存储设备,并且计算设备1110的应用可以被存储在计算设备1110的一个或多个存储设备1116中。在某些实施例中,计算设备1110是云计算机,并且处理器1112、存储器1114和存储设备1116 是通过互联网按需提供的共享资源。
如图11所示,存储设备1116可以包括交互式GUI元素检测应用 1118、以及算法特定的似然性数据1190、算法特定的阈值1192、算法特定的权重(未示出)、似然性指示符数据1194和交互式GUI元素历史数据库1196。交互式GUI元素检测应用1118可以被配置为检测将由沙箱或计算机交互的交互式GUI元素。
交互式GUI元素检测应用1118可以包括检测模块1120、似然性指示符确定模块1140和交互式GUI元素确定模块1160等。在某些实施例中,交互式GUI元素检测应用1118可以包括交互式GUI元素检测应用1118的操作所必需的其他应用或模块。应当注意,每个模块均由计算机可执行代码或指令、或数据表或数据库实现,它们共同形成一个应用。在某些实施例中,每个模块可以进一步包括子模块。或者,某些模块可以组合为一个堆栈。在其他实施例中,某些模块可以被实现为电路而不是可执行代码。在某些实施例中,交互式GUI元素检测应用1118的一些或全部模块可以位于远程计算设备处或分布在云中。
在某些实施例中,检测模块1120可以被配置为基于多个算法来检测GUI中的一个或多个候选交互式GUI元素。例如,如图3的步骤 353a-353c所示,使用多个算法来确定候选交互式GUI元素。
在某些实施例中,似然性指示符确定模块1140可以被配置为针对一个或多个候选交互式GUI元素中的每个确定似然性指示符,其中似然性指示符可以指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性。例如,如步骤355及其描述所示,为每个候选交互式GUI元素计算或分配似然性值或指示符。更具体地,对于基于API的算法,可以基于控件或候选交互式GUI元素的文本信息的似然性和算法特定的权重来确定控件或候选交互式GUI 元素的似然性指示符。对于基于熵的算法,可以基于块的熵和算法特定的权重来确定块或候选交互式GUI元素的似然性指示符。对于基于密度的算法,可以基于文本块的似然性和算法特定的权重来确定文本块或候选交互式GUI元素的似然性指示符。
在某些实施例中,交互式GUI元素确定模块1160可以被配置为基于似然性指示符从一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。例如,如步骤355及其描述所示,具有最高似然性的候选交互式GUI元素可以被确定为待交互的交互式GUI元素。
如前所述,这些模块可以被实现为要在处理器1112上执行的指令或代码,因此可以以另一种方式描述上述模块。例如,存储器1114 可以存储指令,这些指令在由处理器1112执行时使处理器1112:基于多个算法检测GUI中的一个或多个候选交互式GUI元素;以及为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性;并基于所述似然性指标从所述一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。
在某些实施例中,多个算法可以包括以下至少之一:基于应用编程接口(API)的算法,基于光学字符识别(OCR)的算法以及基于熵的算法。在某些实施例中,存储器1114可以存储指令,当由处理器 1112执行时,该指令还使处理器1112通过使用用于GUI的API从GUI中的一个或多个交互式GUI元素中的每个中提取文本;基于所提取的文本,为所述一个或多个交互式GUI元素中的每个确定第一算法特定的似然性;对于每个计算出的第一算法特定的似然性大于第一算法特定的阈值的交互式GUI元素,将该交互式GUI元素确定为候选交互式GUI元素。
在某些实施例中,存储器1114可以存储指令,这些指令在由处理器1112执行时,还使处理器1112将所提取的文本与预定义的一组文本中的一个或多个文本进行比较;并且响应于比较结果指示所提取的文本与一个文本匹配,将与预定义的一组文本中的该文本对应的似然性确定为对应的交互式GUI元素的第一算法特定的似然性。在某些实施例中,存储器1114可以存储指令,当由处理器1112执行时,该指令还使处理器1112通过用第一算法特定的权重对第一算法特定的似然性进行加权来确定似然性指示符。
在某些实施例中,存储器1114可以存储指令,当由处理器1112 执行时,该指令还使处理器1112获得与该GUI相对应的GUI图像;将GUI图像分割成多个块;通过使用基于熵的算法确定多个块中的每个块的熵;对于熵大于第二算法特定的阈值的每个块,将与该块相关联的交互式GUI元素确定为候选交互式GUI元素。在某些实施例中,存储器1114可以存储指令,该指令当由处理器1112执行时,还使处理器1112基于GUI图像中对应块中的像素的强度和/或边缘取向来确定多个块中的每个块的熵值。在某些实施例中,存储器1114可以存储指令,当由处理器1112执行时,该指令还使处理器1112通过用第二算法特定的权重对熵进行加权来确定似然性指示符。
在某些实施例中,存储器1114可以存储指令,当由处理器1112 执行时,该指令还使处理器1112通过使用基于OCR的算法来检测GUI 中的一个或多个文本块;针对一个或多个文本块中的每个,基于对应文本块中的文本计算密度和/或第三算法特定的似然性;对于密度大于第三算法特定的阈值和/或第三算法特定的似然性大于第一算法特定的阈值的每个文本块,将与该块关联的交互式GUI元素确定为候选交互式GUI元素。在某些实施例中,存储器1114可以存储指令,当由处理器1112执行时,该指令还使处理器1112确定对应文本块中的文本中目标词的数量和所有词的数量;然后通过将所有词的数量除以目标词的数量来计算密度。
在某些实施例中,存储器1114可以存储指令,当指令由处理器 1112执行时,该指令还使处理器1112通过用第三算法特定的权重对第三算法特定的似然性进行加权来确定似然性指示符。在某些实施例中,存储器1114可以存储指令,当指令由处理器1112执行时,该指令还使处理器1112按照似然性指示符对一个或多个候选交互式GUI 元素进行排序;将具有最高似然指标的候选交互式GUI元素确定为待交互的交互式GUI元素。
在某些实施例中,存储器1114可以存储指令,该指令在由处理器 1112执行时还使处理器1112将与所确定的交互式GUI元素有关的信息与先前存储在数据库中的历史信息进行比较。在某些实施例中,存储器1114可以存储指令,当指令由处理器1112执行时,该指令还响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息不匹配,通过模拟与交互式GUI元素的类型相对应的用户操作来使处理器1112与所确定的交互式GUI元素进行交互。在某些实施例中,存储器1114可以存储指令,当由处理器1112 执行时,该指令还使处理器1112确定在交互之后GUI的状态是否改变;并且,响应于确定在交互之后GUI的状态被改变,将与所确定的交互式GUI元素有关的信息记录在数据库中作为历史信息。
在某些实施例中,存储器1114可以存储指令,该指令在由处理器 1112执行时进一步使处理器1112响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息相匹配,基于似然性指示符从一个或多个候选交互式GUI元素中确定另一待交互的交互式GUI元素。在某些实施例中,与所确定的待交互的交互式GUI元素有关的信息包括以下至少一项:GUI的标识符;所确定的待交互的交互式GUI元素的标题;所确定的待交互的交互式GUI元素的位置;所确定的待交互的交互式GUI元素的大小;以及待发生交互的位置。在某些实施例中,与GUI相对应的应用在沙箱中执行。
总而言之,本公开的某些实施例提供了一种用于自动检测待交互的交互式GUI元素的解决方案。此外,还提供了相应的设备和非暂时性计算机可读存储介质。
仅出于说明和描述的目的给出了对本公开的示例性实施例的前述描述,而不旨在穷举本公开或将本公开限制为所公开的精确形式。根据以上教导,许多修改和变化是可能的。
选择和描述实施例是为了解释本公开的原理及其实际应用,以便使本领域的其他技术人员能够利用本公开和各种实施例并进行各种修改,以适合于预期的特定用途。在不脱离本发明的精神和范围的情况下,替代实施例对于本公开所属领域的技术人员将变得清楚。因此,本公开的范围由所附权利要求书来限定,而不是由前述说明及其中所描述的示例性实施例来限定。
Claims (20)
1.一种自动确定图形用户界面GUI中的待交互的交互式GUI元素的计算机实现的方法,所述方法包括:
处理器基于多个算法在所述GUI中检测一个或多个候选交互式GUI元素;
所述处理器为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性;以及
所述处理器基于所述似然性指示符从所述一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。
2.根据权利要求1所述的方法,其中所述多个算法包括以下至少之一:
基于应用编程接口API的算法;
基于熵的算法;以及
基于光学字符识别OCR的算法。
3.根据权利要求2所述的方法,其中所述处理器基于多个算法在所述GUI中检测一个或多个候选交互式GUI元素的步骤包括:
所述处理器通过使用所述GUI的API从所述GUI中的一个或多个交互式GUI元素的每个中提取文本;
所述处理器基于所提取的文本为所述一个或多个交互式GUI元素中的每个确定第一算法特定的似然性;以及
对于所计算的第一算法特定的似然性大于第一算法特定的阈值的每个交互式GUI元素,所述处理器将该交互式GUI元素确定为候选交互式GUI元素。
4.根据权利要求3所述的方法,其中所述处理器基于所提取的文本为所述一个或多个交互式GUI元素中的每个确定第一算法特定的似然性的步骤包括:
所述处理器将所提取的文本与预定义的一组文本中的一个或多个文本进行比较;以及
响应于比较结果指示所提取的文本与一个文本匹配,所述处理器将与所述预定义的一组文本中的该文本相对应的似然性确定为对应的交互式GUI元素的第一算法特定的似然性。
5.根据权利要求3所述的方法,其中所述处理器为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符的步骤包括:
所述处理器通过用第一算法特定的权重对第一算法特定的似然性进行加权来确定所述似然性指示符。
6.根据权利要求2所述的方法,其中所述处理器基于多个算法在所述GUI中检测一个或多个候选交互式GUI元素的步骤包括:
所述处理器通过使用基于OCR的算法在所述GUI中检测一个或多个文本块;
所述处理器为所述一个或多个文本块中的每个基于对应文本块中的文本来计算密度和/或第二算法特定的似然性;以及
对于所述密度大于第二算法特定的阈值和/或所述第二算法特定的似然性大于第一算法特定的阈值的每个文本块,所述处理器将与该文本块关联的交互式GUI元素确定为候选交互式GUI元素。
7.根据权利要求6所述的方法,其中所述处理器为所述一个或多个文本块中的每个基于对应文本块中的文本来计算密度的步骤包括:
所述处理器确定所述对应文本块中的文本中的目标词的数量和所有词的数量;以及
所述处理器通过将所有词的数量除以目标词的数量来计算密度。
8.根据权利要求6所述的方法,其中所述处理器为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符的步骤包括:
所述处理器通过用第二算法特定的权重对第二算法特定的似然性进行加权来确定所述似然性指示符。
9.根据权利要求2所述的方法,其中所述处理器基于多个算法在所述GUI中检测一个或多个候选交互式GUI元素的步骤包括:
所述处理器获取所述GUI对应的GUI图像;
所述处理器将所述GUI图像分割为多个块;
所述处理器通过使用基于熵的算法为所述多个块中的每个块确定熵;以及
对于熵大于第三算法特定的阈值的每个块,所述处理器将与该块相关联的交互式GUI元素确定为候选交互式GUI元素。
10.根据权利要求9所述的方法,其中所述处理器通过使用基于熵的算法为所述多个块中的每个块确定熵的步骤包括:
所述处理器基于所述GUI图像中的对应块中的像素的强度和/或边缘取向,确定所述多个块中的每个块的熵值。
11.根据权利要求9所述的方法,其中所述处理器为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符的步骤包括:
所述处理器通过用第三算法特定的权重对所述熵进行加权来确定所述似然性指示符。
12.根据权利要求1所述的方法,其中所述处理器基于所述似然性指示符从所述一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素的步骤包括:
所述处理器按照似然性指示符对所述一个或多个候选交互式GUI元素进行排序;以及
所述处理器将具有最高似然性指示符的候选交互式GUI元素确定为待交互的交互式GUI元素。
13.根据权利要求1所述的方法,还包括:
所述处理器将与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息进行比较。
14.根据权利要求13所述的方法,还包括:
响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息不匹配,所述处理器通过模拟与待交互的交互式GUI元素的类型相对应的用户操作,来与所确定的待交互的交互式GUI元素进行交互。
15.根据权利要求14所述的方法,还包括:
所述处理器确定在交互之后所述GUI的状态是否改变;以及
响应于确定在交互之后所述GUI的状态被改变,所述处理器将与所确定的交互式GUI元素有关的信息记录在数据库中作为历史信息。
16.根据权利要求13所述的方法,还包括:
响应于确定与所确定的待交互的交互式GUI元素有关的信息与先前存储在数据库中的历史信息相匹配,所述处理器基于所述似然性指示符从所述一个或多个候选交互式GUI元素中确定另一待交互的交互式GUI元素。
17.根据权利要求13所述的方法,其中与所确定的待交互的交互式GUI元素有关的信息包括以下至少之一:
所述GUI的标识符;
所确定的待交互的交互式GUI元素的标题;
所确定的待交互的交互式GUI元素的位置;
所确定的待交互的交互式GUI元素的大小;以及
待发生交互的位置。
18.根据权利要求1所述的方法,其中与所述GUI相对应的应用是在沙箱中执行的。
19.一种自动确定图形用户界面GUI中的待交互的交互式GUI元素的设备,包括:
处理器;
存储指令的存储器,所述指令在由所述处理器执行时使得所述处理器:
基于多个算法在GUI中检测一个或多个候选交互式GUI元素;
为所述一个或多个候选交互式GUI元素中的每个确定似然性指示符,所述似然性指示符指示与该似然性指示符相关联的候选交互式GUI元素是待交互的交互式GUI元素的似然性;以及
基于所述似然性指示符从所述一个或多个候选交互式GUI元素中确定待交互的交互式GUI元素。
20.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时使所述处理器执行根据权利要求1所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/246,445 | 2019-01-11 | ||
US16/246,445 US11531748B2 (en) | 2019-01-11 | 2019-01-11 | Method and system for autonomous malware analysis |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111435391A true CN111435391A (zh) | 2020-07-21 |
Family
ID=71516681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010025498.2A Pending CN111435391A (zh) | 2019-01-11 | 2020-01-10 | 自动确定gui中待交互的交互式gui元素的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11531748B2 (zh) |
CN (1) | CN111435391A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301268B2 (en) | 2020-08-11 | 2022-04-12 | UiPath, Inc. | Graphical element detection using a combination of user interface descriptor attributes from two or more graphical element detection techniques |
US11232170B1 (en) | 2020-09-08 | 2022-01-25 | UiPath, Inc. | Application-specific graphical element detection |
US11507259B2 (en) | 2020-09-08 | 2022-11-22 | UiPath, Inc. | Graphical element detection using a combined series and delayed parallel execution unified target technique, a default graphical element detection technique, or both |
US11650874B2 (en) | 2020-10-14 | 2023-05-16 | UiPath, Inc. | Anomaly detection and self-healing for robotic process automation via artificial intelligence / machine learning |
US11294793B1 (en) | 2020-10-23 | 2022-04-05 | UiPath Inc. | Robotic process automation (RPA) debugging systems and methods |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170084273A1 (en) * | 2015-09-22 | 2017-03-23 | Meshrose Ltd. | Automatic performance of user interaction operations on a computing device |
US20180046798A1 (en) * | 2015-02-16 | 2018-02-15 | Universitat Des Saarlandes | Mining Sandboxes |
US20180176409A1 (en) * | 2016-12-15 | 2018-06-21 | Liberty Pipeline Serivices, LLC | System and method for importing scanned construction project documents |
CN108304113A (zh) * | 2017-12-28 | 2018-07-20 | 深圳市创梦天地科技股份有限公司 | 一种界面交互配置方法及终端 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2348520B (en) * | 1999-03-31 | 2003-11-12 | Ibm | Assisting user selection of graphical user interface elements |
US20120075440A1 (en) | 2010-09-28 | 2012-03-29 | Qualcomm Incorporated | Entropy based image separation |
US9104867B1 (en) | 2013-03-13 | 2015-08-11 | Fireeye, Inc. | Malicious content analysis using simulated user interaction without user involvement |
RU2626337C1 (ru) * | 2016-02-18 | 2017-07-26 | Акционерное общество "Лаборатория Касперского" | Способ обнаружения мошеннической активности на устройстве пользователя |
US10467029B1 (en) * | 2017-02-21 | 2019-11-05 | Amazon Technologies, Inc. | Predictive graphical user interfaces |
US20210150214A1 (en) * | 2018-07-25 | 2021-05-20 | Huawei Technologies Co., Ltd. | Method for Displaying Service Information on Preview Interface and Electronic Device |
EP3901752B1 (en) * | 2020-04-22 | 2024-09-11 | Taboola.com Ltd. | Display adjustments |
-
2019
- 2019-01-11 US US16/246,445 patent/US11531748B2/en active Active
-
2020
- 2020-01-10 CN CN202010025498.2A patent/CN111435391A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046798A1 (en) * | 2015-02-16 | 2018-02-15 | Universitat Des Saarlandes | Mining Sandboxes |
US20170084273A1 (en) * | 2015-09-22 | 2017-03-23 | Meshrose Ltd. | Automatic performance of user interaction operations on a computing device |
US20180176409A1 (en) * | 2016-12-15 | 2018-06-21 | Liberty Pipeline Serivices, LLC | System and method for importing scanned construction project documents |
CN108304113A (zh) * | 2017-12-28 | 2018-07-20 | 深圳市创梦天地科技股份有限公司 | 一种界面交互配置方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
US20200226249A1 (en) | 2020-07-16 |
US11531748B2 (en) | 2022-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12026257B2 (en) | Method of malware detection and system thereof | |
US11570211B1 (en) | Detection of phishing attacks using similarity analysis | |
US11531748B2 (en) | Method and system for autonomous malware analysis | |
US9282112B2 (en) | System and method for determining category of trust of applications performing interface overlay | |
Javaheri et al. | Detection and elimination of spyware and ransomware by intercepting kernel-level system routines | |
US10621349B2 (en) | Detection of malware using feature hashing | |
US8079085B1 (en) | Reducing false positives during behavior monitoring | |
US9239922B1 (en) | Document exploit detection using baseline comparison | |
CN109586282B (zh) | 一种电网未知威胁检测系统及方法 | |
US9424422B2 (en) | Detection of rogue software applications | |
US20060224930A1 (en) | Systems and methods for event detection | |
US11809556B2 (en) | System and method for detecting a malicious file | |
CN106250761B (zh) | 一种识别web自动化工具的设备、装置及方法 | |
Yang et al. | Droidward: an effective dynamic analysis method for vetting android applications | |
Dietrich et al. | Exploiting visual appearance to cluster and detect rogue software | |
US20180032745A1 (en) | System and method of blocking access to protected applications | |
Delosières et al. | Infrastructure for detecting Android malware | |
CN102598008A (zh) | Windows内核改变搜索方法 | |
CN115225328B (zh) | 页面访问数据的处理方法、装置、电子设备以及存储介质 | |
CN112580038A (zh) | 反病毒数据的处理方法、装置及设备 | |
US12001545B2 (en) | Detecting stack pivots using stack artifact verification | |
Upadhyay et al. | Virtual memory introspection framework for cyber threat detection in virtual environment | |
Vijay et al. | Android-based smartphone malware exploit prevention using a machine learning-based runtime detection system | |
KR101955196B1 (ko) | 휴대용 정보 분석 장치와 이를 이용한 데이터 분석 방법 | |
RU2580053C2 (ru) | Система и способ определения статуса неизвестного приложения |
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 |