CN114356359A - 应用程序安装方法、装置、设备以及存储介质 - Google Patents

应用程序安装方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN114356359A
CN114356359A CN202210006325.5A CN202210006325A CN114356359A CN 114356359 A CN114356359 A CN 114356359A CN 202210006325 A CN202210006325 A CN 202210006325A CN 114356359 A CN114356359 A CN 114356359A
Authority
CN
China
Prior art keywords
target
function
application program
executable file
determining
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
Application number
CN202210006325.5A
Other languages
English (en)
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 CN202210006325.5A priority Critical patent/CN114356359A/zh
Publication of CN114356359A publication Critical patent/CN114356359A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种应用程序安装方法、装置、设备以及存储介质,可适用于计算机技术、区块链技术等领域。该方法包括:确定目标函数对应的钩子函数,目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;获取目标应用程序的目标安装包,确定目标安装包对应的目标可执行文件;通过钩子函数,在确定目标函数被调用以对目标可执行文件进行格式优化时结束目标函数对应的进程,基于目标可执行文件安装目标应用程序。采用本申请实施例,可提升应用程序的安装效率,适用性高。

Description

应用程序安装方法、装置、设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序安装方法、装置、设备以及存储介质。
背景技术
随着计算机技术的不断发展,应用程序在电子设备中扮演的角色也越来越重要,不同的应用程序可给用户带来极大的生活便利。
在目前的应用程序安装过程中,应用程序的安装耗时往往较长,如安装包的相关文件复制、安装信息的校验以及其他文件处理等都会在安装过程中消耗一定的时间。因此,如何进一步提升应用程序的安装效率成为亟需解决的问题。
发明内容
本申请实施例提供一种应用程序安装方法、装置、设备以及存储介质,可提升应用程序的安装效率,适用性高。
一方面,本申请实施例提供一种应用程序安装方法,该方法包括:
确定目标函数对应的钩子函数,上述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
获取目标应用程序的目标安装包,确定上述目标安装包对应的目标可执行文件;
通过上述钩子函数,在确定上述目标函数被调用以对上述目标可执行文件进行格式优化时结束上述目标函数对应的进程,基于上述目标可执行文件安装上述目标应用程序。
另一方面,本申请实施例提供了一种应用程序安装装置,该装置包括:
函数处理模块,用于确定目标函数对应的钩子函数,上述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
文件处理模块,用于获取目标应用程序的目标安装包,确定上述目标安装包对应的目标可执行文件;
程序安装模块,用于通过上述钩子函数,在确定上述目标函数被调用以对上述目标可执行文件进行格式优化时结束上述目标函数对应的进程,基于上述目标可执行文件安装上述目标应用程序。
可选地,在上述确定目标函数对应的钩子函数时,上述函数处理模块,用于:
确定钩子函数,上述钩子函数用于结束对应用程序的安装包所对应的可执行文件进行格式优化的进程;
确定全局偏移表中对应于目标函数的目标函数地址,将上述目标函数地址替换为上述钩子函数的函数地址;
可选地,在确定上述目标函数被调用以对上述目标可执行文件进行格式优化时,上述程序安装模块,用于:
在上述目标函数被调用时确定上述目标函数所执行的进程的任务名;
若上述任务名为预设任务名,则确定上述目标函数用于对上述目标可执行文件进行格式优化。
可选地,上述函数确定模块,还用于:
将上述钩子函数封装为Java本地接口书写程序;
调用上述Java本地接口书写程序。
可选地,在结束上述目标函数对应的进程时,上述程序安装模块,用于:
通过预设函数结束上述目标函数对应的进程。
可选地,在上述基于上述目标可执行文件安装上述目标应用程序之后,上述程序安装模块,还用于:
在上述目标应用程序处于空闲状态的情况下,对上述目标可执行文件进行格式优化;
基于格式优化后得到的文件运行上述目标应用程序。
另一方面,本申请实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
上述存储器用于存储计算机程序;
上述处理器被配置用于在调用上述计算机程序时,执行本申请实施例提供的应用程序安装方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,存储介质存储有计算机程序,该计算机程序被处理器执行以实现本申请实施例提供的应用程序安装方法。
另一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,上述计算机程序或计算机指令被处理器执行时实现本申请实施例提供的应用程序安装方法。
在本申请实施例中,在对目标应用程序的安装包进行解析得到对应的可执行文件之后,通过结束对可执行文件进行格式优化的任务,以直接基于可执行文件安装目标应用程序,避免格式优化过程所带来的额外时间消耗,从而提示目标应用程序的安装效率,适用性高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的应用程序安装方法的流程示意图;
图2是本申请实施例提供的获取Dex文件的流程示意图;
图3是本申请实施例提供的对Dex文件进行优化的流程示意图;
图4是本申请实施例提供的应用程序安装耗时对比示意图;
图5是本申请实施例提供的应用程序安装装置的结构示意图;
图6是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,图1是本申请实施例提供的应用程序安装方法的流程示意图。如图1所示,本申请实施例提供的应用程序安装方法可包括如下步骤:
步骤S11、确定目标函数对应的钩子函数,目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化。
本申请实施例可适用于在虚拟化环境中安装应用程序的场景,如在一个应用程序中安装另一游戏应用程序,在某一应用程序中安装插件等,具体可基于实际应用场景需求确定,在此不做限制。
其中,上述应用程序的安装包可以为安卓应用程序安装包(Android applicationpackage,APK)文件。
其中,APK文件是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是APK文件。一个APK文件内包含被编译的可执行文件(Dex文件)、文件资源(resources)、原生资源文件(assets)、证书(certificates)和清单文件(manifest file)等等。
在现有的应用程序安装流程中,在获取到应用程序的安装包之后,可对安装包进行解析得到对应的可执行文件。其中,安装包的可执行文件为包括应用程序所有代码、如应用程序的全部操作指令以及运行时数据的文件。
具体地,在应用程序的安装包为APK文件的情况下,安装包对应的可执行文件可以为Dex文件。
其中,Dex文件是Android系统中的一种具有能够被虚拟机识别、加载并执行的文件格式的文件,Dex文件中包括应用程序的全部操作指令以及运行时数据,且每一应用程序的每个APK文件中均包括Dex文件。
在对安装包进行解析以得到对应的可执行文件时,可加载安装包得到可执行文件的存储路径,进而基于存储路径得到Dex文件。
例如,参见图2,图2是本申请实施例提供的获取Dex文件的流程示意图。如图2所示,应用程序的安装包为APK文件,安装包对应的可执行文件为Dex文件。在获取应用程序的APK文件之后,可通过类加载器PathClassLoader对APK文件进行加载,基于构造函数初始化一个DexPathList对象。进一步地,基于DexPathList进行loadDexFile操作,得到APK文件对应的DexFile。
在一些可行的实施方式中,目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化。在现有的应用程序安装流程中,在得到安装包对应的可执行文件之后,需要对可执行文件进行格式优化,如将可执行文件由字节码优化为机器码,以基于优化后的相关文件安装应用程序。
参见图3,图3是本申请实施例提供的对Dex文件进行优化的流程示意图。应用程序的安装包为APK文件,安装包对应的可执行文件为Dex文件。通过loadDexFile得到dexFile之后,可在DexFile的构造方法中,调用openDexFile来加载Dex文件。即在openDexNative中调用了ClassLinker的openDexFilesFromOat构造一个oat_file_assistant对象,以基于该对象加载Dex文件。
进一步可将dex文件转换为oat文件以基于oat文件安装应用程序。其中,将dex文件转换为oat文件的过程实质为将dex文件由字节码进一步优化为机器码的过程。oat文件本质上是一个可执行与可链接格式(Executable and Linkable Format,ELF)文件,是dex2oat优化后的产物,是一种可以直接运行的二进制文件。
其中,将dex文件转换为oat文件的过程可以称之为dex2oat任务,目标函数可用于执行dex2oat任务。
其中,由安卓源码oat_file_assistant.cc可知,dex2oat任务是由exec方法执行的,exec方法实现在exec_utils.cc中,并最终是调用exec_utils.cc的execv函数实现的。
即在应用程序的安装包为APK文件,安装包对应的可执行文件为Dex文件的情况下,对应的目标函数为execv函数。
在一些可行的实施方式中,在确定出目标函数之后,可确定钩子(hook)函数,钩子函数用于结束对应用程序的安装包所对应的可执行文件进行格式优化的进程。即通过调用钩子函数,可及时结束或禁止执行目标函数对应的进程,以避免对应用程序的安装包所对应的可执行文件进行格式优化。
进一步地,可确定全局偏移表(Global Offset Tabel,GOT)中对应于目标函数的目标函数地址,并将该目标函数地址替换为钩子函数的函数地址。
其中,在应用程序的安装过程中,当需要调用某一函数时,可通过全局偏移表中相对应的函数地址间接引用该函数。在将目标函数的目标函数地址替换为钩子函数的函数地址之后,在应用程序的安装过程中,若调用目标函数以对应用程序的安装包所对应的可执行文件进行格式优化时,实际调用的是钩子函数,从而基于钩子函数可结束目标函数对应的进程,实现对格式优化进程的禁用。
如将全局偏移表中execv函数的函数地址替换为钩子函数的函数地址,从而在调用execv函数以对APK文件对应的Dex文件进行dex2oat任务时,通过钩子函数结束dex2oat任务。
作为一示例,确定execv函数对应的钩子函数可通过以下代码实现(假设钩子函数为my_execv):
Figure BDA0003456932930000061
其中,本申请实施例中的钩子函数为预定义的函数,具体函数形式及内容可基于实际应用场景需求确定,在此不做限制。
步骤S12、获取目标应用程序的目标安装包,确定目标安装包对应的目标可执行文件。
在一些可行的实施方式中,目标应用程序为虚拟化环境对应的待安装程序,如待安装的游戏应用程序或插件等,在此不做限制。
在获取到目标应用程序的目标安装包之后,需要确定目标安装包对应的目标可执行文件。其中,确定目标安装包对应的目标可执行文件的具体方式可参见图1,在此不再赘述。
其中,上述目标应用程序的目标安装包同样可以为APK文件,在目标应用程序的目标安装包为APK文件的情况下,目标安装包对应的目标可执行文件为Dex文件。并且确定目标安装包对应的Dex文件的具体实现方式可参见图2所示的实现方式,在此不再赘述。
步骤S13、通过钩子函数,在确定目标函数被调用以对目标可执行文件进行格式优化时结束目标函数对应的进程,基于目标可执行文件安装目标应用程序。
在一些可行的实施方式中,可在安装目标应用程序之前,可先调用钩子函数以实时对目标函数进行检测,从而可及时结束对目标可执行文件进行优化的进程。
在对目标可执行文件解析的过程中,通过目标函数可确定是否调用目标函数,并确定目标函数被调用时是否用于对目标可执行文件进行格式优化。
具体地,通过钩子函数在确定目标函数被调用时,可确定目标函数所执行的进程的任务名,并进一步确定该任务名是否为预设任务名。若目标函数所执行的进程的任务名为预设任务名,则可确定目标函数被调用以对目标可执行文件进行格式优化,进而结束目标函数对应的进程以禁用对目标可执行文件进行格式优化的进程。
具体可通过调用预设函数的方式来终止目标函数对应的进程,也可基于其他方式如通过第三方工具、软件等进行,具体可基于实际应用场景需求确定,在此不做限制。
作为一示例,在目标应用程序的目标安装包为APK文件的情况下,目标安装包对应的目标可执行文件为Dex文件,目标函数为execv函数。
基于钩子函数可确定execv函数所执行的进行的任务名是否为/system/bin/dex2oat。若execv函数所执行的进行的任务名为/system/bin/dex2oat,则确定execv函数所执行的进行所对应的任务为dex2oat任务,则可通过预设函数(如exit函数)禁用dex2oat任务对应的进程。
其中,通过钩子函数结束execv函数对应的进程可通过以下代码实现(假设钩子函数为my_execv,预设函数为exit函数):
Figure BDA0003456932930000071
Figure BDA0003456932930000081
在一些可行的实施方式中,钩子函数为原生native函数,在对目标应用程序进行安装之前,如在确定目标应用程序的目标安装包对应的目标可执行文件之间,或者在确定目标函数对应的钩子函数时,为方便java层调用,可将先钩子函数封装为Java本地接口书写程序(Java Native Interface,JNI),从而在调用钩子函数时直接调用该Java本地接口书写程序即可。
作为一示例,将钩子函数封装为JNI方法可通过以下代码实现:
Figure BDA0003456932930000082
Figure BDA0003456932930000091
在一些可行的实施方式中,在结束目标函数对应的用于执行格式优化的进程之后,可直接基于目标安装包对应的目标可执行文件安装目标应用程序。具体可基于安卓运行时(Android runtime,ART)虚拟机直接解释并运行目标可执行文件,以实现目标应用程序的安装。
作为一示例,在目标应用程序的目标安装包为APK文件,目标安装包对应的目标可执行文件为Dex文件的情况下,可直接基于ART虚拟机解释运行Dex文件,已完成目标应用程序的安装。
在一些可行的实施方式中,在基于目标可执行文件安装目标应用程序之后,由于在安装目标应用程序时目标可执行文件并未通过格式优化,因此通过直接解释运行目标可执行文件所安装的应用程序的性能可能不会处于最佳性能。因此可在目标应用程序处于空闲状态的情况下,对目标可执行文件进行格式优化,以基于格式优化后的文件运行目标应用程序,从而在目标应用程序处于空闲状态的情况下,进一步提升已安装的目标应用程序的性能。
作为一示例,在目标应用程序的目标安装包为APK文件,目标安装包对应的目标可执行文件为Dex文件的情况下,在基于ART虚拟机解释运行Dex文件完成目标应用程序的安装之后,可在目标应用程序处理空闲状态时,将Dex文件转换为oat文件,如通过execv函数执行dex2oat任务以将Dex文件转换为oat文件,并运行oat文件以进一步提升目标应用程序的性能。
其中,在得到目标安装包对应的目标可执行文件之后,可先将目标可执行文件存储于指定系统目录中,或者还可将目标可执行文件存储于数据库(Database)、云存储(cloud storage)空间或者区块链(Blockchain)之中,具体可基于实际应用场景需求确定,在此不做限制。从而可在目标应用程序处于空闲状态时从对应存储位置获取目标可执行文件并对其进行格式优化。
其中,数据库简而言之可视为电子化的文件柜——存储电子文件的处所,在本申请中可用于存储样本训练集。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块。在本申请中,区块链中的每一个数据块均可存储上述目标可执行文件。
其中,云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同存储目标可执行文件。
在本申请实施例中,将全局偏移表中对应于目标函数的目标函数地址替换为钩子函数的函数地址,可通过调用钩子函数的方式在确定目标函数被调用以对可执行文件进行格式优化时结束对应的进程,从而提升虚拟化环境或者安卓动态化场景下应用程序或插件的安装速度,节省安装时间,适用性高。
例如,如图4所示,图4是本申请实施例提供的应用程序安装耗时对比示意图。对于虚拟化环境中安装APK的流程,该流程中消耗时间较多的步骤包括复制APK文件到系统目录、校验安装权限、保存签名文件、复制SO文件到系统目录以及dex2oat步骤,其中dex2oat步骤可消耗总安装耗时的40%以上。基于本申请实施例提供的方法,可及时结束dex2oat步骤,从而在对应用程序的运行性能影响较小的情况下极大提升应用程序的安装效率。
参见图5,图5是本申请实施例提供的应用程序安装装置的结构示意图。本申请实施例提供的应用程序安装装置包括:
函数处理模块51,用于确定目标函数对应的钩子函数,上述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
文件处理模块52,用于获取目标应用程序的目标安装包,确定上述目标安装包对应的目标可执行文件;
程序安装模块53,用于通过上述钩子函数,在确定上述目标函数被调用以对上述目标可执行文件进行格式优化时结束上述目标函数对应的进程,基于上述目标可执行文件安装上述目标应用程序。
在一些可行的实施方式中,在上述确定目标函数对应的钩子函数时,上述函数处理模块51,用于:
确定钩子函数,上述钩子函数用于结束对应用程序的安装包所对应的可执行文件进行格式优化的进程;
确定全局偏移表中对应于目标函数的目标函数地址,将上述目标函数地址替换为上述钩子函数的函数地址。
在一些可行的实施方式中,在确定上述目标函数被调用以对上述目标可执行文件进行格式优化时,上述程序安装模块53,用于:
在上述目标函数被调用时确定上述目标函数所执行的进程的任务名;
若上述任务名为预设任务名,则确定上述目标函数用于对上述目标可执行文件进行格式优化。
在一些可行的实施方式中,上述函数确定模块53,还用于:
将上述钩子函数封装为Java本地接口书写程序;
调用上述Java本地接口书写程序。
在一些可行的实施方式中,在结束上述目标函数对应的进程时,上述程序安装模块53,用于:
通过预设函数结束上述目标函数对应的进程。
在一些可行的实施方式中,在上述基于上述目标可执行文件安装上述目标应用程序之后,上述程序安装模块53,还用于:
在上述目标应用程序处于空闲状态的情况下,对上述目标可执行文件进行格式优化;
基于格式优化后得到的文件运行上述目标应用程序。
具体实现中,上述应用程序安装装置可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,通过上述应用程序安装装置将全局偏移表中对应于目标函数的目标函数地址替换为钩子函数的函数地址,可通过调用钩子函数的方式在确定目标函数被调用以对可执行文件进行格式优化时结束对应的进程,从而提升虚拟化环境或者安卓动态化场景下应用程序或插件的安装速度,节省安装时间,适用性高。
参见图6,图6是本申请实施例提供的电子设备的结构示意图。如图6所示,本实施例中的电子设备600可以包括:处理器601,网络接口604和存储器605,此外,上述电子设备600还可以包括:用户接口603,和至少一个通信总线602。其中,通信总线602用于实现这些组件之间的连接通信。其中,用户接口603可以包括显示屏(Display)、键盘(Keyboard),可选用户接口603还可以包括标准的有线接口、无线接口。网络接口604可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器604可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器。存储器605可选的还可以是至少一个位于远离前述处理器601的存储装置。如图6所示,作为一种计算机可读存储介质的存储器605中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图6所示的电子设备600中,网络接口604可提供网络通讯功能;而用户接口603主要用于为用户提供输入的接口;而处理器601可以用于调用存储器605中存储的设备控制应用程序,以实现:
确定目标函数对应的钩子函数,所述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
获取目标应用程序的目标安装包,确定所述目标安装包对应的目标可执行文件;
通过所述钩子函数,在确定所述目标函数被调用以对所述目标可执行文件进行格式优化时结束所述目标函数对应的进程,基于所述目标可执行文件安装所述目标应用程序。
在一些可行的实施方式中,在确定目标函数对应的钩子函数时,上述处理器601用于:
确定钩子函数,所述钩子函数用于结束对应用程序的安装包所对应的可执行文件进行格式优化的进程;
确定全局偏移表中对应于目标函数的目标函数地址,将所述目标函数地址替换为所述钩子函数的函数地址。
在一些可行的实施方式中,在确定所述目标函数被调用以对所述目标可执行文件进行格式优化时,上述处理器601用于:
在所述目标函数被调用时确定所述目标函数所执行的进程的任务名;
若所述任务名为预设任务名,则确定所述目标函数用于对所述目标可执行文件进行格式优化。
在一些可行的实施方式中,上述处理器601还用于:
将所述钩子函数封装为Java本地接口书写程序;
调用所述Java本地接口书写程序。
在一些可行的实施方式中,在结束所述目标函数对应的进程时,上述处理器601用于:
通过预设函数结束所述目标函数对应的进程。
在一些可行的实施方式中,在基于所述目标可执行文件安装所述目标应用程序之后,上述处理器601还用于:
在所述目标应用程序处于空闲状态的情况下,对所述目标可执行文件进行格式优化;
基于格式优化后得到的文件运行所述目标应用程序。
应当理解,在一些可行的实施方式中,上述处理器601可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备600可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,通过上述电子设备将全局偏移表中对应于目标函数的目标函数地址替换为钩子函数的函数地址,可通过调用钩子函数的方式在确定目标函数被调用以对可执行文件进行格式优化时结束对应的进程,从而提升虚拟化环境或者安卓动态化场景下应用程序或插件的安装速度,节省安装时间,适用性高。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图1中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的应用程序安装装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(randomaccess memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,上述计算机程序或计算机指令被处理器执行时本申请实施例提供的应用程序安装方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种应用程序安装方法,其特征在于,所述方法包括:
确定目标函数对应的钩子函数,所述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
获取目标应用程序的目标安装包,确定所述目标安装包对应的目标可执行文件;
通过所述钩子函数,在确定所述目标函数被调用以对所述目标可执行文件进行格式优化时结束所述目标函数对应的进程,基于所述目标可执行文件安装所述目标应用程序。
2.根据权利要求1所述的方法,其特征在于,所述确定目标函数对应的钩子函数,包括:
确定钩子函数,所述钩子函数用于结束对应用程序的安装包所对应的可执行文件进行格式优化的进程;
确定全局偏移表中对应于目标函数的目标函数地址,将所述目标函数地址替换为所述钩子函数的函数地址。
3.根据权利要求1所述的方法,其特征在于,确定所述目标函数被调用以对所述目标可执行文件进行格式优化,包括:
在所述目标函数被调用时确定所述目标函数所执行的进程的任务名;
若所述任务名为预设任务名,则确定所述目标函数用于对所述目标可执行文件进行格式优化。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述钩子函数封装为Java本地接口书写程序;
调用所述Java本地接口书写程序。
5.根据权利要求2所述的方法,其特征在于,结束所述目标函数对应的进程,包括:
通过预设函数结束所述目标函数对应的进程。
6.根据权利要求1所述的方法,其特征在于,所述基于所述目标可执行文件安装所述目标应用程序之后,所述方法还包括:
在所述目标应用程序处于空闲状态的情况下,对所述目标可执行文件进行格式优化;
基于格式优化后得到的文件运行所述目标应用程序。
7.一种应用程序安装装置,其特征在于,所述装置包括:
函数处理模块,用于确定目标函数对应的钩子函数,所述目标函数用于对应用程序的安装包所对应的可执行文件进行格式优化;
文件处理模块,用于获取目标应用程序的目标安装包,确定所述目标安装包对应的目标可执行文件;
程序安装模块,用于通过所述钩子函数,在确定所述目标函数被调用以对所述目标可执行文件进行格式优化时结束所述目标函数对应的进程,基于所述目标可执行文件安装所述目标应用程序。
8.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至6任一项所述的方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或者计算机指令,所述计算机程序或所述计算机指令被处理器执行时实现权利要求1至6任一项所述的方法。
CN202210006325.5A 2022-01-05 2022-01-05 应用程序安装方法、装置、设备以及存储介质 Pending CN114356359A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210006325.5A CN114356359A (zh) 2022-01-05 2022-01-05 应用程序安装方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210006325.5A CN114356359A (zh) 2022-01-05 2022-01-05 应用程序安装方法、装置、设备以及存储介质

Publications (1)

Publication Number Publication Date
CN114356359A true CN114356359A (zh) 2022-04-15

Family

ID=81107378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210006325.5A Pending CN114356359A (zh) 2022-01-05 2022-01-05 应用程序安装方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN114356359A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160188304A1 (en) * 2014-12-24 2016-06-30 International Business Machines Corporation Execution optimization of mobile applications
CN112416366A (zh) * 2019-08-23 2021-02-26 华为技术有限公司 一种Java语言动态挂钩子的方法、装置及设备
CN113064607A (zh) * 2021-06-02 2021-07-02 统信软件技术有限公司 一种操作系统的安装方法、计算设备及存储介质
CN113467784A (zh) * 2021-07-23 2021-10-01 腾讯科技(成都)有限公司 应用程序处理方法及其装置、计算机可读存储介质
WO2021248315A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种脱壳处理方法、装置、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160188304A1 (en) * 2014-12-24 2016-06-30 International Business Machines Corporation Execution optimization of mobile applications
CN112416366A (zh) * 2019-08-23 2021-02-26 华为技术有限公司 一种Java语言动态挂钩子的方法、装置及设备
WO2021248315A1 (zh) * 2020-06-09 2021-12-16 深圳市欢太科技有限公司 一种脱壳处理方法、装置、设备及存储介质
CN113064607A (zh) * 2021-06-02 2021-07-02 统信软件技术有限公司 一种操作系统的安装方法、计算设备及存储介质
CN113467784A (zh) * 2021-07-23 2021-10-01 腾讯科技(成都)有限公司 应用程序处理方法及其装置、计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
韩曙亮: "【Android 逆向】ART 函数抽取加壳 ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 )(二)", Retrieved from the Internet <URL:《https://developer.aliyun.com/article/865778》> *

Similar Documents

Publication Publication Date Title
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
US9891900B2 (en) Generation of specialized methods based on generic methods and type parameterizations
US7231635B2 (en) Remote incremental program verification using API definitions
AU771699B2 (en) Token-based linking
CN111381938B (zh) 一种基于基础指令集执行区块链中智能合约的方法及系统
US6883163B1 (en) Populating resource-constrained devices with content verified using API definitions
US6981245B1 (en) Populating binary compatible resource-constrained devices with content verified using API definitions
US8756616B2 (en) System and method for reducing the static footprint of mixed-language JAVA classes
US20020093856A1 (en) File language verification
CN111625289B (zh) 应用程序快速启动方法、装置和电子设备
US20230297348A1 (en) Method for operating second system application on first system, terminal device and storage medium
CN113031957A (zh) 应用程序的安装方法、客户端、终端、服务器及存储介质
US8745605B2 (en) Execution contexts with polymorphic type implementations
CN114356359A (zh) 应用程序安装方法、装置、设备以及存储介质
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
CA2422634A1 (en) Populating binary compatible resource-constrained devices with content verified using api definitions
US20090019159A1 (en) Transparently externalizing plug-in computation to cluster
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
Zhigalov et al. Reverse engineering of mobile applications
Gan et al. Design and optimization of Camera HAL layer based on Android
CN112860279A (zh) 生成应用安装包的方法、装置、设备和介质
AU2001290842B2 (en) Remote incremental program binary compatibility verification using API definitions
Markantonakis Java card technology and security

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