CN111309410B - 一种程序对象确定方法及装置 - Google Patents

一种程序对象确定方法及装置 Download PDF

Info

Publication number
CN111309410B
CN111309410B CN202010188148.8A CN202010188148A CN111309410B CN 111309410 B CN111309410 B CN 111309410B CN 202010188148 A CN202010188148 A CN 202010188148A CN 111309410 B CN111309410 B CN 111309410B
Authority
CN
China
Prior art keywords
program
program object
storage address
application
objects
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
CN202010188148.8A
Other languages
English (en)
Other versions
CN111309410A (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202010188148.8A priority Critical patent/CN111309410B/zh
Publication of CN111309410A publication Critical patent/CN111309410A/zh
Application granted granted Critical
Publication of CN111309410B publication Critical patent/CN111309410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种程序对象确定方法及装置,属于iOS移动应用开发技术领域。所述方法包括:获取应用程序在运行过程中需要调用的多个程序对象;如果多个程序对象中存在预设系统程序对象,则将预设系统程序对象的第一存储地址更改为数据接收程序对象的第二存储地址,预设系统程序对象用于接收应用程序调用目标程序对象所需的配置参数,目标程序对象为被动态方法交换的程序对象;在应用程序基于第二存储地址调用数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数;基于配置参数确定目标程序对象。采用本申请,可以实现无需应用程序的安装包的源码,对应用程序进行Method Swizzling检测。

Description

一种程序对象确定方法及装置
技术领域
本申请涉及iOS移动应用开发技术领域,特别是涉及一种程序对象确定方法及装置。
背景技术
采用Method Swizzling(动态方法交换)可以将应用程序中的原程序对象替换为新程序对象,使得电子设备在运行应用程序的过程中调用新程序对象,从而实现新程序对象对应的功能。但是,应用程序中调用原程序对象的其他程序对象,在调用新程序对象时,可能出现调用失败导致应用程序运行崩溃的情况。因此,为避免由程序对象替换引起的运行崩溃,提高应用程序的稳定性,有必要对应用程序进行Method Swizzling检测,即,对应用程序中是否存在Method Swizzling进行检测,并在存在Method Swizzling的情况下,确定被动态方法交换的原程序对象和新程序对象。为了便于描述,将原程序对象和新程序对象称为目标程序对象。
相关技术中,电子设备可以通过对应用程序的安装包的源码进行扫描分析,确定应用程序中是否存在Method Swizzling,并在存在Method Swizzling的情况下,确定被动态方法交换的目标程序对象。然而,安装包由多个代码模块组成,由于某一代码模块可能由第三方提供而无法获取到该代码模块的源码,因此,无法获取到安装包的全部源码。在无法获取到安装包的源码的情况下,电子设备无法对应用程序进行Method Swizzling检测。
发明内容
本申请实施例的目的在于提供一种程序对象确定方法及装置,以实现无需应用程序的安装包的源码,即可对应用程序进行Method Swizzling检测。具体技术方案如下:
第一方面,本申请提供了一种程序对象确定方法,所述方法包括:
获取应用程序在运行过程中需要调用的多个程序对象;
如果所述多个程序对象中存在预设系统程序对象,则确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态方法交换的程序对象;
将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
基于所述配置参数,确定所述目标程序对象。
可选的,所述获取应用程序在运行过程中需要调用的多个程序对象,包括:
获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
可选的,所述方法还包括:
在启动所述应用程序时,执行所述获取应用程序在运行过程中需要调用的多个程序对象步骤。
可选的,所述基于所述配置参数,确定所述目标程序对象,包括:
根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
可选的,所述基于所述配置参数,确定所述目标程序对象之后,还包括:
如果所述目标程序对象为预设危险程序对象,则删除所述目标程序对象。
第二方面,本申请还提供了一种程序对象确定装置,所述装置包括:
获取模块,用于获取应用程序在运行过程中需要调用的多个程序对象;
第一确定模块,用于当所述多个程序对象中存在预设系统程序对象时,确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态装置交换的程序对象;
更改模块,用于将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
接收模块,用于在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
第二确定模块,用于基于所述配置参数,确定所述目标程序对象。
可选的,所述获取模块包括:
获取子模块,用于获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
第一确定子模块,用于针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
可选的,所述获取模块具体用于,在启动所述应用程序时,获取应用程序在运行过程中需要调用的多个程序对象。
可选的,所述第二确定模块包括:
第二确定子模块,用于根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
可选的,所述装置还包括:
删除模块,用于当所述目标程序对象为预设危险程序对象时,删除所述目标程序对象。
第三方面,本申请还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一第一方面所述的方法步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一第一方面所述的方法步骤。
第五方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一第一方面所述的方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该方法,可以获取应用程序在运行过程中需要调用的多个程序对象;如果多个程序对象中存在预设系统程序对象,则确定预设系统程序对象的第一存储地址,预设系统程序对象用于接收应用程序调用目标程序对象所需的配置参数,目标程序对象为动态方法交换中被交换的程序对象;将第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使应用程序基于第二存储地址调用数据接收程序对象;在数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数;基于配置参数,确定目标程序对象。
应用程序在运行过程中调用的多个程序对象中包含预设系统程序对象时,则表明应用程序中存在Method Swizzling。由此,通过将预设系统程序对象的第一存储地址更改为数据接收程序对象的第二存储地址,并通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数,即可基于配置参数确定目标程序对象,从而可以实现无需应用程序的安装包的源码,对应用程序进行Method Swizzling检测。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种程序对象确定方法的流程图;
图2为本申请实施例提供的另一种程序对象确定方法的流程图;
图3为本申请实施例提供的一种程序对象确定装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供了一种程序对象确定方法,该方法可以应用于电子设备,电子设备可以是手机、平板电脑和笔记本电脑。
电子设备中可以安装有应用程序,采用本申请实施例提供的程序对象确定方法,可以在应用程序的开发阶段,对应用程序运行过程中是否存在Method Swizzling(动态方法交换)进行检测,并在存在Method Swizzling的情况下,确定被动态方法交换的原程序对象和新程序对象。为了便于描述,将原程序对象和新程序对象称为目标程序对象。其中,程序对象可以是类、方法、函数中的一种。
发明人经研究发现,应用程序中的动态方法交换需要通过调用预设系统程序对象实现,因此,可以通过监测预设系统程序对象的调用情况,对应用程序中是否存在动态方法交换进行检测。进一步的,可以对预设系统程序对象进行动态方法交换,获取应用程序中被交换的目标程序对象的配置参数,从而确定目标程序对象。
基于上述发现,本申请实施例提供了一种程序对象确定方法的具体处理过程,如图1所示,包括:
步骤101、获取应用程序在运行过程中需要调用的多个程序对象。
在实施中,在开发应用程序的过程中,电子设备可以通过多种方式,获取应用程序在运行过程中需要调用的多个程序对象。
在一种可行的实现方式中,电子设备本地可以存储有第一记录文件,第一记录文件中可以记录有应用程序在运行过程中需要调用的多个程序对象。电子设备可以通过获取第一记录文件,确定应用程序在运行过程中需要调用的多个程序对象。在另一种可行的实现方式中,电子设备本地可以存储有第二记录文件,第二记录文件中记录有应用程序在运行过程中需要调用的程序对象的存储地址。电子设备可以根据第二记录文件、存储地址和程序对象的对应关系,确定应用程序在运行过程中需要调用的多个程序对象,具体处理过程后续会进行详细说明。
步骤102、如果多个程序对象中存在预设系统程序对象,则确定预设系统程序对象的第一存储地址。
其中,预设系统程序对象用于接收应用程序调用目标程序对象所需的配置参数,目标程序对象为被动态方法交换的程序对象。预设系统程序对象可以是:method_exchangeImplementations,class_replaceMethod,method_setImplementation中的至少一种。
在实施中,电子设备可以判断多个程序对象中是否存在预设系统程序对象,如果多个程序对象中存在预设系统程序对象,则表明应用程序中存在动态方法交换。然后,电子设备可以根据程序对象与存储地址的对应关系,确定预设系统程序对象对应的存储地址,得到第一存储地址。
如果多个程序对象中不存在预设系统程序对象,则表明应用程序中不存在动态方法交换,电子设备可以不作后续处理。
步骤103、将第一存储地址更改为预先存储的数据接收程序对象的第二存储地址。
其中,电子设备中可以预先设置有数据接收程序对象,为了便于区分,将数据接收程序对象的存储地址称为第二存储地址。
在实施中,电子设备可以将第一存储地址更改为数据接收程序对象的第二存储地址,以使应用程序基于第二存储地址调用数据接收程序对象,从而实现针对预设系统程序对象进行动态方法交换。由此,在进行动态方法交换前,应用程序基于第一存储地址调用预设系统程序对象,在进行动态方法交换后,应用程序基于第二存储地址调用数据接收程序对象。
步骤104、在数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数。
其中,配置参数例如数据类型、参数值。
在实施中,由于应用程序在调用预设系统程序对象时,会向预设系统程序对象发送调用目标程序对象所需的配置参数,因此,在将预设系统程序对象交换为数据接收程序对象后,电子设备可以在应用程序基于第二存储地址调用数据接收程序对象的过程中,通过数据接收程序对象,接收应用程序调用目标程序对象所需的配置参数。
步骤105、基于配置参数,确定目标程序对象。
可选的,电子设备中可以预先设置有配置参数与程序对象的对应关系,电子设备可以在配置参数与程序对象的对应关系中,将与接收到的配置参数对应的程序对象,作为目标程序对象。
例如,预设系统程序对象可以表示为:method_exchangeImplementations,数据接收程序对象可以表示为:void_method_exchangeImplementations(Method m1,Methodm2),其中,m1和m2为数据接收程序对象接收到的配置参数。电子设备可以将与配置参数m1和m2对应的程序对象,作为目标程序对象。
本申请实施例中,电子设备可以获取应用程序在运行过程中需要调用的多个程序对象。如果多个程序对象中存在预设系统程序对象,则确定预设系统程序对象的第一存储地址。将第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使应用程序基于第二存储地址调用数据接收程序对象。在数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数。基于配置参数,确定目标程序对象。
应用程序在运行过程中调用的多个程序对象中包含预设系统程序对象时,则表明应用程序中存在Method Swizzling。由此,通过将预设系统程序对象的第一存储地址更改为数据接收程序对象的第二存储地址,并通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数,即可基于配置参数确定目标程序对象,从而可以实现无需应用程序的安装包的源码,对应用程序进行Method Swizzling检测。
进一步的,采用本申请实施例提供的技术方案,能够定位由于不规范的动态方法交换引起的应用程序崩溃,提高应用程序的运行稳定性。
可选的,第二记录文件可以是动态符号表,本申请实施例提供了一种根据动态符号表、存储地址和程序对象的对应关系,确定应用程序在运行过程中需要调用的多个程序对象的实现方式,如图2所示,包括:
步骤201、获取应用程序的动态符号表。
其中,动态符号表中存储有应用程序在运行过程中需要调用的程序对象的存储地址。
在实施中,电子设备可以按照预设的文件路径获取应用程序的动态符号表。
例如:开发人员可以在应用程序XCODE中设置文件路径_DATA segment/_la_symbol_ptr/,电子设备可以按照该文件路径获取动态符号表。
步骤202、针对每个存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到应用程序在运行过程中需要调用的多个程序对象。
在实施中,电子设备可以获取存储地址与程序对象的对应关系,然后,电子设备可以针对动态符号表中的每个存储地址,确定该存储地址对应的程序对象。由此,电子设备可以确定出多个程序对象,即,确定出应用程序在运行过程中需要调用的多个程序对象。
例如,应用程序的Symbol Table文件中可以存储有存储地址与程序对象的对应关系。电子设备可以获取Symbol Table文件,然后,电子设备可以针对动态符号表中的每个存储地址,在Symbol Table文件中查找与该存储地址对应的程序对象。由此,电子设备可以得到多个程序对象,即,确定出应用程序在运行过程中需要调用的多个程序对象。
本申请实施例中,电子设备可以获取应用程序的动态符号表,然后,根据该动态符号表中记录的程序对象的存储地址、预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,从而得到应用程序在运行过程中需要调用的多个程序对象。采用本申请实施例提供的技术方案,能够方便、准确的确定出应用程序在运行过程中需要调用的多个程序对象。
可选的,为确保电子设备能够检测到应用程序运行过程中所有的动态方法交换、被动态方法交换的全部目标程序对象,电子设备可以在启动应用程序时,执行上述步骤101-步骤105所述的程序对象确定方法步骤。
本申请实施例中,电子设备可以基于二进制重排,实现在启动应用程序时执行上述程序对象确定方法步骤。本申请实施例提供了两种二进制重排的实现方式:
方式一、在预先存储的程序对象的执行顺序中,将数据接收程序对象的执行顺序设置为首位。
例如,电子设备中可以预先存储有应用程序的order(顺序)文件,order文件中可以记录有按照执行顺序依次排列的程序对象的可执行文件的文件标识。电子设备可以在order(顺序)文件中,添加包含数据接收程序对象的可执行文件的文件标识,并将该文件标识排列在各程序对象的可执行文件的文件标识之前,以将数据接收程序对象的执行顺序设置为首位。
方式二、在包含应用程序的多个可执行文件的文件列表中,将包含数据接收程序对象的可执行文件设置为文件列表的首位。
例如,开发人员可以修改Xcode Build Enhance,在Compile Sources中,将包含数据接收程序对象的可执行文件设置在文件列表的最上方。
本申请实施例中,电子设备可以在启动应用程序时,执行上述程序对象确定方法步骤,由此,电子设备可以通过数据接收程序对象,接收到应用程序运行过程中调用目标程序对象的全部配置参数,从而能够检测到应用程序运行过程中的全部动态方法交换、被动态方法交换的全部目标程序对象。进一步的,便于定位由于不规范的动态方法交换引起的应用程序崩溃,提高应用程序的运行稳定性。
可选的,在确定目标程序对象后,电子设备可以对目标程序对象进行审核处理。在一种可行的实现方式中,电子设备可以输出目标程序对象,以便开发人员进行人工审核,后续,电子设备可以根据开发人员的修改指令对目标程序对象进行修改。
在另一种可行的实现方式中,电子设备可以判断目标程序对象是否为预设危险程序对象。如果目标程序对象为预设危险程序对象,则电子设备可以删除目标程序对象;如果目标程序对象不是预设危险程序对象,则电子设备可以不作后续处理。
本申请实施例中,电子设备可以判断目标程序对象是否为预设程序对象,并在目标程序对象为预设危险程序对象的情况下,删除目标程序对象。由此,可以实现对不规范的动态方法交换的检测、可能导致应用程序运行崩溃的目标程序对象的清除,从而提高应用程序的稳定性。
基于相同的技术构思,本申请实施例还提供了一种程序对象确定装置,如图3所示,所述装置包括:
获取模块310,用于获取应用程序在运行过程中需要调用的多个程序对象;
第一确定模块320,用于当所述多个程序对象中存在预设系统程序对象时,确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态装置交换的程序对象;
更改模块330,用于将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
接收模块340,用于在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
第二确定模块350,用于基于所述配置参数,确定所述目标程序对象。
可选的,所述获取模块包括:
获取子模块,用于获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
第一确定子模块,用于针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
可选的,所述获取模块具体用于,在启动所述应用程序时,获取应用程序在运行过程中需要调用的多个程序对象。
可选的,所述第二确定模块包括:
第二确定子模块,用于根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
可选的,所述装置还包括:
删除模块,用于当所述目标程序对象为预设危险程序对象时,删除所述目标程序对象。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该装置,可以获取应用程序在运行过程中需要调用的多个程序对象;如果多个程序对象中存在预设系统程序对象,则确定预设系统程序对象的第一存储地址,预设系统程序对象用于接收应用程序调用目标程序对象所需的配置参数,目标程序对象为动态方法交换中被交换的程序对象;将第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使应用程序基于第二存储地址调用数据接收程序对象;在数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数;基于配置参数,确定目标程序对象。
应用程序在运行过程中调用的多个程序对象中包含预设系统程序对象时,则表明应用程序中存在Method Swizzling。由此,通过将预设系统程序对象的第一存储地址更改为数据接收程序对象的第二存储地址,并通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数,即可基于配置参数确定目标程序对象,从而可以实现无需应用程序的安装包的源码,对应用程序进行Method Swizzling检测。
本申请实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现以下步骤:
获取应用程序在运行过程中需要调用的多个程序对象;
如果所述多个程序对象中存在预设系统程序对象,则确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态方法交换的程序对象;
将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
基于所述配置参数,确定所述目标程序对象。
可选的,所述获取应用程序在运行过程中需要调用的多个程序对象,包括:
获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
可选的,所述方法还包括:
在启动所述应用程序时,执行所述获取应用程序在运行过程中需要调用的多个程序对象步骤。
可选的,所述基于所述配置参数,确定所述目标程序对象,包括:
根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
可选的,所述基于所述配置参数,确定所述目标程序对象之后,还包括:
如果所述目标程序对象为预设危险程序对象,则删除所述目标程序对象。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的该电子设备,可以获取应用程序在运行过程中需要调用的多个程序对象;如果多个程序对象中存在预设系统程序对象,则确定预设系统程序对象的第一存储地址,预设系统程序对象用于接收应用程序调用目标程序对象所需的配置参数,目标程序对象为动态方法交换中被交换的程序对象;将第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使应用程序基于第二存储地址调用数据接收程序对象;在数据接收程序对象的调用过程中,通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数;基于配置参数,确定目标程序对象。
应用程序在运行过程中调用的多个程序对象中包含预设系统程序对象时,则表明应用程序中存在Method Swizzling。由此,通过将预设系统程序对象的第一存储地址更改为数据接收程序对象的第二存储地址,并通过数据接收程序对象接收应用程序调用目标程序对象所需的配置参数,即可基于配置参数确定目标程序对象,从而可以实现无需应用程序的安装包的源码,对应用程序进行Method Swizzling检测。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的程序对象确定方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的程序对象确定方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (8)

1.一种程序对象确定方法,其特征在于,所述方法包括:
获取应用程序在运行过程中需要调用的多个程序对象;
如果所述多个程序对象中存在预设系统程序对象,则确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态方法交换的程序对象;
将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
基于所述配置参数,确定所述目标程序对象,包括:根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
2.根据权利要求1所述的方法,其特征在于,所述获取应用程序在运行过程中需要调用的多个程序对象,包括:
获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在启动所述应用程序时,获取应用程序在运行过程中需要调用的多个程序对象。
4.根据权利要求1所述的方法,其特征在于,所述基于所述配置参数,确定所述目标程序对象之后,还包括:
如果所述目标程序对象为预设危险程序对象,则删除所述目标程序对象。
5.一种程序对象确定装置,其特征在于,所述装置包括:
获取模块,用于获取应用程序在运行过程中需要调用的多个程序对象;
第一确定模块,用于当所述多个程序对象中存在预设系统程序对象时,确定所述预设系统程序对象的第一存储地址,所述预设系统程序对象用于接收所述应用程序调用目标程序对象所需的配置参数,所述目标程序对象为被动态装置交换的程序对象;
更改模块,用于将所述第一存储地址更改为预先存储的数据接收程序对象的第二存储地址,以使所述应用程序基于所述第二存储地址调用所述数据接收程序对象;
接收模块,用于在所述数据接收程序对象的调用过程中,通过所述数据接收程序对象接收所述应用程序调用所述目标程序对象所需的配置参数;
第二确定模块,用于基于所述配置参数,确定所述目标程序对象;所述第二确定模块包括:第二确定子模块,用于根据预先存储的配置参数与程序对象的对应关系、所述数据接收程序对象接收到的配置参数,确定目标程序对象。
6.根据权利要求5所述的装置,其特征在于,所述获取模块包括:
获取子模块,用于获取所述应用程序的动态符号表,所述动态符号表中存储有所述应用程序在运行过程中需要调用的程序对象的存储地址;
第一确定子模块,用于针对每个所述存储地址,根据预先存储的存储地址与程序对象的对应关系,确定该存储地址对应的程序对象,得到所述应用程序在运行过程中需要调用的多个程序对象。
7.根据权利要求5所述的装置,其特征在于,所述获取模块,具体用于在启动所述应用程序时,获取应用程序在运行过程中需要调用的多个程序对象。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
删除模块,用于当所述目标程序对象为预设危险程序对象时,删除所述目标程序对象。
CN202010188148.8A 2020-03-17 2020-03-17 一种程序对象确定方法及装置 Active CN111309410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010188148.8A CN111309410B (zh) 2020-03-17 2020-03-17 一种程序对象确定方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010188148.8A CN111309410B (zh) 2020-03-17 2020-03-17 一种程序对象确定方法及装置

Publications (2)

Publication Number Publication Date
CN111309410A CN111309410A (zh) 2020-06-19
CN111309410B true CN111309410B (zh) 2023-06-30

Family

ID=71157232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010188148.8A Active CN111309410B (zh) 2020-03-17 2020-03-17 一种程序对象确定方法及装置

Country Status (1)

Country Link
CN (1) CN111309410B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956478A (zh) * 2016-04-25 2016-09-21 北京珊瑚灵御科技有限公司 一种基于iOS Method Swizzling技术的数据隔离系统和方法
CN109145590A (zh) * 2018-07-27 2019-01-04 平安科技(深圳)有限公司 一种函数hook检测方法、检测设备及计算机可读介质
CN110532774A (zh) * 2019-07-24 2019-12-03 阿里巴巴集团控股有限公司 钩子检查方法、装置、服务器及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8931101B2 (en) * 2012-11-14 2015-01-06 International Business Machines Corporation Application-level anomaly detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105956478A (zh) * 2016-04-25 2016-09-21 北京珊瑚灵御科技有限公司 一种基于iOS Method Swizzling技术的数据隔离系统和方法
CN109145590A (zh) * 2018-07-27 2019-01-04 平安科技(深圳)有限公司 一种函数hook检测方法、检测设备及计算机可读介质
CN110532774A (zh) * 2019-07-24 2019-12-03 阿里巴巴集团控股有限公司 钩子检查方法、装置、服务器及可读存储介质

Also Published As

Publication number Publication date
CN111309410A (zh) 2020-06-19

Similar Documents

Publication Publication Date Title
CN108322351B (zh) 生成拓扑图的方法和装置、故障确定方法和装置
CN109308263B (zh) 一种小程序测试方法、装置及设备
CN111897724B (zh) 一种适用于云平台的自动化测试方法及装置
CN111147310A (zh) 一种日志跟踪处理的方法、装置、服务器及介质
CN111290949A (zh) 一种进程守护方法及设备
CN110704311B (zh) 一种应用程序测试方法、装置、电子设备及可读存储介质
CN111382077B (zh) 应用程序崩溃原因定位方法、装置、电子设备及存储介质
CN112241362A (zh) 一种测试方法、装置、服务器及存储介质
CN108647102B (zh) 异构系统的服务请求处理方法、装置和电子设备
CN112181830B (zh) 内存泄露的检测方法、装置、终端及介质
CN111309410B (zh) 一种程序对象确定方法及装置
CN111124545A (zh) 应用程序启动方法、装置、电子设备及存储介质
CN110442353B (zh) 一种安装包管理的方法、装置及电子设备
CN111159298A (zh) 业务请求处理方法、装置、电子设备及存储介质
CN113553578B (zh) 一种日志打印响应方法、装置、电子设备和存储介质
CN109165127B (zh) 问题接口的定位方法、装置及电子设备
CN110968471A (zh) 一种程序崩溃问题上报方法、存储介质、电子设备及系统
CN109446462B (zh) 基于页面的数据监控处理方法、装置、设备和存储介质
CN112215593A (zh) 一种支付方法、装置、服务器及存储介质
CN113342660A (zh) 文件测试方法、装置、系统、电子设备及可读存储介质
CN112965697A (zh) 一种代码文件的生成方法、装置及电子设备
CN112162923A (zh) 一种接口测试方法及装置
CN111782533A (zh) 测试方法、装置、电子设备及存储介质
CN111538510B (zh) 一种应用程序安装包的确定方法、装置及电子设备
CN113238884B (zh) 一种固件文件的检测方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant