CN113778687B - 内存分配信息处理方法、装置、电子设备及存储介质 - Google Patents

内存分配信息处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113778687B
CN113778687B CN202111088911.0A CN202111088911A CN113778687B CN 113778687 B CN113778687 B CN 113778687B CN 202111088911 A CN202111088911 A CN 202111088911A CN 113778687 B CN113778687 B CN 113778687B
Authority
CN
China
Prior art keywords
function
memory
dynamic link
link library
memory allocation
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
CN202111088911.0A
Other languages
English (en)
Other versions
CN113778687A (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 Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN202111088911.0A priority Critical patent/CN113778687B/zh
Publication of CN113778687A publication Critical patent/CN113778687A/zh
Application granted granted Critical
Publication of CN113778687B publication Critical patent/CN113778687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及一种内存分配信息处理方法、装置、电子设备及存储介质,该方法包括:在所述第二动态链接库中的目标内存监控函数被所述目标进程调用的情况下,基于与所述目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果;基于所述第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与所述目标内存监控函数对应的目标动态链接库,其中,所述目标动态链接库对应的所述第一全局偏移量表中的所述第一函数地址指向所述目标内存监控函数;将所述内存分配结果作为所述目标动态链接库的内存分配信息进行输出。本公开的方法可以提高内存分配信息获取的准确性。

Description

内存分配信息处理方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种内存分配信息处理方法、装置、电子设备及存储介质。
背景技术
内存一直是性能中需要重点关注的一个点,通过对内存进行分析可以有效发现使用过程中存在的问题,从而优化性能,在对内存进行分析之前需要先获取内存的使用情况,即需要先获取到内存分配信息。然而,相关技术中的获取内存分配信息的方式存在获取准确性低的问题。
发明内容
为克服相关技术中存在的问题,本公开提供一种内存分配信息处理方法、装置、电子设备及存储介质。
根据本公开实施例的第一方面,提供一种内存分配信息处理方法,应用于电子设备,电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应第一动态链接库的第一全局偏移量表用于存储第一动态链接库的外部函数的第一函数地址,其中,不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,电子设备的目标进程在调用内存操作函数的情况下,基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,该方法包括:
在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,执行以下操作,目标内存监控函数为第二动态链接库中的任一内存监控函数:
基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,第二全局偏移量表存储有指向内存分配函数库中、对应目标内存监控函数的目标内存分配函数的第二函数地址;
基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,其中,目标动态链接库对应的第一全局偏移量表中的第一函数地址指向目标内存监控函数;
将内存分配结果作为目标动态链接库的内存分配信息进行输出。
可选地,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配之前,方法还包括:
获取第一动态链接库对应的原始全局偏移量表,原始全局偏移量表中存储的内存分配函数的函数地址指向内存分配函数在内存分配函数库中的地址;
基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表。
可选地,基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表,包括:
在第二动态链接库中创建内存监控函数,不同内存监控函数对应第二动态链接库中的不同第一函数地址;
将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址,得到第一动态链接库对应的第一全局偏移量表;
将原始全局偏移量表中的内存分配函数的函数地址,作为与第一动态链接库对应的内存监控函数的第二全局偏移量表中的内存分配函数的第二函数地址得到内存监控函数对应的第二全局偏移量表。
可选地,将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址之后,方法还包括:
记录内存监控函数与第一动态链接库之间的对应关系。
可选地,在第二动态链接库中创建内存监控函数,包括:
获取目标进程初始化过程中加载的第一动态链接库的第一数量;
在第二动态链接库中创建第一数量个内存监控函数。
可选地,获取第一动态链接库对应的原始全局偏移量表之前,方法还包括:
接收目标电子设备通过命令行输入的用于hook的指令;
基于用于hook的指令,调用hook入口函数,对第一动态链接库中的内存操作函数进行hook;
将内存分配结果作为目标动态链接库的内存分配信息进行输出,包括:
将内存分配结果作为目标动态链接库的内存分配信息,并将目标动态链接库的内存分配信息输出到目标电子设备。
可选地,内存操作函数包括malloc函数、ion内存分配方式中的内存操作函数或者gpu内存分配方式中的内存操作函数中一种或者多种。
根据本公开实施例的第二方面,提供一种内存分配信息处理装置,应用于电子设备,电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应第一动态链接库的第一全局偏移量表用于存储第一动态链接库的外部函数的第一函数地址,其中,不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,电子设备的目标进程在调用内存操作函数的情况下,基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,该装置包括:内存分配模块、目标动态链接库确定模块以及内存分配信息获取模块。其中:
内存分配模块,被配置为在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,目标内存监控函数为第二动态链接库中的任一内存监控函数,第二全局偏移量表存储有指向内存分配函数库中、对应目标内存监控函数的目标内存分配函数的第二函数地址;
目标动态链接库确定模块,被配置为基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,其中,目标动态链接库对应的第一全局偏移量表中的第一函数地址指向目标内存监控函数;
内存分配信息获取模块,被配置为将内存分配结果作为目标动态链接库的内存分配信息进行输出。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的内存分配信息处理方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行存储器中的计算机程序,以实现本公开第一方面所提到的内存分配信息处理方法的步骤。
本公开的实施例提供的技术方案可以在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,先基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,再基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,然后再将内存分配结果作为目标动态链接库的内存分配信息进行输出。由于在第二动态链接库中的目标内存监控函数被目标进程调用的时候,可以通过第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,因此,即使不知道调用栈信息,也可以根据第二动态链接库中的内存监控函数的调用情况,确定内存分配结果对应的目标动态链接库,从而准确获取到目标动态链接库对应的内存分配信息,提高了内存分配信息获取的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种内存分配信息处理方法的示意图。
图2是根据一示例性实施例示出的一种内存分配信息处理方法对应的环境架构示意图。
图3是根据一示例性实施例示出的一种内存分配信息处理方法的流程图。
图4是根据一示例性实施例示出的另一种内存分配信息处理方法的流程图。
图5示出了图4所示步骤S220的一种子步骤的流程图。
图6是根据一示例性实施例示出的另一种内存分配信息处理方法的流程图。
图7是根据一示例性实施例示出的一种内存分配信息处理方法得到的内存分配信息的效果图。
图8是根据一示例性实施例示出的一种内存分配信息处理装置的结构框图。
图9是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在对本公开具体实施方式进行详细说明之前,先对本公开中用到的部分名词进行解释说明:
动态链接库:即so库,是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。由于Android操作系统的底层基于Linux系统,所以SO库可以运行在Android平台上。
全局偏移量表:即GOT(Global offset Table)表,也可称为全局偏移表,是指每一个外部定义的符号在全局偏移表(Global offset Table)中有相应的条目,也即so库中用于存储函数外部方法的表。
Hook:Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
相关技术中,在进程执行自身的功能时,可以通过调用动态链接库中的函数的方式实现。相关技术中,为了获取某个进程的各个被调用的动态链接库的内存分配信息,可以先获取内存分配结果以及对应的调用栈信息(即内存信息携带的空间地址),然后将获取内存分配结果以及对应的调用栈信息与动态链接库的空间地址范围进行比较,查找到对应的动态链接库,从而准确知道各个被调用的动态链接库的内存分配信息。
然而,在实际中,基于各种原因,例如隐私安全保护的原因,存在被保护调用栈,即某些个动态链接库是被保护的,这种情况下,不能够获取到内存分配结果对应的空间地址,从而便不能够准确知道该内存分配结果是属于哪个动态链接库的,这样就会导致统计误差,进而导致内存分配信息存在获取准确性低的问题。
示例性地,请参阅图1,图1示出了相关技术中的一种内存分配信息处理方法的示意图。如图1所示,假设被调用的动态链接库包括A.so、B.so、C.so……libc.so,其中,A.so的空间范围为0-10、B.so的空间范围为10-20、C.so的空间范围为20-30,……,libc.so的空间范围为1000-1020,当C.so通过函数func调用libc.so时,可以得到相关的内存分配结果(具体内存分配大小),且内存分配结果对应有调用栈信息6-16-25-1011,此时,想知道函数func中的调用来自于哪个动态链接库可以通过调用栈信息查找得到。例如,6在0-10,所以是来自于A的,16在10-20,所以是来自于B的,25在20-30,所以是来自于C的,这样便可以得到各个动态链接库的内存分配信息。
然而,在一些情况下,动态链接库B.so以及C.so可能做了保护,是被保护调用栈,此时,得到的相关的内存分配结果,对应的是部分调用栈信息,即6-1011,此时,知道6在0-10,所以是来自于A的,而对于剩下的内存分配结果,并不能够准确知道哪个内存分配结果对应是哪个动态链接库使用的,甚至在一些情况下,会将剩余的内存分配结果归属到动态链接库A.so,从而导致动态链接库A.so的内存过大,从而导致内存分配信息获取准确性低。
为了解决上述问题,本公开提供一种内存分配信息处理方法、装置、电子设备及存储介质,在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,先基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,再基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,然后再将内存分配结果作为目标动态链接库的内存分配信息进行输出。由于在第二动态链接库中的目标内存监控函数被目标进程调用的时候,可以通过第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,因此,即使不知道调用栈信息,也可以根据第二动态链接库中的内存监控函数的调用情况,确定对应的目标动态链接库,从而准确获取到目标动态链接库对应的内存分配信息,提高了内存分配信息获取的准确性。
下面结合具体实施例对本公开进行说明。
在详细介绍本公开实施例的内存分配信息处理方法之前,再对本公开实施例的内存分配信息处理方法对应的环境架构进行说明。如图2所示,环境架构可以包括M(M大于或者等于1)个第一动态链接库(A.so、B.so、C.so……M.so),M个第一动态链接库中的每个第一动态链接库分别对应有一个第一全局偏移量表(GOT表A1、GOT表B1、GOT表C1……GOT表M1),且M个第一动态链接库中的每个第一动态链接库分别包括各自的内存操作函数(图2中示出),第一全局偏移量表存储的是对应的第一动态链库中的内存操作函数调用的内存监控函数的函数地址,架构还可以包括一个第二动态链接库以及一个内存分配函数库,该第二动态链接库中包括N(N大于或者等于M)个内存监控函数,且不同的内存监控函数与不同的第一动态链接库对应关系,同时,每个内存监控函数分别对应有一个第二全局偏移量表(GOT表A2、GOT表B2、GOT表C2……GOT表M2),第二全局偏移量表存储的是对应的内存监控函数调用的内存分配函数库中的内存分配函数的函数地址。
图3是根据一示例性实施例示出的一种内存分配信息处理方法的流程图,该方法基于上述的环境架构实现,也即该方法可以应用于电子设备,电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应第一动态链接库的第一全局偏移量表用于存储第一动态链接库的外部函数的第一函数地址,其中,不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,电子设备的目标进程在调用内存操作函数的情况下,基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,如图3所示,该方法包括以下步骤:
S110,在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果。
其中,内存操作函数是指第一动态链接库中的存在内存占用的函数,由于存在内存占用,因此,需要在内存中申请内存空间。目标内存监控函数是指被内存操作函数调用的内存监控函数,且目标内存监控函数可以为第二动态链接库中的任一内存监控函数。
其中,每个内存监控函数分别对应有一个第二全局偏移量表,第二全局偏移量表存储有指向内存分配函数库中、对应目标内存监控函数的目标内存分配函数的第二函数地址。
其中,目标进程可以是电子设备中任一个进程,例如,相机进程、短信进程、第三方软件的聊天进程等。从而,于本公开中,根据实际需要可以获取电子设备中任一个进程的内存分配信息。
结合前述内容可知,由于不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,因此,电子设备的目标进程在调用内存操作函数的情况下,可以基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,此时,该被调用的内存监控函数即为目标内存监控函数,并且,由于第二全局偏移量表存储有指向内存分配函数库中、对应目标内存监控函数的目标内存分配函数的第二函数地址,那么当目标内存监控函数被目标进程调用,也即目标内存监控函数被某个内存操作函数调用时,该目标内存监控函数可以继续基于对应的第二全局偏移量表中的目标内存分配函数的第二函数地址,调用目标内存分配函数,进行内存分配,得到内存分配结果。其中,该内存分配函数库例如可以是libc.so库。
S120,基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库。
其中,目标动态链接库是指调用目标监控函数的内存操作函数所在的第一动态链接库。目标动态链接库对应的第一全局偏移量表中的第一函数地址指向目标内存监控函数。
结合前述内容可知,在得到内存分配结果之后,由于某些第一动态链接库被保护,从而不能得到调用栈信息,因此,便不能直接根据调用栈信息得到内存分配信息,即具体是哪个第一动态链接库对应的内存分配结果。因此,为了进一步得到内存分配信息,本公开中,可以预先存储第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,从而,当目标监控函数被调用之后,便可以基于该对应关系,确定是哪个第一动态链接库中的内存操作函数调用的,该确定的第一动态链接库即为与目标内存监控函数对应的目标动态链接库。
可选地,该对应关系可以是与第一动态链接库对应的第一全局偏移量表匹配的。示例性地,假设在第一动态链接库A.so对应的第一全局偏移量表中,存储的第一函数地址指向的是第二动态链接库中内存监控函数a的地址,那么在该对应关系中,内存监控函数a与第一动态链接库A.so之间存在对应关系。
S130,将内存分配结果作为目标动态链接库的内存分配信息进行输出。
结合前述内容可知,根据预先存储的内存监控函数与第一动态链接库之间的对应关系,可以确定与目标内存监控函数对应的目标动态链接库,即确定调用目标内存监控函数的是目标动态链接库中的内存操作函数,进而得到该内存分配结果对应的内存申请请求是来自目标动态链接库的。这种情况下,便可以直接将内存分配结果作为目标动态链接库的内存分配信息,并进行输出。
其中,输出可以理解为导出,即dump出内存分配信息。
此外,需要说明的是,本公开实施例中的内存操作函数可以包括malloc函数、ion内存分配方式中的内存操作函数或者gpu内存分配方式中的内存操作函数中一种或者多种。如此,针对不同类型的内存操作函数,均可以得到对应的内存分配信息,从而能够得到更多类型的内存分配信息。对内存分配信息进行更全面的统计。
采用上述方法,由于在第二动态链接库中的目标内存监控函数被目标进程调用的时候,可以通过第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,因此,即使不知道调用栈信息,也可以根据第二动态链接库中的内存监控函数的调用情况,确定内存分配结果对应的目标动态链接库,从而准确获取到目标动态链接库对应的内存分配信息,提高了内存分配信息获取的准确性。
图4是根据一示例性实施例示出的另一种内存分配信息处理方法的流程图,该方法应用于电子设备,电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应第一动态链接库的第一全局偏移量表用于存储第一动态链接库的外部函数的第一函数地址,其中,不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,电子设备的目标进程在调用内存操作函数的情况下,基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,如图4所示,该方法包括:
S210,获取第一动态链接库对应的原始全局偏移量表。
其中,原始全局偏移量表中存储的内存分配函数的函数地址指向内存分配函数在内存分配函数库中的地址。
可以理解的是,电子设备的进程中,第一动态链接库对应的是原始全局偏移量表,从而第一动态链接库中的内存操作函数是直接根据对应的原始全局偏移量表,调用内存分配函数库中的内存分配函数,是不存在第一全局偏移量表的,因此,为了便于第一动态链接库中的内存操作函数能够调用第二动态链接库中的内存分配函数,需要建立第一全局偏移量表。作为一种实施方式,本公开实施例可以基于原始全局偏移量表建立第一全局偏移量表,这种情况下,可以先获取第一动态链接库对应的原始全局偏移量表。
S220,基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表。
在一些实施方式中,请参阅图5,基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表,可以包括以下步骤:
S221,在第二动态链接库中创建内存监控函数。
不同内存监控函数对应第二动态链接库中的不同第一函数地址。
其中,创建内存监控函数的方式可以有多种。
可选地,可以根据目标进程中第一动态链接库的总数量进行创建,也即目标进程中有多少个第一动态链接库,便相应的创建多少个内存监控函数,不管这些第一动态链接库是否被初始化,或者被真正调用。
可选地,还可以先获取目标进程初始化过程中加载的第一动态链接库的第一数量,然后再在第二动态链接库中创建第一数量个内存监控函数。如此,可以避免创建过多的内存监控函数,节约资源。
S222,将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址,得到第一动态链接库对应的第一全局偏移量表。
结合前述内容可知,在原始全局偏移量表中,第一动态链接库的外部函数的函数地址是直接指向内存分配函数库中的内存分配函数的第二函数地址的,如果不对原始全局偏移量表进行修改的话,在调用内存操作函数之后,内存操作函数则直接调用对应的内存分配函数进行内存分配。那么在创建了内存监控函数的情况下,为了使得在调用内存操作函数之后,内存操作函数可以调用该创建的内存监控函数,可以对原始全局偏移量表进行修改。
本公开实施例中,可以将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址,如此,内存操作函数在查询修改后的原始全局偏移量表,即查询第一全局偏移量表之后,便能够基于第一全局偏移量表存储的内存监控函数的第一函数地址,调用对应的内存监控函数。
其中,与第一动态链接库对应的内存监控函数可以有多种确定方式。
可选地,可以基于序号的方式确定对应关系,例如,将按照库序号从小到大的顺序进行排序后第一动态链接库,依次与按照函数序号从小到大的顺序排序后的内存分配函数,进行对应。
可选地,还可以基于随机的方式确定对应关系。即随机将第一动态链接库与内存监控函数进行对应。
在一些实施方式中,在将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址之后,还可以记录得到内存监控函数与第一动态链接库之间的对应关系。以便于后续在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,可以基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库。
S223,将原始全局偏移量表中的内存分配函数的函数地址,作为与第一动态链接库对应的内存监控函数的第二全局偏移量表中的内存分配函数的第二函数地址,得到内存监控函数对应的第二全局偏移量表。
可以理解的是,在创建内存监控函数,且修改得到第一全局偏移量表之后,若目标进程调用了内存操作函数,此时,内存操作函数会调用对应的内存监控函数,然而,由于内存监控函数并不能实现内存分配的功能,因此,在调用内存监控函数之后,为了保证目标进程能够实现正常功能,还需要使得内存监控函数能够继续调用对应的内存分配函数进行内存分配,此时可以通过为每个内存监控函数创建一个第二全局偏移量表的方式实现。
本公开实施例中,可以将原始全局偏移量表中的内存分配函数的函数地址,作为与第一动态链接库对应的内存监控函数的第二全局偏移量表中的内存分配函数的第二函数地址,得到内存监控函数对应的第二全局偏移量表,如此,便能够使得第一动态链接库中的内存操作函数在调用对应的内存监控函数之后,该对应的内存监控函数能够基于对应的第二全局偏移量表,继续调用对应的内存分配函数,从而保证目标进程能够实现正常功能。
S230,在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果。
S240,基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库。
S250,将内存分配结果作为目标动态链接库的内存分配信息进行输出。
其中,步骤S230-S250与步骤S110-S130类似,此处不再赘述。
采用上述方法,通过获取第一动态链接库的原始全局偏移量表便能够得到第一动态链接库的对应的第一全局偏移量表以及内存监控函数对应的第二全局偏移量表,实现过程简单,降低操作难度。
在一些实施方式中,本公开实施例的内存分配信息处理方法,可以通过在现有的目标进程中合入相关的代码实现,其中,该相关的代码用于实现上述步骤S110-S130,或者实现上述步骤S210-S250。采用在现有的目标进程中合入相关的代码的方法,合入后的相关代码成为目标进程原始代码的一部分,因此能够在目标进行启动之后,便执行对应的功能,从而能够获取到目标进程在启动之后的所有时间段的内存分配信息,能够对目标进程进行更加全面的分析。
在另一些实施方式中,本公开实施例的内存分配信息处理方法,还可以通过对现有的目标进程进行hook,从而将相关的代码注入到目标进程的方式实现。其中,该相关的代码用于实现上述步骤S110-S130,或者实现上述步骤S210-S250。采用对现有的目标进程进行hook,从而将相关的代码注入到目标进程的方法,由于不需要对目标进程的代码段进行修改,能够降低对目标进程原始代码的影响,减少代码bug,同时还能够降低实现成本。
如图6所示,在采用对现有的目标进程进行hook,从而将相关的代码注入到目标进程的方法时,该内存分配信息处理方法具体可以包括以下步骤:
S310,接收目标电子设备通过命令行输入的用于hook的指令。
其中,目标电子设备可以是执行本公开内存分配信息处理方法的电子设备,还可以是与执行本公开内存分配信息处理方法的电子设备连接的其他电子设备。可选地,电子设备可以是基于安卓系统开发的手机、平板、电脑、智能手表、智能车载终端等电子设备等。
也就是说,本公开实施例可以以信号或者指令的方式开始执行内存分配信息处理方法。
S320,基于用于hook的指令,调用hook入口函数,对第一动态链接库中的内存操作函数进行hook。
在相关代码中可以提供有hook入口函数,从而在接收到用于hook的指令之后,可以调用hook入口函数,对第一动态链接库中的内存操作函数进行hook,在对第一动态链接库中的内存操作函数进行hook之后,便可以利用相关代码实现上述步骤S110-S130,或者实现上述步骤S210-S250功能。
S330,获取第一动态链接库对应的原始全局偏移量表。
S340,基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表。
S350,在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果。
S360,基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库。
其中,步骤S330-S360与步骤S210-S240类似,此处不再赘述。
S370,将内存分配结果作为目标动态链接库的内存分配信息,并将目标动态链接库的内存分配信息输出到目标电子设备。
本公开实施例中,还可以将目标动态链接库的内存分配信息输出到目标电子设备,以在目标电子设备上进行直观显示。
采用上述方法,能够以信号或者指令的方式开始执行内存分配信息处理方法,从而获得目标动态链接库对应的内存分配信息,提高了内存分配信息处理方法的灵活性与便利性。
请参阅图7所示,示出了采用本公开的内存分配信息处理方法输出的目标动态链接库的内存分配信息的效果图。从图上可以直观看到,不仅得到了各个动态链接库的名称,还得到了每个动态链接库分别对应的内存分配结果,即提高了内存分配信息获取的准确性。此外,还能够得到ion内存分配方式中的动态链接库以及gpu内存分配方式中的动态链接库各自对应的内存分配结果,即能够得到更加细致的内存分配信息。
图8是根据一示例性实施例示出的一种内存分配信息处理装置400的结构框图。参照图8,该装置400应用于电子设备,电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应第一动态链接库的第一全局偏移量表用于存储第一动态链接库的外部函数的第一函数地址,其中,不同第一全局偏移量表内的第一函数地址指向第二动态链接库中的不同内存监控函数,电子设备的目标进程在调用内存操作函数的情况下,基于第一全局偏移量表中的第一函数地址,调用第二动态链接库中的内存监控函数,该装置包括:内存分配模块410、目标动态链接库确定模块420和内存分配信息获取模块430。其中:
该内存分配模块410被配置为在第二动态链接库中的目标内存监控函数被目标进程调用的情况下,基于与目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,目标内存监控函数为第二动态链接库中的任一内存监控函数,第二全局偏移量表存储有指向内存分配函数库中、对应目标内存监控函数的目标内存分配函数的第二函数地址。
该目标动态链接库确定模块420被配置为基于第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与目标内存监控函数对应的目标动态链接库,其中,目标动态链接库对应的第一全局偏移量表中的第一函数地址指向目标内存监控函数。
该内存分配信息获取模块430被配置为将内存分配结果作为目标动态链接库的内存分配信息进行输出。
可选地,该装置还包括:
原始全局偏移量获取模块,被配置为获取第一动态链接库对应的原始全局偏移量表,原始全局偏移量表中存储的内存分配函数的函数地址指向内存分配函数在内存分配函数库中的地址。
第一全局偏移量表以及第二全局偏移量表确定模块,被配置为基于第一动态链接库对应的原始全局偏移量表,确定第一动态链接库对应的第一全局偏移量表,以及确定内存监控函数对应的第二全局偏移量表。
可选地,第一全局偏移量表以及第二全局偏移量表确定模块,包括:
创建子模块,被配置为在第二动态链接库中创建内存监控函数,不同内存监控函数对应第二动态链接库中的不同第一函数地址。
修改子模块,被配置为将原始全局偏移量表中的内存分配函数的函数地址修改为与第一动态链接库对应的内存监控函数的第一函数地址,得到第一动态链接库对应的第一全局偏移量表。
确定子模块,被配置为将原始全局偏移量表中的内存分配函数的函数地址,作为与第一动态链接库对应的内存监控函数的第二全局偏移量表中的内存分配函数的第二函数地址得到内存监控函数对应的第二全局偏移量表。
可选地,该装置还包括:
记录模块,被配置为记录内存监控函数与第一动态链接库之间的对应关系。
可选地,创建子模块,包括:
获取单元,被配置为获取目标进程初始化过程中加载的第一动态链接库的第一数量。
创建单元,被配置为在第二动态链接库中创建第一数量个内存监控函数。
可选地,该装置还包括:
指令接收模块,被配置为接收目标电子设备通过命令行输入的用于hook的指令;
hook模块,被配置为基于用于hook的指令,调用hook入口函数,对第一动态链接库中的内存操作函数进行hook。
相应的,内存分配信息获取还被配置为将内存分配结果作为目标动态链接库的内存分配信息,并将目标动态链接库的内存分配信息输出到目标电子设备。
可选地,内存操作函数包括malloc函数、ion内存分配方式中的内存操作函数或者gpu内存分配方式中的内存操作函数中一种或者多种。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开提供的内存分配信息处理方法的步骤。
图9是根据一示例性实施例示出的一种电子设备500的框图。例如,电子设备500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图9,电子设备500可以包括以下一个或多个组件:处理组件502,存储器504,电力组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的内存分配信息处理方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在电子设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件506为电子设备500的各种组件提供电力。电力组件506可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在电子设备500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到电子设备500的打开/关闭状态,组件的相对定位,例如组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述内存分配信息处理方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述内存分配信息处理方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的内存分配信息处理方法的代码部分。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种内存分配信息处理方法,其特征在于,所述方法应用于电子设备,所述电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应所述第一动态链接库的第一全局偏移量表用于存储所述第一动态链接库的外部函数的第一函数地址,其中,不同所述第一全局偏移量表内的所述第一函数地址指向第二动态链接库中的不同内存监控函数,所述电子设备的目标进程在调用所述内存操作函数的情况下,基于所述第一全局偏移量表中的第一函数地址,调用所述第二动态链接库中的内存监控函数,所述方法包括:
在所述第二动态链接库中的目标内存监控函数被所述目标进程调用的情况下,执行以下操作,所述目标内存监控函数为所述第二动态链接库中的任一内存监控函数:
基于与所述目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,所述第二全局偏移量表存储有指向所述内存分配函数库中、对应所述目标内存监控函数的目标内存分配函数的第二函数地址;
基于所述第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与所述目标内存监控函数对应的目标动态链接库,其中,所述目标动态链接库对应的所述第一全局偏移量表中的所述第一函数地址指向所述目标内存监控函数;
将所述内存分配结果作为所述目标动态链接库的内存分配信息进行输出。
2.根据权利要求1所述的方法,其特征在于,所述基于与所述目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配之前,所述方法还包括:
获取所述第一动态链接库对应的原始全局偏移量表,所述原始全局偏移量表中存储的内存分配函数的函数地址指向所述内存分配函数在所述内存分配函数库中的地址;
基于所述第一动态链接库对应的原始全局偏移量表,确定所述第一动态链接库对应的第一全局偏移量表,以及确定所述内存监控函数对应的第二全局偏移量表。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一动态链接库对应的原始全局偏移量表,确定所述第一动态链接库对应的第一全局偏移量表,以及确定所述内存监控函数对应的第二全局偏移量表,包括:
在所述第二动态链接库中创建所述内存监控函数,不同所述内存监控函数对应所述第二动态链接库中的不同第一函数地址;
将所述原始全局偏移量表中的内存分配函数的函数地址修改为与所述第一动态链接库对应的内存监控函数的第一函数地址,得到所述第一动态链接库对应的第一全局偏移量表;
将所述原始全局偏移量表中的内存分配函数的函数地址,作为与所述第一动态链接库对应的内存监控函数的第二全局偏移量表中的内存分配函数的第二函数地址得到所述内存监控函数对应的第二全局偏移量表。
4.根据权利要求3所述的方法,其特征在于,所述将所述原始全局偏移量表中的内存分配函数的函数地址修改为与所述第一动态链接库对应的内存监控函数的第一函数地址之后,所述方法还包括:
记录所述内存监控函数与所述第一动态链接库之间的对应关系。
5.根据权利要求3所述的方法,其特征在于,所述在所述第二动态链接库中创建所述内存监控函数,包括:
获取所述目标进程初始化过程中加载的所述第一动态链接库的第一数量;
在所述第二动态链接库中创建所述第一数量个内存监控函数。
6.根据权利要求2所述的方法,其特征在于,所述获取所述第一动态链接库对应的原始全局偏移量表之前,所述方法还包括:
接收目标电子设备通过命令行输入的用于hook的指令;
基于所述用于hook的指令,调用hook入口函数,对所述第一动态链接库中的内存操作函数进行hook;
所述将所述内存分配结果作为所述目标动态链接库的内存分配信息进行输出,包括:
将所述内存分配结果作为所述目标动态链接库的内存分配信息,并将所述目标动态链接库的内存分配信息输出到所述目标电子设备。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述内存操作函数包括malloc函数、ion内存分配方式中的内存操作函数或者gpu内存分配方式中的内存操作函数中一种或者多种。
8.一种内存分配信息处理装置,其特征在于,应用于电子设备,所述电子设备的软件操作系统中的第一动态链接库包括内存操作函数,对应所述第一动态链接库的第一全局偏移量表用于存储所述第一动态链接库的外部函数的第一函数地址,其中,不同所述第一全局偏移量表内的所述第一函数地址指向第二动态链接库中的不同内存监控函数,所述电子设备的目标进程在调用所述内存操作函数的情况下,基于所述第一全局偏移量表中的第一函数地址,调用所述第二动态链接库中的内存监控函数,包括:
内存分配模块,被配置为在所述第二动态链接库中的目标内存监控函数被所述目标进程调用的情况下,基于与所述目标内存监控函数对应的第二全局偏移量表,调用内存分配函数库中的目标内存分配函数进行内存分配,得到内存分配结果,所述目标内存监控函数为所述第二动态链接库中的任一内存监控函数,所述第二全局偏移量表存储有指向所述内存分配函数库中、对应所述目标内存监控函数的目标内存分配函数的第二函数地址;
目标动态链接库确定模块,被配置为基于所述第二动态链接库中的内存监控函数与第一动态链接库之间的对应关系,确定与所述目标内存监控函数对应的目标动态链接库,其中,所述目标动态链接库对应的所述第一全局偏移量表中的所述第一函数地址指向所述目标内存监控函数;
内存分配信息获取模块,被配置为将所述内存分配结果作为所述目标动态链接库的内存分配信息进行输出。
9.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
CN202111088911.0A 2021-09-16 2021-09-16 内存分配信息处理方法、装置、电子设备及存储介质 Active CN113778687B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111088911.0A CN113778687B (zh) 2021-09-16 2021-09-16 内存分配信息处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111088911.0A CN113778687B (zh) 2021-09-16 2021-09-16 内存分配信息处理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113778687A CN113778687A (zh) 2021-12-10
CN113778687B true CN113778687B (zh) 2024-02-23

Family

ID=78851523

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111088911.0A Active CN113778687B (zh) 2021-09-16 2021-09-16 内存分配信息处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113778687B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794260B (zh) * 2023-02-06 2023-05-05 湖南高至科技有限公司 一种简单的dsp软件库动态加载方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463583B1 (en) * 1999-04-08 2002-10-08 Novadigm, Inc. Dynamic injection of execution logic into main dynamic link library function of the original kernel of a windowed operating system
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN111290952A (zh) * 2020-01-22 2020-06-16 北京深之度科技有限公司 一种动态链接库函数的跟踪方法及装置
CN112948024A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 动态链接库的加载方法、装置、存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463583B1 (en) * 1999-04-08 2002-10-08 Novadigm, Inc. Dynamic injection of execution logic into main dynamic link library function of the original kernel of a windowed operating system
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN111290952A (zh) * 2020-01-22 2020-06-16 北京深之度科技有限公司 一种动态链接库函数的跟踪方法及装置
CN112948024A (zh) * 2021-04-15 2021-06-11 网易(杭州)网络有限公司 动态链接库的加载方法、装置、存储介质及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于全局偏移表进行通用动态链接库函数跟踪的方法;张木梁;王国庆;张磊;;电子技术与软件工程;20200201(03);全文 *

Also Published As

Publication number Publication date
CN113778687A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
CN107370772B (zh) 账号登录方法、装置及计算机可读存储介质
CN106033397B (zh) 内存缓冲区调整方法、装置及终端
CN109117144B (zh) 页面处理方法、装置、终端及存储介质
CN106708967B (zh) 页面显示方法及装置
CN113778687B (zh) 内存分配信息处理方法、装置、电子设备及存储介质
CN104572230B (zh) 脚本文件的加载方法、脚本文件生成方法及装置
CN110221813B (zh) 应用的数据连接建立方法、装置、存储介质和电子设备
CN113467854B (zh) 应用程序启动方法、装置、电子设备及存储介质
CN112631695B (zh) 一种数据校验方法、装置、电子设备及存储介质
CN107463414B (zh) 应用安装方法及装置
CN112651012A (zh) 一种信息处理方法及装置
CN112860625A (zh) 数据获取方法、数据存储方法、装置、设备及存储介质
CN107257384B (zh) 服务状态监控方法及装置
CN111240757B (zh) 快应用控制方法、装置及存储介质
CN111241097B (zh) 处理对象的方法、处理对象的装置及存储介质
CN114238801B (zh) 一种页面加载方法、装置、电子设备及存储介质
CN110362451B (zh) 一种监控方法、装置及介质
CN114138289B (zh) 组件发布方法、装置、电子设备及存储介质
CN112182027B (zh) 信息查询方法、装置、电子设备及存储介质
CN111596949B (zh) 一种开发应用程序的方法及装置
CN117093267B (zh) 分支指令跳转地址的存储方法、装置、设备及存储介质
CN113946346B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN114531493B (zh) 一种请求处理方法、装置、电子设备及存储介质
CN108205452B (zh) 软件的执行控制方法及装置
CN117369881A (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