CN117806688B - 热更新检测方法、装置、计算机设备和存储介质 - Google Patents

热更新检测方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117806688B
CN117806688B CN202410235159.5A CN202410235159A CN117806688B CN 117806688 B CN117806688 B CN 117806688B CN 202410235159 A CN202410235159 A CN 202410235159A CN 117806688 B CN117806688 B CN 117806688B
Authority
CN
China
Prior art keywords
data
tag
function
mark
application
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
Application number
CN202410235159.5A
Other languages
English (en)
Other versions
CN117806688A (zh
Inventor
孙少洁
于旸
翟立东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410235159.5A priority Critical patent/CN117806688B/zh
Publication of CN117806688A publication Critical patent/CN117806688A/zh
Application granted granted Critical
Publication of CN117806688B publication Critical patent/CN117806688B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种热更新检测方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括在应用运行过程中,确定当前执行到的针对应用的机器执行指令;确定基于机器执行指令所执行的当前执行函数,并在当前执行函数为预设待检测函数类型的情况下,确定传递至当前执行函数的传递数据;确定传递数据的标记存储位置;在基于应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向任一执行函数所传递数据的数据来源标记;当从传递数据的标记存储位置处获取得到数据来源标记,根据传递数据和从传递数据的标记存储位置处获取得到的数据来源标记,生成热更新记录。采用本方法能够提升热更新检测的效率。

Description

热更新检测方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种热更新检测方法、装置、计算机设备和存储介质。
背景技术
随着科学技术的发展,出现了热更新技术。热更新(Hot Update)也称热修复(HotFix),是指在不停机或重新启动的情况下,对软件或应用程序进行在线更新或修复的技术。目前,由于热更新技术隐蔽性强,常被不法开发者用于技术对抗,以绕过合规性管理。因此,需要对应用进行检测,以确定应用在运行过程中是否会发生热更新行为。
目前,主要是在不运行应用程序的情况下分析其安装包文件,通过分析结果来确定应用在运行过程中是否会发生热更新。这个过程涉及到扫描安装包文件中的代码和资源文件,例如,涉及到检查安装包中是否存在已知的热更新框架的类名、方法调用或者特定的资源文件。
然而,人工分析安装包文件是一个耗时的过程,会使得热更新检测的效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升检测效率的热更新检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种热更新检测方法,所述方法包括:
在应用运行过程中,确定当前执行到的针对所述应用的机器执行指令;
确定基于所述机器执行指令所执行的当前执行函数,并在所述当前执行函数为预设待检测函数类型的情况下,确定传递至所述当前执行函数的传递数据;
确定所述传递数据的标记存储位置;其中,在基于所述应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向所述任一执行函数所传递数据的数据来源标记;
在从所述传递数据的标记存储位置处获取得到数据来源标记的情况下,根据所述传递数据和从所述传递数据的标记存储位置处获取得到的数据来源标记,生成热更新记录;其中,所述热更新记录,用于确定所述应用是否进行了热更新。
第二方面,本申请还提供了一种热更新检测装置,所述装置包括:
传递数据确定模块,用于在应用运行过程中,确定当前执行到的针对所述应用的机器执行指令;确定基于所述机器执行指令所执行的当前执行函数,并确定传递至所述当前执行函数的传递数据。
标记存储位置确定模块,用于确定所述传递数据的标记存储位置;其中,在基于所述应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向所述任一执行函数所传递数据的数据来源标记。
记录生成模块,用于在从所述传递数据的标记存储位置处获取得到数据来源标记的情况下,根据所述传递数据的传递数据和从所述标记存储位置处获取得到的数据来源标记,生成热更新记录;所述热更新记录,用于确定所述应用是否进行了热更新。
在其中一个实施例中,所述应用运行于虚拟终端,且所述应用是在通过安装包上传页面将所述应用的安装包上传至检测平台后,基于预设的安装指令触发所述虚拟终端通过所述安装包安装得到的。
在其中一个实施例中,在所述传递数据是基于所述原始数据生成得到的情况下,所述传递数据的标记存储位置处记录有所述原始数据的数据来源标记;所述热更新检测装置还包括标记生成模块,用于在从网络获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征网络获取源的第一标记;在从本地获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征本地获取源的第二标记。
在其中一个实施例中,所述标记生成模块还用于获取预设的第一函数集合;所述第一函数集合,包括所述应用支持的用以接收网络数据的系统调用函数;确定用以获取所述原始数据的数据获取函数;将所述数据获取函数与所述第一函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第一函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从网络获取得到的,并将第一标记作为所述原始数据的数据来源标记。
在其中一个实施例中,所述标记生成模块还用于获取预设的第二函数集合;所述第二函数集合,包括所述应用支持的用于进行文件读写的系统调用函数;将所述数据获取函数与所述第二函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第二函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从本地获取得到的,并将第二标记作为所述原始数据的数据来源标记。
在其中一个实施例中,所述标记存储位置确定模块还用于在所述传递数据为数据对象类型的情况下,确定所述传递数据的标记存储位置为所述传递数据的扩展结构;在所述传递数据为非数据对象类型的情况下,确定所述传递数据的标记存储位置为存储有所述传递数据的虚拟机栈。
在其中一个实施例中,所述热更新检测装置还包括标记传递模块,用于在基于所述当前执行函数将所述传递数据传递至下一个执行函数的过程中,根据从所述传递数据的标记存储位置处提取出的数据来源标记,生成所述传递数据的元数据;将所述传递数据和所述传递数据的元数据共同传递至所述下一个执行函数。
在其中一个实施例中,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据存储于虚拟机栈的情况下,确定所述处理数据在所述虚拟机栈中的存储位置;根据所述处理数据在所述虚拟机栈中的存储位置,确定所述处理数据的标记存储位置;根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记存储于所述处理数据的标记存储位置处。
在其中一个实施例中,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据为数据对象的情况下,在所述处理数据的扩展结构中新增成员变量;根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记,作为新增的成员变量的值。
在其中一个实施例中,所述应用运行于虚拟终端;当所述虚拟终端中的虚拟机运行于解释执行模式,则在所述应用运行的过程中,每当执行一条原始机器执行指令后,插入一条用以对数据来源标记进行传递的数据来源标记传递指令;所述原始机器执行指令,是指基于所述应用的安装包生成的机器执行指令;当所述虚拟终端中的虚拟机运行于编译执行模式,则在通过所述虚拟机的编译器对所述应用进行编译的过程中,插入用以对数据来源标记进行传递的数据来源标记传递指令。
在其中一个实施例中,所述记录生成模块还用于在所述传递数据的标记存储位置处提取出标记集合的情况下,根据所述标记集合中的标记确定所述传递数据的数据来源;根据所述标记集合中的标记,确定所述传递数据的数据来源;根据所述传递数据的数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录;将所述热更新记录发送至检测平台。
在其中一个实施例中,所述记录生成模块还用于若所述标记集合包括用以表征网络获取源的第一标记,则确定所述传递数据的数据来源为网络;若所述标记集合仅包括用以表征本地获取源的第二标记,则确定所述传递数据的数据来源为本地。
在其中一个实施例中,所述记录生成模块还用于在确定所述传递数据的数据来源为网络的情况下,获取所述应用在运行过程中发送的与所述传递数据相关的网络请求;确定所述网络请求携带的网络链接,并将所述网络链接与预设的应用更新官方链接相匹配,得到匹配结果;在根据所述匹配结果确定所述应用并非是通过官方更新通道进行热更新的情况下,根据所述匹配结果、所述数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例提供的任一种热更新检测方法中的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的任一种热更新检测方法中的步骤。
第五方面,本申请还提供了一种计算机程序产品,所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本申请实施例提供的任一种热更新检测方法中的步骤。
上述热更新检测方法、装置、计算机设备、存储介质和计算机程序产品,通过在应用的运行过程中确定当前执行到的机器执行指令,可基于当前执行到的机器执行指令确定当前执行函数。通过确定当前执行函数,可确定当前执行函数所属的函数类型。在确定当前执行函数属于预设待检测函数类型的情况下,确定此时可能发生了热更新行为,并获取传递至当前执行函数的传递数据。通过获取传递数据,可确定传递数据的标记存储位置,并在标记存储位置处获取得到数据来源标记的情况下,确定应用进行了热更新,从而根据传递数据和从标记存储位置处获取得到数据来源标记,生成热更新记录,以便用户基于热更新记录确定应用的热更新行为。由于本申请可在应用运行的过程中自动地对应用进行热更新检测,相比于传统的通过人工分析安装包文件的方式对应用进行热更新检测,本申请提升了热更新的检测效率。
附图说明
图1为一个实施例中热更新检测方法的应用环境图;
图2为一个实施例中热更新检测方法的流程示意图;
图3为一个实施例中应用图标的示意图;
图4为一个实施例中开屏页面示意图;
图5为一个实施例中数据来源标记的提取示意图;
图6为一个实施例中虚拟机栈的示意图;
图7为一个实施例中数据标记传递的示意图;
图8为一个实施例中热更新检测方法的整体流程示意图;
图9为一个实施例中任务中心的示意图;
图10为另一个实施例中任务中心的示意图;
图11为一个实施例中检测平台的检测页面示意图;
图12为又一个实施例中任务中心的示意图;
图13为另一个实施例中热更新检测方法的整体流程示意图;
图14为一个实施例中热更新检测方法的交互示意图;
图15为一个具体实施例中热更新检测方法的流程示意图;
图16为一个实施例中热更新检测方法的整体框架示意图;
图17为一个实施例中热更新检测装置的结构框图;
图18为一个实施例中计算机设备的内部结构图;
图19为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的应用摇晃响应检测方法,可以应用于如图1所示的应用环境中。终端102通过网络与服务器104进行通信。数据存储系统可以存储终端102需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。终端102中可运行有检测平台和虚拟终端,服务器104可为检测平台的后台服务器。用户可通过检测平台上传应用的安装包,从而检测平台可触发虚拟终端对该安装包进行安装处理,得到运行于虚拟终端中的应用。虚拟终端可显示应用的应用界面,当用户点击测试平台中的开始检测控件后,在应用的运行过程中,便可对应用的热更新行为进行检测。其中,终端102可以但不限于是各种台式计算机、笔记本电脑、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104还可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
需要说明的是,本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。除非上下文另外清楚地指出,否则单数形式“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。本申请各实施例中提及的“多个”或“多份”等的数量均指代“至少两个”的数量,比如,“多个”指“至少两个”,“多份”指“至少两份”。
在一个实施例中,如图2所示,提供了一种热更新检测方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,在应用运行过程中,确定当前执行到的针对应用的机器执行指令。
其中,针对应用的机器执行指令是指对应用的代码进行编译后得到的机器可以识别的指令。当前执行到的机器执行指令,是指当前时刻执行到的机器执行指令。
应用可运行于虚拟终端中。虚拟终端是一个虚拟的终端设备,比如,虚拟终端可为一个虚拟的安卓设备,该安卓设备能够在服务器上模拟真实的安卓手机硬件和软件环境。又比如,虚拟终端具体可以为一个云手机。虚拟终端的运行系统为定制的安卓系统,该定制的安卓系统除了包括对机器执行指令进行执行的虚拟机,还包括数据流确定系统、行为记录程序和检测系统。其中,数据流确定系统,用于以捕获和记录应用运行过程中所有数据流动。行为记录程序用于记录应用的行为,比如,记录应用的本地数据访问行为。检测系统用于分析传递至相应函数的数据的来源。
具体的,检测平台是指用以对应用进行检测的平台,比如,通过检测平台可对应用的热更新行为进行检测。当用户期望通过检测平台对应用进行检测时,用户可将应用的安装包上传至检测平台,从而检测平台可启动一个虚拟终端,并使得虚拟终端通过安装包安装应用。进一步地,当用户确定开始对应用进行检测时,用户可通过虚拟终端中显示的应用图标来启动应用,并使用应用,比如,导航应用的不同界面、输入数据等等。定制安卓系统中的虚拟机会执行每条机器执行指令,以使得应用能够正常运行,数据流确定系统内置在虚拟机内,可以在虚拟机执行机器执行指令的时候进行同步的拦截,以确定当前执行到的机器执行指令。
在其中一个实施例中,当将应用安装于虚拟终端后,检测平台可显示虚拟终端的终端界面,并通过该终端界面显示应用的应用图标。比如,显示如图3所示的应用图标301。当用户点击该应用图标,虚拟终端即可启动应用,展示应用的应用界面,比如,显示如图4所示的应用的开屏页面401。图3示出了一个实施例中应用图标的示意图,其中,在图3中,302为虚拟终端的终端界面,303为检测平台的检测页面。图4示出了一个实施例中应用的开屏页面示意图。
步骤204,确定基于机器执行指令所执行的当前执行函数,并在当前执行函数为预设待检测函数类型的情况下,确定传递至当前执行函数的传递数据。
具体的,当数据流确定系统确定当前执行到的机器执行指令后,检测系统可对当前执行到的机器执行指令进行分析,以确定基于当前执行到的机器执行指令执行的函数。为了描述方便,下述将基于当前执行到的机器执行指令所执行的函数,称作当前执行函数。比如,当前执行到的机器执行指令为用以指示对A数据进行复制的指令时,则确定基于机器执行指令所执行的当前执行函数为数据复制函数。进一步的,检测系统可判断当前执行函数是否属于预设的待检测函数类型,若属于预设的待检测函数类型,则检测系统可确定传递至当前执行函数的数据,也即,确定当前执行函数的输入数据。为了描述方便,下述将传递至当前执行函数的数据,称作传递数据。
在其中一个实施例中,检测系统可获取属于预设待检测函数类型的函数,得到第三函数集合。检测系统查看第三函数集合中是否包含当前执行函数,若包含,则确定当前执行函数为预设待检测函数类型;若不包含,则确定当前执行函数不为预设待检测函数类型。
在其中一个实施例中,预设待检测函数类型具体可为sink函数类型。sink函数类型的函数,是指可能输出数据到敏感目的地(如类加载或动态库加载)的函数。sink函数类型的函数具体可为库加载函数、类加载函数等。由于本申请是需要对应用的热更新行为进行检测,而在热更新的过程中,可能会使用类加载器来动态加载类,或者,可能会加载动态库,因此,可以通过判断当前执行函数是否为类加载函数,或者,是否为库加载函数,来确定应用是否进行了热更新行为。
在其中一个实施例中,当确定了当前执行函数后,可通过当前执行函数中的关键字,来确定传递至当前执行函数的传递数据。比如,可通过当前执行函数汇中的关键字“input”来定位到传递至当前执行函数的传递数据。
步骤206,确定传递数据的标记存储位置;其中,在基于应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向任一执行函数所传递数据的数据来源标记。
具体的,检测系统可根据传递数据的数据类型,来确定用以存储该传递数据的数据来源标记的位置。为了描述方便,下述将确定用以存储该传递数据的数据来源标记的位置称作标记存储位置。比如,检测系统中预先设置有不同数据类型与存储位置之间的对应关系,当确定了传递数据的数据类型后,即可基于该对应关系来确定传递数据的标记存储位置。
在其中一个实施例中,确定传递数据的标记存储位置,包括:在传递数据为数据对象类型的情况下,确定传递数据的标记存储位置为传递数据的扩展结构;在传递数据为非数据对象类型的情况下,确定传递数据的标记存储位置为存储有传递数据的虚拟机栈。
具体的,检测系统可确定传递数据的数据类型,根据数据类型来确定该传递数据的标记存储位置。比如,参考图5,当传递数据是一个数据对象时,也即,当传递数据为对象类型时,则确定应从传递数据的扩展结构中获取数据来源标记。在传递数据为简单数据,其并不是一个数据对象时,则确定应从传递数据所在的虚拟机栈中获取数据来源标记。数据来源标记是指用以标记数据来源的标识。比如,数据来源标记可为“网络”或者“本地”。当数据来源标记为“网络”时,则确定该数据来源标记所标记的数据来源于网络;当数据来源标记为“本地”时,则确定该数据来源标记所标记的数据来源于本地。图5示出了一个实施例中数据来源标记的提取示意图。
在其中一个实施例中,可以由一组属性来定义的实体都可以被认为是数据对象。数据对象可以是某个类的实例,它具有自己的属性和方法。Java中的数据对象通常是使用new关键字创建的实例。数据对象的扩展结构具体可以为数据对象的字段集合,或者,数据对象的属性集合。检测系统可通过确定传递数据是否是通过预设关键字创建得到的,来确定传递数据是否为一个数据对象。比如,在传递数据是通过new关键字创建得到的情况下,则可确定传递数据是一个数据对象。又比如,检测系统可确定传递数据是否具有属性和方法,若具有属性和方法,则确定传递数据是一个数据对象。
在其中一个实施例中,虚拟机栈是一个栈状的存储空间,虚拟机栈是线程私有的,它的生命周期与线程相同。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧,对应着一次次的方法调用。在确定了标记存储位置为虚拟机栈时,检测系统还可进一步确定应从该虚拟机栈的哪个栈帧中提取出数据来源标记。示例性地,检测系统可确定传递数据在虚拟机栈中的位置,根据传递数据在虚拟机栈中的位置来确定具体的标记存储位置。
本申请实施例中的虚拟机栈为一个大小为正常大小两倍的栈,传统方案中,虚拟机栈一般的大小为n时,则本申请实施例中的虚拟机栈的大小为2n,参考图6,第0个至第n-1个栈帧用于按照传统方式进行数据的存储,第n个至第2n-1个栈帧用于存储数据来源标记。存储于第0个至第n-1个栈帧中的数据,与存储于第n个至第2n-1个栈帧中的数据来源标记是一一对应的。比如,当数据存储于第0个栈帧时,则该数据所对应的数据来源标记存储于第n-1个栈帧中;当数据存储于第1个栈帧时,则该数据所对应的数据来源标记存储于第n个栈帧中,依次类推。图6示出了一个实施例中虚拟机栈的示意图。
因此,当确定了传递数据所在的栈帧,便可根据传递数据所在的栈帧,确定传递数据的数据来源的标记所在的栈帧。比如,检测系统中存储有用以存储数据的栈帧与用以存储数据来源标记的栈帧之间的对应关系,当确定了传递数据所在的栈帧后,检测系统便可根据该对应关系来确定传递数据的数据来源的标记所在的栈帧,而传递数据的数据来源的标记所在的栈帧即为具体的标记存储位置。又比如,当确定了传递数据所在的栈帧后,可确定传递数据所在的栈帧离栈顶的距离,以虚拟机栈的中部为基准,并根据该距离来确定传递数据的数据来源的标记所在的栈帧。
在其中一个实施例中,在基于应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向所述任一执行函数所传递数据的数据来源标记。比如,参考图7,在应用运行过程中,当获取得到原始数据后,可对原始数据进行一系列的处理,而标记存储位置,则存储有一系列处理的过程中所涉及数据的数据来源标记。示例性地,在传递数据为E数据,原始数据为A数据,若将A数据与B数据进行叠加,得到C数据之后,又将C数据与D数据进行叠加,得到E数据的过程中,C数据的标记存储位置处存储有A数据的数据来源标记和B数据的数据来源标记;E数据的标记存储位置处存储有C数据的数据来源标记和D数据的数据来源标记。又由于,C数据的标记存储位置处存储有A数据的数据来源标记和B数据的数据来源标记,因此,可认为C数据的数据来源标记包括A数据的数据来源标记和B数据的数据来源标记,因此,E数据的标记存储位置处实则存储的是A数据的数据来源标记、B数据的数据来源标记和D数据的数据来源标记。容易理解的,在此举例中,可将A数据看成是原始数据,将E数据看成是输入至当前执行函数的传递数据,E数据看成是基于A数据生成得到的,此时,A数据的数据来源标记会传递至E数据,并存储于E数据的标记存储位置处。图7示出了一个实施例中数据标记传递的示意图。在其中一个实施例中,数据来源标记可作为传递数据的元数据,与传递数据共同传递,而不影响应用的正常功能。
上述实施例中,通过确定数据的类型,可基于类型来准确确定标记存储位置,从而基于准确确定的标记存储位置来得到准确的数据来源标记。
步骤208,在从传递数据的标记存储位置处获取得到数据来源标记的情况下,根据传递数据和从传递数据的标记存储位置处获取得到数据来源标记,生成热更新记录;热更新记录,用于确定应用是否进行了热更新。
具体地,在确定了传递数据和传递数据的标记存储位置后,检测系统可确定是否能够从传递数据的标记存储位置处提取出数据来源标记,并在确定能够从传递数据的标记存储位置处获取得到数据来源标记的情况下,则确定应用进行了热更新,并根据传递数据和从传递数据的标记存储位置处获取得到数据来源标记,生成热更新记录,将热更新记录发送至检测平台。
其中,由于从网络或者本地获取得到的数据才会具有数据来源标记,或者,基于从网络或者本地获取得到的数据而生成的数据会具有数据来源标记,因此,当从传递数据的标记存储位置处获取得到数据来源标记的情况下,可确定传递数据具有数据来源标记。当传递数据具有数据来源标记时,则认为该传递数据是从网络或者本地获取得到的,或者,可认为用以生成该传递数据的原始数据是来源于网络或者本地,在后者中,由于传递数据是基于原始数据生成得到的,在原始数据是来源于网络或者本地是来源于网络或者本地的情况下,也可看成传递数据是来源于网络或者本地的。因此,当传递数据具有数据来源标记时,无论该传递数据是直接从网络或者本地获取得到的,还是对原始数据进行一系列处理得到的,均可认为传递数据来源于本地或者网络。
当确定传递数据来源于本地或者网络时,则可确定属于预设待检测类型的当前执行函数是在对来自于网络或者本地的数据处理。而属于预设待检测类型的当前执行函数为与热更新行为相关的函数,比如,当前执行函数可为热更新中的类加载函数或者库加载函数,因此,当确定当前执行函数所执行的传递数据来源于网络或者本地,并非来源于原始安装包时,则可认为新的未经验证的代码已被注入到应用中,且应用正在基于该新的未经验证的代码进行热更新。
在其中一个实施例中,若传递数据不具有数据传递标记,则可认为传递数据生成于检测系统的管理范围之外,或者,可认为传递数据是定制安卓系统内部生成的数据,在这种情况下,检测系统并不会判定应用发生了热更新,而是让应用继续执行,也即,虚拟机继续执行下一个机器执行指令。
在其中一个实施例中,参考图8,图8示出了一个实施例中热更新检测方法的整体流程示意图。S801,用户可上传应用的安装包至检测平台,从而检测平台可触发虚拟终端通过安装包安装应用。S802,当开始对应用进行检测时,则可进入检测页面。S803,在检测页面中打开应用。S804,用户可操作应用,使用应用的各项功能。S805,当点击结束检测控件后,S806用户便可获取得到检测结果,基于检测结果确定应用是否进行了热更新。
上述热更新检测方法中,通过在应用的运行过程中确定当前执行到的机器执行指令,可基于当前执行到的机器执行指令确定当前执行函数。通过确定当前执行函数,可确定当前执行函数所属的函数类型。在确定当前执行函数属于预设待检测函数类型的情况下,确定此时可能发生了热更新行为,并获取传递至当前执行函数的传递数据。通过获取传递数据,可确定传递数据的标记存储位置,并在标记存储位置处获取得到数据来源标记的情况下,确定应用进行了热更新,从而根据传递数据和从标记存储位置处获取得到数据来源标记,生成热更新记录,以便用户基于热更新记录确定应用的热更新行为。由于本申请可在应用运行的过程中自动地对应用进行热更新检测,相比于传统的通过人工分析安装包文件的方式对应用进行热更新检测,本申请提升了热更新的检测效率。
在其中一个实施例中,应用运行于虚拟终端,且应用是在通过安装包上传页面将应用的安装包上传至检测平台后,基于预设的安装指令触发虚拟终端通过安装包安装得到的。
具体地,当对应用进行检测之前,还可以在虚拟终端中安装该应用。检测平台上可具有安装包上传控件,比如,该安装包上传控件具体可为安装包上传按键。当用户触发安装包上传控件后,检测平台可显示安装包上传页面,进而用户可通过安装包上传页面上传应用的安装包。比如,用户可将应用的安装包拖动至安装包上传页面中,并点击上传按键。当确定用户通过安装包上传页面上传安装包后,检测平台可检测安装包的有效性,并在有效性检测通过后,将该安装包上传至检测队列中。进一步地,当安装包成功上传至测试队列后,测试平台可自动触发虚拟终端上安装该应用。
在其中一个实施例中,当用户将应用的安装包拖动至安装包上传页面中,并点击上传按键后,检测平台可将应用的安装包发送至云端的检测队列中,并在任务中心中显示与应用相对应的任务信息行,以及在任务信息行中显示操作标识。比如,参考图9,图9示出了一个实施例中任务中心的示意图。在将安装包发送至云端的过程中,任务中心中可显示与应用相对应的任务信息行901,该任务信息行中显示有针对应用所执行的检测任务的任务标识、应用的应用名称、版本号、安装包的名称、任务添加时间、以及操作标识,且该操作标识具体为“正在下载”。通过显示“正在下载”样式的操作标识,可基于该操作标识提示用户安装包正处于上传过程中。
在其中一个实施例中,当安装包上传完成后,参考图10,任务中心中的操作标识,可从“正在下载”变更为“开始检测”,从而当用户点击“开始检测”后,检测平台可显示虚拟终端的终端界面,并在终端界面中显示应用的应用图标。当用户点击该应用图标后,虚拟终端便可显示应用的应用界面。图10示出了另一个实施例中任务中心的示意图。比如,针对“开始检测”控件设置有一个事件检测器,该事件检测器用于检测对“开始检测”控件的触发操作。当事件检测器检测到“开始检测”控件已被触发时,比如,当事件检测器检测到“开始检测”控件已被点击时,则事件检测器可生成点击事件广播,并将点击事件广播发送至虚拟终端,从而虚拟终端在接收到点击事件广播后,可基于点击事件广播确定“开始检测”控件已被点击,进而可展示包含应用图标的终端界面。
在其中一个实施例中,检测平台可显示多个候选安装包标识,比如,显示多个候选安装包名称。用户可从中选择一个候选安装包标识,进而检测平台将用户选中的候选安装包标识作为目标安装包标识,从应用商城中下载目标安装包标识所对应的安装包,将下载得到的安装包安装于虚拟终端中。
在其中一个实施例中,在安装包上传完成后,检测平台可创建一个虚拟终端,其中,该虚拟终端使用的是定制的安卓系统镜像,安卓系统镜像会在虚拟终端中创建一个干净的检测环境,并开始安装用户提交的安装包,安装过程会被详细记录,以便后续分析应用的行为和性能。通过在虚拟终端中创建干净的检测环境,可提升检测的准确性,减少环境噪声对检测的影响。
在其中一个实施例中,在安装包上传完成后,虚拟终端将自动触发安装流程。比如,当在将安装包上传至云端后,检测平台可通过安装指令触发虚拟终端安装该安装包,得到运行于虚拟终端中的应用。比如,检测平台可通过“adb install”指令,将安装包安装于虚拟终端。
在其中一个实施例中,在通过安装指令触发虚拟终端安装应用之前,检测平台可获取虚拟终端的访问权限,以便后续能够通过安装指令触发虚拟终端安装应用。
上述实施例中,通过展示安装包上传页面,可通过安装包上传页面上传应用的安装包,从而在上传安装包后,虚拟终端可自动地基于该安装包安装应用,从而提升了应用的安装便捷性。
在其中一个实施例中,在传递数据是基于原始数据生成得到的情况下,传递数据的标记存储位置记录有原始数据的数据来源标记;原始数据的数据来源标记的生成步骤包括:在从网络获取得到原始数据的情况下,确定原始数据的数据来源标记为用以表征网络获取源的第一标记;在从本地获取得到原始数据的情况下,确定原始数据的数据来源标记为用以表征本地获取源的第二标记。
其中,原始数据是指在应用运行过程中,用以生成其他数据的基准数据,该原始数据可以是基于网络请求从网络获取得到的数据,或者,可以是从本地文件系统中读取得到的数据,亦或者,可以是从本地数据库中读取得到的数据。
具体地,传递至当前执行函数的传递数据,可以是基于原始数据生成得到的,比如,可对原始数据进行数据处理,以得中间数据,之后,再对中间数据进行数据处理,以到传递数据。该数据处理的方式包括但不限于是复制、增加数据内容、删减数据内容、更改数据内容、对数据内容进行合并等等。此时,传递数据的数据来源标记,包括原始数据的数据来源标记。也即,无论原始数据在应用运行的过程中如何进行流转,基于该原始数据得到的数据,都会包括该原始数据的数据来源标记。也即,在数据流动过程中,原始数据的数据来源标记,会随着原始数据的传递而传递。比如,在获取得到原始数据,且确定原始数据的数据来源标记后,在应用的运行过程中,可能会将该原始数据从一个操作传递至另一个操作,以基于该原始数据得到第一中间数据,此时,第一中间数据的标记存储位置处则会记录有该原始数据的数据来源标记,示例性地,当对原始数据进行复制得到第一中间数据时,第一中间数据的标记存储位置处会记录有原始数据的数据来源标记。
进一步地,若将第一中间数据从一个操作传递至另一个操作,以基于第一中间数据得到第二中间数据时,则第二中间数据的数据来源标记会包括第一中间数据的数据来源标记。示例性地,当对第二中间数据进行数值修改得到第二中间数据时,第二中间数据的标记存储位置处会记录有第一中间数据的数据来源标记。可将从第一中间数据的标记存储位置处提取出的数据来源标记,称作第一数据的数据来源标记。又由于第一中间数据的标记存储位置处记载有原始数据的数据来源标记,因此,第二中间数据的标记存储位置处也会记载有原始数据的数据来源标记。如此,可进行多次数据传递,最终得到传递数据,此时,传递数据的标记存储位置处也可会记载有原始数据的数据来源标记。
由于在数据流动过程中,原始数据的数据来源标记,会随着原始数据的传递而传递,因此,需要在获取得到原始数据后,确定原始数据的数据来源标记。在从网络获取得到原始数据的情况下,数据流确定系统可确定原始数据的数据来源标记为第一标记;在从本地获取得到原始数据的情况下,检测系统可确定原始数据的数据来源标记为第二标记。第一标记为用以表征数据是从网络获取得到的标记,第二标记为用以表征数据是从本地获取得到的标记。比如,第一标记可以为“网络”,第二标记可以为“本地”。
在其中一个实施例中,可在应用启动的过程中获取得到的数据,称作原始数据,并确定该原始数据的数据来源标记。
在其中一个实施例中,可确定用以获取原始数据的机器执行指令,并在基于该机器执行指令确定已发送网络请求时,则可确定原始数据是基于网络请求获取得到的,此时,将第一标记作为原始数据的数据来源标记。
在其中一个实施例中,可确定用以获取原始数据的机器执行指令,并在基于该机器执行指令确定已进行本地文件系统的访问,或者,已进行本地数据库的访问时,则可确定原始数据是从本地文件系统获取得到,或者,确定原始数据是从本地数据库中获取得到的,此时,将第二标记作为原始数据的数据来源标记。
上述实施例中,通过确定原始数据的数据来源标记,可在数据流动过程中将原始数据以及原始数据的数据来源标记共同进行传递,这样,基于原始数据得到的传递数据的数据来源标记便可包括原始数据的数据来源标记,从而可基于包括原始数据的数据来源标记的标记,确定传递数据的最原始来源。由于可基于传递数据的数据来源标记,确定传递数据的最原始来源,因此,在应用运行的过程中,无论对数据进行了何种数据变换以得到传递数据,均可基于数据来源标记追溯到该传递数据的最原始来源。
在热更新技术中,为了绕过合规性管理,应用开发者会对热更新文件并非来自于原始安装包这一信息进行重重处理,以使检测人员误认为热更新文件是来源于原始安装包,从而无法检测出应用是否进行了热更新。其中,热更新文件是指用以进行热更新的文件,比如,热更新文件可以为补丁。本申请则解决了上述问题,在本申请中,对于应用运行过程中的传递数据,无论传递数据是经过怎样的一系列操作生成得到的,均可追溯到该传递数据的最原始来源,因此,检测系统可基于传递数据的最原始来源,追溯到传递数据是来源于原始安装包,还是来源于除原始安装包之外的网络或本地,并在确定传递数据是来源于除原始安装包之外的网络或本地时,确定应用进行了热更新。
在其中一个实施例中,在从网络获取得到原始数据的情况下,确定原始数据的数据来源标记为用以表征网络获取源的第一标记,包括:获取预设的第一函数集合;第一函数集合,包括应用支持的用以接收网络数据的系统调用函数;确定用以获取原始数据的数据获取函数;将数据获取函数与第一函数集合中的系统调用函数进行匹配;在数据获取函数与第一函数集合中的系统调用函数匹配成功的情况下,确定原始数据是从网络获取得到的,并将第一标记作为原始数据的数据来源标记。
具体的,数据流确定系统可确定用以获取原始数据的函数。为了描述方便,下述将用以获取原始数据的函数称作数据获取函数。数据流确定系统还可获取预设的第一函数集合,其中,第一函数集合包括应用支持的用以接收网络数据的系统调用函数,比如,第一函数集合包括网络接口调用函数、网络请求发送函数、网络请求响应函数等等。进一步地,数据流确定系统将数据获取函数与第一函数集合进行匹配,以确定第一函数集合中是否具有与数据获取函数相匹配的系统调用函数。若第一函数集合中具有与数据获取函数相匹配的系统调用函数,则确定数据获取函数与第一函数集合中的系统调用函数匹配成功,此时,可确定原始数据是从网络获取得到的。
在其中一个实施例中,可预先找出内核支持的所有接收网络数据的系统调用函数,如recvfrom函数,将找出的系统调用函数存储于第一函数集合中。
在其中一个实施中,确定第一函数集合中是否具有与数据获取函数相匹配的系统调用函数具体可为,确定第一函数集合中是否具有与数据获取函数一致的系统调用函数。检测系统可确定数据获取函数的函数名称,为了描述方便,下述将数据获取函数的函数名称称作数据获取函数名称。检测系统确定第一函数集合中是否包括具有数据获取函数名称的系统调用函数,若第一函数集合中包括具有该数据获取函数名称的系统调用函数,则确定第一函数集合中具有与数据获取函数一致的系统调用函数。
在其中一个实施例中,在应用运行过程中,若基于当前执行的机器执行指令获取得到数据的情况下,可确定该数据是否具有数据来源标记,若不具备数据来源标记,则可确定用以获取该数据的函数,通过将用以获取该数据的函数与第一函数集合进行匹配,以确定用以获取该数据的函数是否与第一函数集合相匹配。当确定与第一函数集合相匹配时,确定该数据为原始数据,并确定原始数据来源于网络,将第一标记作为原始数据的数据来源标记。相应的,若基于当前执行的机器执行指令获取得到数据具有数据来源标记的情况下,则可确定该数据不是原始数据。
上述实施例中,只需进行匹配操作,即可确定原始数据是否来源于网络,如此便提升了原始数据的数据来源的确定效率。
在其中一个实施例中,在从本地获取得到原始数据的情况下,确定原始数据的数据来源标记为用以表征本地获取源的第二标记,包括:获取预设的第二函数集合;第二函数集合,包括应用支持的用于进行文件读写的系统调用函数;将数据获取函数与第二函数集合中的系统调用函数进行匹配;在数据获取函数与第二函数集合中的系统调用函数匹配成功的情况下,确定原始数据是从本地获取得到的,并将第二标记作为原始数据的数据来源标记。
具体的,数据流确定系统可确定用以获取原始数据的数据获取函数。数据流确定系统还可获取预设的第二函数集合,其中,第二函数集合包括应用支持的用于进行文件读写的系统调用函数,比如,第二函数集合包括本地文件系统访问函数、本地数据库访问函数等等。进一步地,数据流确定系统将数据获取函数与第二函数集合进行匹配,以确定第二函数集合中是否具有与数据获取函数相匹配的系统调用函数。若第二函数集合中具有与数据获取函数相匹配的系统调用函数,则确定数据获取函数与第二函数集合中的系统调用函数匹配成功,此时,可确定原始数据是从本地获取得到的。其中,确定第二函数集合中是否具有与数据获取函数相匹配的系统调用函数具体可为,确定第二函数集合中是否具有与数据获取函数一致的系统调用函数。
在其中一个实施例中,可预先找出内核支持的所有接收本地数据的系统调用函数,如read函数,将找出的系统调用函数存储于第二函数集合中。
在其中一个实施例中,在应用运行过程中,若基于当前执行的机器执行指令获取得到数据的情况下,可确定该数据是否具有数据来源标记,若不具备数据来源标记,则可确定用以获取该数据的函数,通过将用以获取该数据的函数与第二函数集合进行匹配,以确定用以获取该数据的函数是否与第二函数集合相匹配。当确定与第二函数集合相匹配时,确定该数据为原始数据,并确定原始数据来源于网络,将第二标记作为原始数据的数据来源标记。
上述实施例中,只需进行匹配操作,即可确定原始数据是否来源于本地,如此便提升了原始数据的数据来源的确定效率。
在其中一个实施例中,上述方法还包括:在基于当前执行函数将所述传递数据传递至下一个执行函数的过程中,根据从传递数据的标记存储位置处提取出的数据来源标记,生成所述传递数据的元数据;将传递数据和所述传递数据的元数据共同传递至下一个执行函数。
具体的,在数据流动过程中,数据来源标记会随着传递数据共同进行传递,比如,在基于当前执行函数将传递数据传递至下一个执行函数的情况下,数据流确定系统会将传递数据的数据来源标记也传递至下一个执行函数。比如,数据确定系统会将传递数据的数据来源标记作为传递数据的元数据,与传递数据共同传递至下一个执行函数。其中,元数据是指用以描述数据的数据。
在其中一个实施例中,数据流确定系统在拦截到当前执行的机器执行指令,并在基于当前执行的机器执行指令确定当前执行函数是用于将传递数据传递至下一个执行函数时,则数据流确定系统可根据传递数据的数据来源标记生成传递数据的元数据,并将该元数据也传递至下一个执行函数。
在其中一个实施例中,当传递数据具有元数据的情况下,可在原有的元数据中添加传递数据的数据来源标记;在传递数据不具有元数据的情况下,基于传递数据的数据来源标记生成传递数据的元数据。
容易理解的,不仅仅是传递数据,对于应用运行过程中所产生的全部数据,均可将该数据以及该数据的数据来源标记,从一个操作传递至另一个操作。
上述实施例中,通过将传递数据的数据来源标记作为元数据与传递数据共同进行传递,可减小数据来源标记的传递对应用正常功能的影响,从而实现在应用正常运行的过程中对应用的热更新行为进行检测,如此,便提升了热更新检测的准确性。
在其中一个实施例中,上述方法还包括:在基于下一个执行函数对传递数据进行处理,得到处理数据,且处理数据存储于虚拟机栈的情况下,确定处理数据在虚拟机栈中的存储位置;根据处理数据在虚拟机栈中的存储位置,确定处理数据的标记存储位置;根据传递数据的元数据,确定从传递数据的标记存储位置处提取出的数据来源标记,并将从传递数据的标记存储位置处提取出的数据来源标记存储于处理数据的标记存储位置处。
具体地,当将传递数据传递至下一个执行函数,则下一个执行函数可对传递数据进行处理,以得到处理数据。在处理数据存储于虚拟机栈的情况下,则数据流确定系统可确定处理数据在虚拟机栈中的存储位置,并根据处理数据在虚拟机栈中的存储位置,来确定处理数据的数据来源标记应存储的位置。为了描述方便,下述将处理数据的数据来源标记应存储的位置,称作处理数据的标记存储位置。进一步地,由于元数据为用以描述数据的数据,因此,传递数据的元数据可用以描述从传递数据的标记存储位置处提取出的数据来源标记具体为哪些标记,从而数据流确定系统可基于传递数据的元数据,确定从传递数据的标记存储位置处提取出的数据来源标记,并将从传递数据的标记存储位置处提取出的数据来源标记存储于处理数据的标记存储位置处。
在其中一个实施例中,数据流确定系统可确定处理数据在虚拟机栈中的栈帧,并确定该栈帧与虚拟机栈的顶部之间的距离。为了描述方便,下述将处理数据所在的栈帧与虚拟机栈的顶部之间的距离,称作第一距离。数据流确定虚拟机栈的中间位置,并将与中间位置之间的距离为第一距离的栈帧,作为标记存储位置。比如,在处理数据所在的栈帧为第3个栈帧,其与第0个栈帧之间的距离为3。虚拟机栈的中间位置为第n个栈帧,则处理数据的标记存储位置为第n+3个栈帧。之后,数据流确定系统可基于传递数据的元数据,确定传递数据的数据来源标记,并将传递数据的数据来源标记存储于第n+3个栈帧处。
上述实施例中,通过将传递数据的数据来源标记,存储于处理数据的标记存储位置处,可使得处理数据的数据来源标记包括传递数据的数据来源标记,如此,便实现了数据来源标记随着数据的传播而传播。
在其中一个实施例中,上述方法还包括:在基于下一个执行函数对传递数据进行处理,得到处理数据,且处理数据为数据对象的情况下,在处理数据的扩展结构中新增成员变量;根据传递数据的元数据,确定从传递数据的标记存储位置处提取出的数据来源标记,并将新增的成员变量的值,置为从传递数据的标记存储位置处提取出的数据来源标记。
具体的,当将传递数据传递至下一个执行函数,则下一个执行函数可对传递数据进行处理,以得到处理数据。在处理数据为数据对象的情况下,则数据流确定系统可在处理数据的扩展结构中新增成员变量,并将从传递数据的标记存储位置处提取出的数据来源标记,作为新增成员变量的值。比如,可增加一个该处理数据的字段,并将从传递数据的标记存储位置处提取出的数据来源标记,作为该字段的值。或者,针对该处理数据,可增加一个该处理数据的属性,并将从传递数据的标记存储位置处提取出的数据来源标记作为该属性的值。
在其中一个实施例中,新增的成员变量可为一个表征处理数据的数据来源标记的变量,当将传递数据的数据来源标记作为新增成员变量的值,可使得处理数据的数据来源标记包括传递数据的数据来源标记。比如,新增成员变量可为“tagged=网络”,其中,“网络”为传递数据的数据来源标记。当需要确定处理数据的数据来源标记时,则可基于关键字“tagged”从传递数据的扩展结构中提取出“tagged=网络”。
上述实施例中,通过将传递数据的数据来源标记,作为处理数据的新增成员变量的值,可使得处理数据的数据来源标记包括传递数据的数据来源标记,如此,便实现了数据来源标记随着数据的传播而传播。
容易理解的,不仅仅是传递数据和处理数据,对于应用运行过程中所产生的全部数据,均可基于上述方式进行数据来源标记的处理。比如,在执行一系列执行函数过程中,对于基于任一执行函数生成的数据,在该数据存储于虚拟机栈的情况下,可基于该数据在虚拟机栈中的存储位置,确定该数据的标记存储位置,并将向该任一执行函数所传递数据的数据来源标记,存储于基于该任一执行函数所生成的数据的标记存储位置处。又比如,在执行一系列执行函数过程中,对于基于任一执行函数生成的数据,在该数据为数据对象的情况下,可在该数据的扩展结构中新增成员变量,并将向该任一执行函数所传递数据的数据来源标记,作为该新增成员变量的值。
在其中一个实施例中,若下一个执行函数为运算函数时,则除了将传递数据传递至下一个执行函数,还会将其他的数据传递至下一个执行函数。为了描述方便,下述将传递至下一个执行函数的除传递数据之外的其他数据,称作运算数据。在将传递数据传递至下一个执行函数的过程中,会将传递数据的数据来源标记也传递至下一个执行函数,且在将运算数据传递至下一个执行函数的过程中,也会将运算数据的数据来源标记传递至下一个执行函数。进一步地,下一个执行函数会对传递数据和运算数据进行数据运算处理,以得到处理数据。在处理数据存储于虚拟机栈时,则会将传递数据的数据来源标记,以及运算数据的数据来源标记均存储于处理数据所在的虚拟机栈中。在处理数据为数据对象时,则会在处理数据的扩展结构中新增多个成员变量,其中一个成员变量的值为传递数据的数据来源标记,另一个成员变量的值为运算处理的数据来源标记。比如,可生成“tagged_1=传递数据的数据来源标记”、“tagged_2=运算数据的数据来源标记”的成员变量。
在其中一个实施例中,当将处理数据传递至再下一个函数,且再下一个函数属于预设待检测函数类型时,则检测系统需要提取出处理数据的数据来源标记,并基于处理数据的数据来源标记确定应用是否进行了热更新。当需要提取出处理数据的数据来源标记时,若处理数据存储于虚拟机栈,则从虚拟机栈中提取出处理数据的数据来源标记。比如,在上述举例中,可从第n+3个栈帧处提取出全部的数据来源标记,将提取出的全部的数据来源标记,作为处理数据的数据来源标记。若处理数据为数据对象,则可从处理数据的扩展结构中提取出处理数据的数据来源标记。比如,在上述举例中,可基于关键字“tagged”从处理数据的扩展结构中提取出“tagged_1=传递数据的数据来源标记”、“tagged_2=运算数据的数据来源标记”,将提取出的成员变量的值,作为处理数据的数据来源标记。
在其中一个实施例中,应用运行于虚拟终端;当虚拟终端中的虚拟机运行于解释执行模式,则在应用运行的过程中,每当执行一条原始机器执行指令后,插入一条用以对数据来源标记进行传递的数据来源标记传递指令;当虚拟终端中的虚拟机运行于编译执行模式,则在通过虚拟机的编译器对应用进行编译的过程中,插入用以对数据来源标记进行传递的数据来源标记传递指令。
具体的,当定制安卓系统的虚拟机以解释模式执行应用代码时,它会逐条解释执行指令。在这个过程中,数据流确定系统需要确保所有指令相关的数据都带有先前打上的数据来源标记。这意味着数据流确定系统需要在运行时拦截每条机器执行指令的执行,检查数据来源标记,并在数据从一个操作传递到另一个操作时,通过插入的数据来源标记传递指令将数据来源标记一并传递。
除了解释执行之外,虚拟机还支持编译执行模式,这使得应用的部分或全部代码在安装时就被编译成本地机器码。为了在编译执行模式下实现数据流捕获,编译器需要在生成的机器码中插入额外的数据来源标记传递指令,以实现对数据来源标记的传递。这些数据来源标记需要设计得足够高效,以避免对应用性能产生显著影响。同时,它们必须能够在编译时考虑到数据流的所有可能路径,保证热更新行为的检测不会因为编译过程而遗漏任何关键数据流。
在其中一个实施例中,上述方法还包括:在传递数据的标记存储位置处提取出标记集合的情况下,根据标记集合中的标记确定传递数据的数据来源;根据标记集合中的标记,确定传递数据的数据来源;根据传递数据的数据来源、传递数据以及标记集合中的标记,生成热更新记录;将热更新记录发送至检测平台。
具体的,传递数据的标记存储位置处可能会存储有多个数据来源标记,也即,可能会从传递数据的标记存储位置处提取出一个标记集合,比如,在传递数据C是通过对A数据以及B数据叠加得的情况下,则传递数据C的标记存储位置处可记录有A数据的数据来源标记和B数据的数据来源标记,此时,从传递数据的标记存储位置处提取出的是一个标记集合。检测系统可基于标记集合来确定传递数据的数据来源,并根据传递数据的数据来源、传递数据以及标记集合中的标记,生成热更新记录。此时的传递数据的数据来源,则为检测系统追溯到的该传递数据的最原始来源。进一步地,检测系统可将热更新记录发送至检测平台,从而检测平台可对热更新记录进行展示,进而用户可通过展示的热更新记录来确定应用是否进行了热更新。
容易理解地,当传递数据的数据来源标记并非为标记集合,仅为1个标记时,也会根据传递数据和传递数据的数据来源标记生成热更新记录。
在其中一个实施例中,当传递数据为传递至类加载函数或者库加载函数的数据,且传递数据的数据来源标记指示传递数据来源于本地或者网络时,则可确定应用进行了热更新,从而检测系统可将传递数据以及传递数据的数据来源标记,共同记载于一个日志中,该日志即为热更新记录。
在其中一个实施例中,检测系统还可在热更新记录中记载传递数据的具体来源地址、传递数据传递至类加载函数或者库加载函数的时间戳、传递数据的具体数据内容、以及传递数据的其他元数据。
在其中一个实施例中,可在每当生成一个热更新记录后,立即将热更新记录发送至检测平台,也可在检测任务执行结束后,对生成的各热更新记录进行汇总,得到汇总记录,将汇总记录发送至检测平台。比如,参考图11,检测平台中可显示有“结束任务”控件1101,当用户点击该“结束任务”控件,则检测系统可将汇总记录发送至检测平台。此时,检测平台可显示有预览控件和下载控件,通过预览控件,可对汇总记录进行预览,通过下载控件,可对汇总记录进行下载。图11示出了一个实施例中检测平台的检测页面示意图。
参考图11,在检测平台的检测页面中,除了显示“结束任务”控件,还可以显示检测任务的单据信息。单据信息为单据的信息,单据为针对检测任务所提交的单据。单据信息可包括应用安装进度、单据编号、应用名称、应用包名、单据名称、单据ID、任务开始时间等信息。通过显示单据信息,可便于用户全面了解检测任务的相关信息。容易理解地,在点击“结束任务”控件之前,用户可使用应用,从而虚拟终端对应显示应用的应用界面。
在其中一个实施例中,参考图12,当用户点击“结束任务”控件后,任务中心操作项中的内容会从“正在检测”变更为“检测完成,重置任务”。图12示出了又一个实施例中任务中心的示意图。
上述实施例中,通过生成热更新记录,可将热更新记录发送至检测平台,从而便于用户通过检测平台获取得到热更新记录,并根据热更新记录来对应用的热更新行为进行分析,理解应用的热更新行为,并输出对应用的热更新行为的安全措施。
在其中一个实施例中,根据标记集合中的标记确定传递数据的数据来源,包括:若标记集合包括用以表征网络获取源的第一标记,则确定传递数据的数据来源为网络;若标记集合仅包括用以表征本地获取源的第二标记,则确定传递数据的数据来源为本地。
具体的,若标记集合包括第一标记时,则可确定传递数据的数据来源为网络。比如,若第一标记为“网络”,第二标记为“本地”,且标记集合包括“网络”和“本地”时,则可认为是先从网络获取得到原始数据,并将原始数据存储于本地,之后,从本地读取原始数据,并对原始数据进行处理,以得到传递数据的。若标记集合仅包括第二标记时,则确定传递数据的数据来源为本地。容易理解的,若标记集合仅包括第一标记时,则确定传递数据的数据来源为网络。
在其中一个实施例中,根据数据来源、传递数据及标记集合中的标记,生成热更新记录,包括:在确定传递数据的数据来源为网络的情况下,获取应用在运行过程中发送的与传递数据相关的网络请求;确定网络请求携带的网络链接,并将网络链接与预设的应用更新官方链接相匹配,得到匹配结果;在根据匹配结果确定应用并非是通过官方更新通道进行热更新的情况下,根据匹配结果、数据来源、传递数据及标记集合中的标记,生成热更新记录。
具体地,在确定传递数据的数据来源为网络的情况下,检测系统可获取应用在运行过程中发送的全部网络请求,并根据传递数据,从获取的全部网络请求中筛选出与传递数据相关的目标网络请求。其中,与传递数据相关的目标网络请求,为用以获取传递数据的网络请求,或者,为用以获取生成传递数据的原始数据的网络请求。
进一步地,检测系统可从目标网络请求中提取出网络链接,并将网络链接与预设的应用更新官方链接进行匹配。当网络链接与预设的应用更新官方链接相匹配时,比如,当网络链接与预设的应用更新官方链接一致时,则可确定是通过官方通道来对应用进行更新的。若网络链接与预设的应用更新官方链接不匹配时,比如,网络链接与预设的应用更新官方链接不一致时,则可确定是通过非官方通道来对应用进行更新的,此时,检测系统根据匹配结果、数据来源、传递数据以及标记集合中的标记,生成热更新记录。以便用户基于该热更新记录确定应用通过非官方渠道进行了热更新。
本实施例中,通过确定网络链接与预设的应用更新官方链接之间的匹配结果,可基于该匹配结果生成热更新记录。通过生成热更新记录,可便于用户通过热更新记录确定应用是否通过非官方通道进行了热更新。
在其中一个实施例中,用户可以一次性对多个应用进行检测,比如,可创建多个虚拟终端,其中,每个虚拟终端中可运行一个应用,用户可对各应用进行操作,在用户操作虚拟终端中的应用的过程中,可对各应用的热更新行为进行检测。
在其中一个实施例中,参考图13,图13示出了一个实施例中热更新检测方法的整体流程示意图。S1301,当用户点击“开始测试”控件后,可开始对应用进行检测。S1302,当应用从网络获取数据时,则将该数据的数据来源标记设置为第一标记,当应用从本地获取数据时,则将该数据的数据来源标记设置为第二标记。S1303,可将数据来源标记存储于虚拟机中。S1304,若虚拟机运行于解释执行模式时,S1306则应用运行时数据标记随着数据一起传播。S1305,若虚拟机运行于编译执行模式时,S1306则应用运行时数据标记随着数据一起传播。S1307,在当前执行函数为预设函数类型时,则确定输入至当前执行函数的数据是否具有数据来源标记。S1308,若具有数据来源标记,则根据输入至当前执行函数的数据,以及该数据的数据来源标记,生成热更新记录。若输入至当前执行函数的数据不具备数据来源标记,则跳转至步骤1309,继续执行该应用。步骤1310,当点击结束任务控件时,则结束对应用的检测。
在其中一个实施例中,参考图14,图14示出了一个实施例中热更新检测方法的交互示意图。用户可提交安装包至定制安卓系统,定制安卓系统可基于安装包对应用进行安装。当安装好应用后,用户可打开应用进行测试,定制安卓系统可确定应用的行为。当应用从网络获取数据,则定制安卓系统将该数据标记为网络源,当应用从本地获取数据,则定制安卓系统将该数据标记为本地源。定制安卓系统在应用运行的过程中,对数据进行传递。当调用类加载函数或者库加载函数时,则定制安卓系统可判断传递至类加载函数或者库加载函数的传递数据,并确定传递数据是否具有数据来源标记。若具有数据来源标记,则生成一条热更新记录,并继续检测。当检测结束后,上传检测结果,并卸载应用,重置环境。容易理解的,应用所对应的执行步骤,可为基于原始安装包中的原始代码所执行的步骤。定制安卓系统所执行的步骤,可为本申请额外增加的执行步骤。
在其中一个实施例中,参考图15,图15示出了一个具体实施例中热更新检测方法的流程示意图:
S1502,在应用运行过程中,当基于历史执行函数获取得到原始数据的情况下,定制安卓系统确定用以获取原始数据的数据获取函数。
S1504,定制安卓系统获取预设的第一函数集合,将数据获取函数与第一函数集合中的系统调用函数进行匹配;在数据获取函数与第一函数集合中的系统调用函数匹配成功的情况下,确定原始数据是从网络获取得到的,并将第一标记作为原始数据的数据来源标记。
S1506,定制安卓系统获取预设的第二函数集合,将数据获取函数与第二函数集合中的系统调用函数进行匹配;在数据获取函数与第二函数集合中的系统调用函数匹配成功的情况下,确定原始数据是从本地获取得到的,并将第二标记作为原始数据的数据来源标记。
S1508,定制安卓系统确定当前执行到的针对应用的机器执行指令,并确定基于机器执行指令所执行的当前执行函数。
S1510,在当前执行函数为预设待检测函数类型的情况下,定制安卓系统确定传递至当前执行函数的传递数据,并根据传递数据的数据类型,确定传递数据的标记存储位置;在传递数据是基于原始数据生成得到的情况下,标记存储位置,用于记录在基于应用的原始数据执行一系列执行函数过程中,向每个执行函数所传递数据的数据来源标记。
S1512,在从标记存储位置处获取得到标记集合的情况下,定制安卓系统根据标记集合中的标记确定传递数据的数据来源;根据标记集合中的标记,确定传递数据的数据来源。
S1514,在确定传递数据的数据来源为网络的情况下,定制安卓系统获取应用在运行过程中发送的与传递数据相关的网络请求;确定网络请求携带的网络链接,并将网络链接与预设的应用更新官方链接相匹配,得到匹配结果。
S1516,在根据匹配结果确定应用并非是通过官方更新通道进行热更新的情况下,定制安卓系统根据匹配结果、数据来源、传递数据以及标记集合中的标记,生成热更新记录。
S1518,继续运行应用,在基于下一个执行函数对传递数据进行处理,得到处理数据,且处理数据为数据对象的情况下,定制安卓系统在处理数据的扩展结构中新增成员变量;将新增的成员变量的值,置为传递数据的数据来源标记;在处理数据存储于虚拟机栈的情况下,确定处理数据在虚拟机栈中的存储位置;根据处理数据在虚拟机栈中的存储位置,确定处理数据的标记存储位置;将传递数据的数据来源标记,存储于处理数据的标记存储位置处。
S1520,当检测结束时,定制安卓系统将热更新行为记录发送至检测平台。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种应用场景,该应用场景应用上述的热更新检测方法。具体地,该热更新检测方法在该应用场景的应用如下:
可对应用商城中的应用进行热更新检测,热更新检测方法的整体框架可参考图16。更具体地,1.开始测试:
在热更新检测的数据流确定系统中,检测的启动是整个过程的开端。首先初始化,配置必要的管理环境,并启动针对应用的热更新实时检测。检测的初始化包括加载检测组件、设置数据收集参数、定义更新事件触发点以及配置日志记录方法。此外,系统会确保所有必要的权限都已被获取,以便无障碍检测应用行为。
2.原始数据被打上标记:
数据的标记是确定数据流动的关键步骤。在该步骤中,数据流确定系统会对所有可能涉及热更新的数据,例如,从文件系统获取的数据、通过网络接口获取的数据或从本地数据库中获取的数据进行标记。这些标记是特殊的元数据或标识符,用于在后续的数据流中识别原始数据的来源。标记过程需要确保不会影响应用的正常功能。
3.数据来源标记被存在虚拟机栈上或对象扩展结构里:
一旦数据被标记,这些标记信息需要被存储在一个可追溯的位置。在安卓应用中,这通常是通过在虚拟机栈上或在对象的扩展结构(如字段或属性)中存储数据来源标记来实现的。这样做可以确保在数据流动过程中,数据来源标记能够与数据一起传递,并在任何时候都能够被检索和分析。
4.安卓虚拟机在解释执行时,逐句传播指令相关的数据来源标记:
当安卓虚拟机以解释模式执行应用代码时,它会逐条解释执行指令。在这个过程中,数据流确定系统需要确保所有指令相关的数据都带有先前打上的数据来源标记。这意味着数据流确定系统需要在运行时拦截每条指令的执行,检查数据的数据来源标记,并在数据从一个操作传递到另一个操作时,将数据来源标记一并传递,这样有助于后续分析热更新行为。
5.安卓虚拟机在编译执行时,编译器在编译出的指令中加入数据来源标记传递指令:
除了解释执行之外,虚拟机还支持编译执行,这使得应用的部分或全部代码在安装时就被编译成本地机器码。编译器需要在生成的机器码中插入额外的指令,以实现对数据标记的传播。这些指令需要设计得足够高效,以避免对应用性能产生显著影响。同时,它们必须能够在编译时考虑到数据流的所有可能路径,保证热更新行为的检测不会因为编译过程而遗漏任何关键数据流。
6.虚拟机运行时,数据来源标记随数据传播:
在应用的运行环境中,虚拟机是负责执行应用字节码的关键组件。为了确定应用中数据的流向,尤其是在应用热更新时,这里实现了一种机制,能够在虚拟机中嵌入数据来源标记。这些标记作为元数据与应用数据一同传播,不影响应用的正常功能。为了实现数据来源标记的传递,可对虚拟机中的数据操作指令进行增强,以确保在数据进行运算或传递时,数据来源标记能够正确地跟随数据流动。
7.系统执行到Sink函数时,读取标记,判断Sink来源:
Sink函数包括类加载函数或动态库加载函数。当程序执行到Sink函数时,检测系统会介入,读取传递到该函数的数据来源标记,通过分析数据来源标记,检测系统能够判断数据的来源。这一步骤对于检测热更新行为尤为关键,因为它可以揭示更新数据是否来自网络等不可控的渠道。如果数据来源标记指示数据来自网络或本地,并且与应用的官方更新通道不符,检测系统就会对此行为进行记录,得到热更新记录。
8.如果数据来源标记为网络或者本地,记录结果,继续执行:
一旦检测系统确定数据来源于网络或本地文件系统,并且这些数据与热更新行为相关,检测系统会记录下相关信息。这些信息包括数据的具体来源地址、时间戳、更新的内容以及其他相关元数据。记录结果的同时,检测系统不会阻止数据的进一步处理,而是允许程序继续执行。这种非侵入式的方法保证了应用的正常功能不会因为检测过程的介入而受到影响。
9.如果无数据来源标记,继续执行:
在某些情况下,传递到Sink函数的数据可能没有数据来源标记。这可能是因为数据生成于检测系统管理范围之外,或者是系统内部生成的数据。在这种情况下,检测系统会选择不进行任何记录,而是让程序继续执行。
10.结束测试:
用户检测完功能之后会点击“结束检测”按钮,这时会结束检测。检测平台会汇总所有记录的热更新行为,并生成一份报告。这份报告将为应用开发者或安全分析师提供有价值的洞察,帮助他们理解应用的热更新行为,并采取相应的安全措施。
本申请所产生的有益效果:
1.增强应用安全性:通过检测和分析热更新行为,可以确保更新过程中不会引入恶意代码。这有助于保护用户免受安全威胁,如隐私泄露、数据窃取或其他潜在的恶意行为。
2.确保透明度:该技术可以确定代码的确切来源,确保热更新的过程是透明的,使得开发者和用户都能了解正在执行的代码的来源和目的。
3.合规性审查:通过检测热更新行为,可以帮助确保应用的更新遵守了相关的规定,减少了因违规更新规定导致的风险。
4.提高用户信任:用户可能对不透明的热更新持怀疑态度。提供一种能够准确检测和报告热更新行为的方法可以提高用户对应用的信任。
5.优化更新流程:通过检测热更新的行为,可以发现更新流程中的潜在问题,并据此进行优化,从而提升应用性能和用户体验。
6.防止滥用:热更新机制有时会被用来绕过应用商店的审核机制。该检测方法有助于防止这种滥用行为,确保所有的更新都经过恰当的审核。
7.维护市场秩序:通过确保热更新机制的适当使用,可以维护应用市场的健康发展,避免因为不当更新而导致的不公平竞争。
8.数据流透明化:能够让开发者和监管机构对应用内的数据流动有更清晰的了解,从而更好地保护用户数据和隐私。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的热更新检测方法的热更新检测装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,下面所提供的一个或多个热更新检测装置实施例中的具体限定可以参见上文中对于热更新检测方法的限定,在此不再赘述。
在一个实施例中,如图17所示,提供了一种热更新检测装置1700,包括:传递数据确定模块1702、标记存储位置确定模块1704和记录生成模块1706,其中:
传递数据确定模块1702,用于在应用运行过程中,确定当前执行到的针对应用的机器执行指令;确定基于机器执行指令所执行的当前执行函数,并在当前执行函数为预设待检测函数类型的情况下,确定传递至当前执行函数的传递数据。
标记存储位置确定模块1704,用于确定传递数据的标记存储位置;其中,在基于应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向任一执行函数所传递数据的数据来源标记。
记录生成模块1706,用于在从标记存储位置处获取得到数据来源标记的情况下,根据传递数据和从标记存储位置处获取得到数据来源标记,生成热更新记录;热更新记录,用于确定应用是否进行了热更新。
在其中一个实施例中,所述应用运行于虚拟终端,且所述应用是在通过安装包上传页面将所述应用的安装包上传至检测平台后,基于预设的安装指令触发所述虚拟终端通过所述安装包安装得到的。
在其中一个实施例中,在所述传递数据是基于所述原始数据生成得到的情况下,所述传递数据的标记存储位置处记录有所述原始数据的数据来源标记;所述热更新检测装置1700还包括标记生成模块,用于在从网络获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征网络获取源的第一标记;在从本地获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征本地获取源的第二标记。
在其中一个实施例中,所述标记生成模块还用于获取预设的第一函数集合;所述第一函数集合,包括所述应用支持的用以接收网络数据的系统调用函数;确定用以获取所述原始数据的数据获取函数;将所述数据获取函数与所述第一函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第一函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从网络获取得到的,并将第一标记作为所述原始数据的数据来源标记。
在其中一个实施例中,所述标记生成模块还用于获取预设的第二函数集合;所述第二函数集合,包括所述应用支持的用于进行文件读写的系统调用函数;将所述数据获取函数与所述第二函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第二函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从本地获取得到的,并将第二标记作为所述原始数据的数据来源标记。
在其中一个实施例中,所述标记存储位置确定模块1704还用于在所述传递数据为数据对象类型的情况下,确定所述传递数据的标记存储位置为所述传递数据的扩展结构;在所述传递数据为非数据对象类型的情况下,确定所述传递数据的标记存储位置为存储有所述传递数据的虚拟机栈。
在其中一个实施例中,所述热更新检测装置1700还包括标记传递模块,用于在基于所述当前执行函数将所述传递数据传递至下一个执行函数的过程中,将所述传递数据的数据来源标记作为所述传递数据的元数据传递至所述下一个执行函数。
在其中一个实施例中,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据存储于虚拟机栈的情况下,确定所述处理数据在所述虚拟机栈中的存储位置;根据所述处理数据在所述虚拟机栈中的存储位置,确定所述处理数据的标记存储位置;将所述传递数据的数据来源标记,存储于所述处理数据的标记存储位置处。
在其中一个实施例中,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据为数据对象的情况下,在所述处理数据的扩展结构中新增成员变量;将从所述传递数据的标记存储位置处提取出的数据来源标记,作为新增的成员变量的值。
在其中一个实施例中,所述应用运行于虚拟终端;当所述虚拟终端中的虚拟机运行于解释执行模式,则在所述应用运行的过程中,每当执行一条原始机器执行指令后,插入一条用以对数据来源标记进行传递的数据来源标记传递指令;所述原始机器执行指令,是指基于所述应用的安装包生成的机器执行指令;当所述虚拟终端中的虚拟机运行于编译执行模式,则在通过所述虚拟机的编译器对所述应用进行编译的过程中,插入用以对数据来源标记进行传递的数据来源标记传递指令。
在其中一个实施例中,所述记录生成模块1706还用于在所述传递数据的标记存储位置处提取出标记集合的情况下,根据所述标记集合中的标记确定所述传递数据的数据来源;根据所述标记集合中的标记,确定所述传递数据的数据来源;根据所述传递数据的数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录;将所述热更新记录发送至检测平台。
在其中一个实施例中,所述记录生成模块1706还用于若所述标记集合包括用以表征网络获取源的第一标记,则确定所述传递数据的数据来源为网络;若所述标记集合仅包括用以表征本地获取源的第二标记,则确定所述传递数据的数据来源为本地。
在其中一个实施例中,所述记录生成模块1706还用于在确定所述传递数据的数据来源为网络的情况下,获取所述应用在运行过程中发送的与所述传递数据相关的网络请求;确定所述网络请求携带的网络链接,并将所述网络链接与预设的应用更新官方链接相匹配,得到匹配结果;在根据所述匹配结果确定所述应用并非是通过官方更新通道进行热更新的情况下,根据所述匹配结果、所述数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录。
上述热更新检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图18所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储热更新检测数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种热更新检测方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图19所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种热更新检测方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图18至图19中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (25)

1.一种热更新检测方法,其特征在于,所述方法包括:
在应用运行过程中,确定当前执行到的针对所述应用的机器执行指令;
确定基于所述机器执行指令所执行的当前执行函数,并在所述当前执行函数为预设待检测函数类型的情况下,确定传递至所述当前执行函数的传递数据;
确定所述传递数据的标记存储位置;其中,在基于所述应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向所述任一执行函数所传递数据的数据来源标记;在所述原始数据来源于除原始安装包之外的本地或网络情况下,所述原始数据具有数据来源标记,在向所述任一执行函数所传递数据的数据是基于具有数据来源标记的原始数据生成得到的情况下,向所述任一执行函数所传递的数据的标记存储位置处存储有数据来源标记;在从所述传递数据的标记存储位置处获取得到数据来源标记的情况下,根据所述传递数据和从所述传递数据的标记存储位置处获取得到的数据来源标记,生成热更新记录;其中,所述热更新记录,用于确定所述应用是否进行了热更新;
所述确定所述传递数据的标记存储位置,包括:
在所述传递数据为数据对象类型的情况下,确定所述传递数据的标记存储位置为所述传递数据的扩展结构;
在所述传递数据为非数据对象类型的情况下,确定所述传递数据的标记存储位置为存储有所述传递数据的虚拟机栈;
所述方法还包括:
在基于所述当前执行函数将所述传递数据传递至下一个执行函数的过程中,根据从所述传递数据的标记存储位置处提取出的数据来源标记,生成所述传递数据的元数据;
将所述传递数据和所述传递数据的元数据共同传递至所述下一个执行函数。
2.根据权利要求1所述的方法,其特征在于,所述应用运行于虚拟终端,且所述应用是在通过安装包上传页面将所述应用的安装包上传至检测平台后,基于预设的安装指令触发所述虚拟终端通过所述安装包安装得到的。
3.根据权利要求1所述的方法,其特征在于,在所述传递数据是基于所述原始数据生成得到的情况下,所述传递数据的标记存储位置处记录有所述原始数据的数据来源标记;所述原始数据的数据来源标记的生成步骤包括:
在从网络获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征网络获取源的第一标记;
在从本地获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征本地获取源的第二标记。
4.根据权利要求3所述的方法,其特征在于,所述在从网络获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征网络获取源的第一标记,包括:
获取预设的第一函数集合;所述第一函数集合,包括所述应用支持的用以接收网络数据的系统调用函数;
确定用以获取所述原始数据的数据获取函数;
将所述数据获取函数与所述第一函数集合中的系统调用函数进行匹配;
在所述数据获取函数与所述第一函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从网络获取得到的,并将第一标记作为所述原始数据的数据来源标记。
5.根据权利要求4所述的方法,其特征在于,所述在从本地获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征本地获取源的第二标记,包括:
获取预设的第二函数集合;所述第二函数集合,包括所述应用支持的用于进行文件读写的系统调用函数;
将所述数据获取函数与所述第二函数集合中的系统调用函数进行匹配;
在所述数据获取函数与所述第二函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从本地获取得到的,并将第二标记作为所述原始数据的数据来源标记。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据存储于虚拟机栈的情况下,确定所述处理数据在所述虚拟机栈中的存储位置;
根据所述处理数据在所述虚拟机栈中的存储位置,确定所述处理数据的标记存储位置;
根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记存储于所述处理数据的标记存储位置处。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据为数据对象的情况下,在所述处理数据的扩展结构中新增成员变量;
根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记,作为新增的成员变量的值。
8.根据权利要求1所述的方法,其特征在于,所述应用运行于虚拟终端;当所述虚拟终端中的虚拟机运行于解释执行模式,则在所述应用运行的过程中,每当执行一条原始机器执行指令后,插入一条用以对数据来源标记进行传递的数据来源标记传递指令;所述原始机器执行指令,是指基于所述应用的安装包生成的机器执行指令;
当所述虚拟终端中的虚拟机运行于编译执行模式,则在通过所述虚拟机的编译器对所述应用进行编译的过程中,插入用以对数据来源标记进行传递的数据来源标记传递指令。
9.根据权利要求1所述的方法,其特征在于,所述在从所述传递数据的标记存储位置处获取得到数据来源标记的情况下,根据所述传递数据和从所述传递数据的标记存储位置处获取得到的数据来源标记,生成热更新记录,包括:
在所述传递数据的标记存储位置处提取出标记集合的情况下,根据所述标记集合中的标记确定所述传递数据的数据来源;
根据所述标记集合中的标记,确定所述传递数据的数据来源;
根据所述传递数据的数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录;
所述方法还包括:
将所述热更新记录发送至检测平台。
10.根据权利要求9所述的方法,其特征在于,所述根据所述标记集合中的标记,确定所述传递数据的数据来源,包括:
若所述标记集合包括用以表征网络获取源的第一标记,则确定所述传递数据的数据来源为网络;
若所述标记集合仅包括用以表征本地获取源的第二标记,则确定所述传递数据的数据来源为本地。
11.根据权利要求10所述的方法,其特征在于,所述根据所述传递数据的数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录包括:
在确定所述传递数据的数据来源为网络的情况下,获取所述应用在运行过程中发送的与所述传递数据相关的网络请求;
确定所述网络请求携带的网络链接,并将所述网络链接与预设的应用更新官方链接相匹配,得到匹配结果;
在根据所述匹配结果确定所述应用并非是通过官方更新通道进行热更新的情况下,根据所述匹配结果、所述数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录。
12.一种热更新检测装置,其特征在于,所述装置包括:
传递数据确定模块,用于在应用运行过程中,确定当前执行到的针对所述应用的机器执行指令;确定基于所述机器执行指令所执行的当前执行函数,并在所述当前执行函数为预设待检测函数类型的情况下,确定传递至所述当前执行函数的传递数据;
标记存储位置确定模块,用于确定所述传递数据的标记存储位置;其中,在基于所述应用的原始数据执行一系列执行函数过程中,基于任一执行函数生成的数据的标记存储位置,用于记录向所述任一执行函数所传递数据的数据来源标记;在所述原始数据来源于除原始安装包之外的本地或网络情况下,所述原始数据具有数据来源标记,在向所述任一执行函数所传递数据的数据是基于具有数据来源标记的原始数据生成得到的情况下,向所述任一执行函数所传递的数据的标记存储位置处存储有数据来源标记;其中,所述确定所述传递数据的标记存储位置,包括:在所述传递数据为数据对象类型的情况下,确定所述传递数据的标记存储位置为所述传递数据的扩展结构;在所述传递数据为非数据对象类型的情况下,确定所述传递数据的标记存储位置为存储有所述传递数据的虚拟机栈;
记录生成模块,用于在从所述传递数据的标记存储位置处获取得到数据来源标记的情况下,根据所述传递数据和从所述传递数据的标记存储位置处获取得到的数据来源标记,生成热更新记录;其中,所述热更新记录,用于确定所述应用是否进行了热更新;
标记传递模块,用于在基于所述当前执行函数将所述传递数据传递至下一个执行函数的过程中,根据从所述传递数据的标记存储位置处提取出的数据来源标记,生成所述传递数据的元数据;将所述传递数据和所述传递数据的元数据共同传递至所述下一个执行函数。
13.根据权利要求12所述的装置,其特征在于,所述应用运行于虚拟终端,且所述应用是在通过安装包上传页面将所述应用的安装包上传至检测平台后,基于预设的安装指令触发所述虚拟终端通过所述安装包安装得到的。
14.根据权利要求12所述的装置,其特征在于,在所述传递数据是基于所述原始数据生成得到的情况下,所述传递数据的标记存储位置处记录有所述原始数据的数据来源标记;所述原始数据的数据来源标记的生成步骤包括:在从网络获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征网络获取源的第一标记;在从本地获取得到原始数据的情况下,确定所述原始数据的数据来源标记为用以表征本地获取源的第二标记。
15.根据权利要求14所述的装置,其特征在于,所述热更新检测装置还包括标记生成模块,用于获取预设的第一函数集合;所述第一函数集合,包括所述应用支持的用以接收网络数据的系统调用函数;确定用以获取所述原始数据的数据获取函数;将所述数据获取函数与所述第一函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第一函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从网络获取得到的,并将第一标记作为所述原始数据的数据来源标记。
16.根据权利要求15所述的装置,其特征在于,所述标记生成模块还用于获取预设的第二函数集合;所述第二函数集合,包括所述应用支持的用于进行文件读写的系统调用函数;将所述数据获取函数与所述第二函数集合中的系统调用函数进行匹配;在所述数据获取函数与所述第二函数集合中的系统调用函数匹配成功的情况下,确定所述原始数据是从本地获取得到的,并将第二标记作为所述原始数据的数据来源标记。
17.根据权利要求12所述的装置,其特征在于,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据存储于虚拟机栈的情况下,确定所述处理数据在所述虚拟机栈中的存储位置;根据所述处理数据在所述虚拟机栈中的存储位置,确定所述处理数据的标记存储位置;根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记存储于所述处理数据的标记存储位置处。
18.根据权利要求12所述的装置,其特征在于,所述标记传递模块还用于在基于所述下一个执行函数对所述传递数据进行处理,得到处理数据,且所述处理数据为数据对象的情况下,在所述处理数据的扩展结构中新增成员变量;根据所述传递数据的元数据,确定从所述传递数据的标记存储位置处提取出的数据来源标记,并将从所述传递数据的标记存储位置处提取出的数据来源标记,作为新增的成员变量的值。
19.根据权利要求12所述的装置,其特征在于,所述应用运行于虚拟终端;当所述虚拟终端中的虚拟机运行于解释执行模式,则在所述应用运行的过程中,每当执行一条原始机器执行指令后,插入一条用以对数据来源标记进行传递的数据来源标记传递指令;所述原始机器执行指令,是指基于所述应用的安装包生成的机器执行指令;当所述虚拟终端中的虚拟机运行于编译执行模式,则在通过所述虚拟机的编译器对所述应用进行编译的过程中,插入用以对数据来源标记进行传递的数据来源标记传递指令。
20.根据权利要求12所述的装置,其特征在于,所述记录生成模块还用于在所述传递数据的标记存储位置处提取出标记集合的情况下,根据所述标记集合中的标记确定所述传递数据的数据来源;根据所述标记集合中的标记,确定所述传递数据的数据来源;根据所述传递数据的数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录;将所述热更新记录发送至检测平台。
21.根据权利要求20所述的装置,其特征在于,所述根据所述标记集合中的标记,确定所述传递数据的数据来源,包括:若所述标记集合包括用以表征网络获取源的第一标记,则确定所述传递数据的数据来源为网络;若所述标记集合仅包括用以表征本地获取源的第二标记,则确定所述传递数据的数据来源为本地。
22.根据权利要求21所述的装置,其特征在于,所述记录生成模块还用于在确定所述传递数据的数据来源为网络的情况下,获取所述应用在运行过程中发送的与所述传递数据相关的网络请求;确定所述网络请求携带的网络链接,并将所述网络链接与预设的应用更新官方链接相匹配,得到匹配结果;在根据所述匹配结果确定所述应用并非是通过官方更新通道进行热更新的情况下,根据所述匹配结果、所述数据来源、所述传递数据以及所述标记集合中的标记,生成热更新记录。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
25.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN202410235159.5A 2024-03-01 2024-03-01 热更新检测方法、装置、计算机设备和存储介质 Active CN117806688B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410235159.5A CN117806688B (zh) 2024-03-01 2024-03-01 热更新检测方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410235159.5A CN117806688B (zh) 2024-03-01 2024-03-01 热更新检测方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN117806688A CN117806688A (zh) 2024-04-02
CN117806688B true CN117806688B (zh) 2024-05-28

Family

ID=90420232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410235159.5A Active CN117806688B (zh) 2024-03-01 2024-03-01 热更新检测方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117806688B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262818A (zh) * 2019-05-29 2019-09-20 北京达佳互联信息技术有限公司 Java代码热更新方法、装置、电子设备及存储介质
CN111563257A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据检测方法及装置、计算机可读介质及终端设备
CN111563015A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据监控方法及装置、计算机可读介质及终端设备
CN111897559A (zh) * 2020-08-06 2020-11-06 厦门美图之家科技有限公司 热更新代码检测方法、装置、电子设备及存储介质
CN114115964A (zh) * 2022-01-24 2022-03-01 在线途游(北京)科技有限公司 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质
CN115794162A (zh) * 2022-11-29 2023-03-14 代码哲学(北京)科技有限公司 一种用于在热更新时对差分更新进行优化的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032634B (zh) * 2018-07-16 2021-11-26 北京百度网讯科技有限公司 用于更新应用的方法、装置、设备和计算机可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110262818A (zh) * 2019-05-29 2019-09-20 北京达佳互联信息技术有限公司 Java代码热更新方法、装置、电子设备及存储介质
CN111563257A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据检测方法及装置、计算机可读介质及终端设备
CN111563015A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据监控方法及装置、计算机可读介质及终端设备
CN111897559A (zh) * 2020-08-06 2020-11-06 厦门美图之家科技有限公司 热更新代码检测方法、装置、电子设备及存储介质
CN114115964A (zh) * 2022-01-24 2022-03-01 在线途游(北京)科技有限公司 一种用于Unity的热更新方法、装置、计算设备及计算机可读存储介质
CN115794162A (zh) * 2022-11-29 2023-03-14 代码哲学(北京)科技有限公司 一种用于在热更新时对差分更新进行优化的方法和装置

Also Published As

Publication number Publication date
CN117806688A (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
US10324828B2 (en) Generating annotated screenshots based on automated tests
Ye et al. Droidfuzzer: Fuzzing the android apps with intent-filter tag
US8392886B2 (en) System, program product, and methods to enable visual recording and editing of test automation scenarios for web application
US8504803B2 (en) System and method for creating and executing portable software
US10387627B2 (en) Systems and methods for analyzing software
US9762598B1 (en) Automatic dynamic vetting of browser extensions and web applications
US9607145B2 (en) Automated vulnerability and error scanner for mobile applications
US9317607B2 (en) Executing a fast crawl over a computer-executable application
Lam et al. Record and replay for android: Are we there yet in industrial cases?
US20170329701A1 (en) Application Pre-Release Report
CN112199296B (zh) 页面测试方法、装置、计算机设备和存储介质
Xu et al. Guider: Gui structure and vision co-guided test script repair for android apps
US20180253286A1 (en) Method and system for providing software containers supporting executable code created from computational algorithms described in printed publications
US20170054790A1 (en) System and Method for Object Compression and State Synchronization
WO2015096661A1 (zh) 基于配置系统的项目创建方法及装置、项目测试方法及装置、配置系统的后台测试方法及装置
CN105765561A (zh) 根据跟踪数据的生产对比开发使用的确定
CN114398673A (zh) 应用程序的合规检测方法、装置、存储介质与电子设备
US20230214240A1 (en) Method And System For Event Based, Privacy Aware Capturing Of Partial Screen Changes For Devices With restricted Resources
KR20190113050A (ko) 모바일 어플리케이션 환경설정을 시험하기 위한 시험 항목 자동 생성 방법 및 시스템
Adamsen et al. Practical initialization race detection for JavaScript web applications
CN107533544B (zh) 元素标识符生成
CN117806688B (zh) 热更新检测方法、装置、计算机设备和存储介质
Sams Selenium Essentials
US9965744B1 (en) Automatic dynamic vetting of browser extensions and web applications
Krell Pocket PC Developer's Guide

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