CN109189496B - 应用程序的动态库信息获取方法及装置 - Google Patents
应用程序的动态库信息获取方法及装置 Download PDFInfo
- Publication number
- CN109189496B CN109189496B CN201810877772.1A CN201810877772A CN109189496B CN 109189496 B CN109189496 B CN 109189496B CN 201810877772 A CN201810877772 A CN 201810877772A CN 109189496 B CN109189496 B CN 109189496B
- Authority
- CN
- China
- Prior art keywords
- dynamic library
- target
- memory address
- application program
- acquiring
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种应用程序的动态库信息获取方法及装置,其中,该方法包括:提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址;访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;遍历所述目标结构体,得到目标动态库信息,以此,能够提升动态库信息获取时的准确性。
Description
技术领域
本申请涉及信息技术领域,具体涉及一种应用程序的动态库信息获取方法及装置。
背景技术
随着智能电子设备(智能手机,平板电脑等)的逐步普及,各种智能电子设备的操作系统也随之得到了很大的发展,但是在一些方面仍然存在诸多不足。目前Android系统中,Android应用程序(Application,APP)在获取自身进程已加载的动态库信息(例如动态库名称、地址等)时,大多都通过访问内存映射文件来获得,但是通过这种方式来获取动态库信息时的准确性较低。
发明内容
本申请实施例提供一种应用程序的动态库信息获取方法及装置,能够提升动态库信息获取时的准确性。
本申请实施例的第一方面提供了一种应用程序的动态库信息获取方法,所述方法包括:
提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历所述目标结构体,得到目标动态库信息。
本申请实施例的第二方面提供了一种应用程序的动态库信息获取装置,所述装置包括提取单元、第一获取单元、第二获取单元、访问单元和遍历单元,其中,
提取单元,用于提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
第一获取单元,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
第二获取单元,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问单元,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历单元,用于遍历所述目标结构体,得到目标动态库信息。
本申请实施例的第三方面提供一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面中的步骤指令。
本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
实施本申请实施例,至少具有如下有益效果:
通过本申请实施例,提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量,根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址,从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体,遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息。因此,通过获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供了一种电子装置的示意图;
图2为本申请实施例提供了一种应用程序的动态库信息获取方法的流程示意图;
图3为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图4为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图5为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图6为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图7为本申请实施例提供的一种终端的结构示意图;
图8为本申请实施例提供了一种应用程序的动态库信息获取装置。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子装置可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为电子装置。
本申请实施例所涉及的结构体为:在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体成员还可以包括其它结构体,也可以包含指向自己结构体类型的指针,通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。
为了更好的理解本申请实施例,下面首先对本申请实施例提供的应用程序的动态库信息获取方法所应用的电子装置。请参阅图1所示,图1为本申请实施例提供了一种电子装置的示意图。如图1所示,电子装置包括参考应用程序101和处理器102,参考应用程序101为用户所使用的应用程序,用户发出应用程序的动态库获取指令,其中,应用程序的动态库信息获取方法包括:用户通过参考应用程序101向处理器102发送目标应用程序的动态库获取指令,在处理器102收到目标应用程序的动态库获取指令后,提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量,DT_DEBUG条目的偏移量为,在生成标识动态库的代码时,在标识动态库文件的.dynamic段中增加一个条目,所述条目的key为DT_DEBUG,其初始值值为0,然后对标识动态库的代码进行编译,得到标识动态库后,得到DT_DEBUG条目的偏移量,本申请中,偏移量例如可以是300,当然还偏移量和初始值还可以具有其它具体的值;然后处理器102将目标应用程序的动态库信息获取指令的内存地址加上偏移量,从而得到标识动态库的内存地址,访问标识动态库的内存地址对应的内存空间,得到DT_DEBUG的值,处理器102根据DT_DEBUG的值得到目标结构体的内存地址,目标结构体为link_map结构体,处理器102访问link_map结构体的内存地址对应的内存空间,得到所述link_map结构体;处理器102遍历link_map结构体,得到目标动态库信息,目标动态库信息为目标应用程序已加载的动态库的信息。通过获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
请参阅图2,图2为本申请实施例提供了一种应用程序的动态库信息获取方法的流程示意图。如图2所示,应用程序的动态库信息获取方法包括步骤201-205,具体如下:
201、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量。
可选的,DT_DEBUG条目的偏移量为,在生成标识动态库的代码时,在标识动态库文件的.dynamic段中增加一个条目,所述条目的key为DT_DEBUG,其值为0,然后对标识动态库的代码进行编译,得到标识动态库后,得到DT_DEBUG条目的偏移量,本申请中,偏移量例如可以是300,当然还偏移量还可以具有其它具体的值,可直接在标识动态库编译文件中提取目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量。
可选的,目标应用程序的动态库信息获取指令的内存地址可通过地址查找的方式来提取内存地址。
可选的,目标应用程序为电子装置中运行的程序,可以由用户进行选取,也可以由电子装置进行选取,此处不作具体限定。
202、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址。
可选的,将目标应用程序的动态库信息获取指令的内存地址与DT_DEBUG条目的偏移量进行叠加,从而得到标识动态库的内存地址。
203、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息。
其中,目标结构体为link_map结构体,link_map结构体为一个双向链表,该链表的每个节点对应目标应用程序的每个已经加载的动态库,在节点中保存了每个已经加载的动态库的动态库信息,动态库信息包括动态库名称和动态库内存地址等。其中,双向链表是链表的一种,它的每个数据结点中包括有两个不同的指针,分别指向直接后继和直接前驱。因此,从双向链表中的任意一个结点中,均可以访问它的前驱结点和后继结点。
可选的,一种可能的根据DT_DEBUG的值得到目标结构体的内存地址的方法包括步骤A1-A3,具体如下:
A1、根据所述DT_DEBUG的值得到参考结构体的内存地址;
可选的,将DT_DEBUG的值与DT_DEBUG的初始值相叠加,得到参考结构体的内存地址。
可选的,参考结构体为r_debug结构体,r_debug结构体包括多个字段,不同的字段中存储有与其相关联的结构体的内存地址。
A2、访问所述参考结构体的内存地址,得到所述参考结构体;
A3、从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
其中,r_map字段中存储有目标结构体的内存地址,读取r_map字段的内存空间,从而得到目标结构体内存地址。
204、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体。
205、遍历所述目标结构体,得到目标动态库信息。
可选的,遍历目标结构体(link_map结构体)的每个节点,从每个节点的内存空间中获取目标应用程序已加载的动态库的动态库信息。通过遍历link_map结构体获取目标应用程序已加载的动态库的信息,未对任何文件的访问,从提升了获取的动态库信息的准确性,同时,在对动态库信息进行获取时,未调用外部函数,从而难以被逆向定位,进而也能提升获取动态库信息的准确性。
一个可能的示例中,目标动态库信息包括目标动态库名称,在所述在遍历所述目标结构体,得到目标动态库信息后,所述方法还包括步骤B1-B3,具体如下:
B1、将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;
其中,预设的危险动态库存储于危险库中,危险动态库名称例如可以是libsubstrate.so、libsubstrate.so,libSubstrateJNI.so,libSubstrateRun.so等动态库名称,此类动态库为钩子框架,当然危险库中的危险动态库还可以进行更新,例如,系统对动态库进行判别,当判别出该动态库为危险动态库时,将该危险动态库的添加到危险库中。
B2、根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;
可选的,判别所述目标动态库是否为危险动态库可能的方法为:目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度大于预设的相似度阈值时,确定出目标动态库为危险动态库,其中,预设相似度阈值为90%-100%。
可选的,另一种判别目标动态库是否为危险动态库可能的方法为:判断动态库是否会对系统资源进行非法调用、篡改内核数据、或者动态库会挂载后会篡改系统关键参数,若判别结果为是,则判别出该动态库为危险动态库,其中,对系统资源进行非法调用为:未经过系统授权而调用系统资源;系统关键参数包括:系统控制参数等。
B3、若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
可选的,不可信的运行环境为目标应用程序可能会受到病毒等的攻击的环境。
一个可能的示例中,另一种确定目标应用程序的运行环境为不可信的运行环境的方法可包括步骤C1-C4,具体如下:
C1、根据所述目标动态库信息,提取所述目标动态库;
可选的,由于目标动态库信息中包括动态库名称和动态库内存地址,则可以通过读取动态库内存地址对应的内存空间,从而提取目标动态库。
C2、在所述目标动态库中提取全部的钩子函数;
其中钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。
C3、根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;
可选的,危险钩子函数例如可以是MSJava钩子Method,MSJava钩子ClassLoad,MS钩子Function等函数。判别钩子函数的方法可以为,通过函数名称的匹配,若钩子函数与危险钩子函数完全匹配,则确定该钩子函数为危险钩子函数。
可选的,预设的危险钩子函数判别方法可以为:将目标钩子函数的特征参数与危险钩子函数库中的参考特征参数进行比对;目标钩子函数的特征包括参考特征参数,则确定目标钩子函数为危险钩子函数。参考特征参数包括:钩子函数名、钩子函数的类别等。危险钩子函数的类别例如可以是MS钩子.xx类别,其中xx为任意参量,即此处仅用Ms钩子.来标识危险函数的类别,危险钩子函数例如可以是MS钩子.trate等,在判别钩子函数是否为危险钩子函数是,仅需要识别出钩子函数是否具有MS钩子.这个头部,若钩子函数具有MS钩子.则判别出该钩子函数为危险钩子函数。
可选的,危险钩子函数库包括更新机制,系统可以将最新发现的危险钩子函数添加到危险钩子函数库中,最新发现的危险钩子函数例如可以是最新发现的病毒中的钩子函数、也可以是原危险钩子函数库中不存在的钩子函数等。
C4、若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
一个可能的示例中,目标动态库信息包括目标动态库图标,另一种确定目标应用程序的运行环境为不可信的运行环境的方法可包括步骤D1-D4,具体如下:
D1、将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为n*n个矩形图形,每个矩形图形具有一个矩阵坐标,其中,所述矩阵为n*n的矩阵,n为大于2的奇数;
可选的,其中以矩阵的形式拆分为n*n个矩形图形时,拆分后得到的矩形图形的面积可以是相同的,也可以是不同的。若拆分后得到的矩形图形的面积不同,则一种可能的拆分方式为:提取目标应用程序图标的关键内容所在的区域,在对该区域进行拆分时,其拆分密度大于非关键内容所在区域的拆分密度,即关键内容所在区域的矩形图形的面积小于非关键内容所在区域的矩形面积。其中,关键内容例如可以是图标中具有标志性意义的区域等,标志性意义的区域可以为能够凸显图标特色的区域,例如百度图标中的特殊形状的区域。
D2、将所述目标动态库图标与预设的危险动态库图标中的矩形图形按照对应的坐标位置进行比对,得到n*n个相似度;
D3、将目标动态库图标中矩阵坐标为(1,n),(n/2+0.5,1),(n/2+0.5,x),(x,n/2+0.5)以及(x,n)的矩形图形与预设的危险动态库图标中对应坐标位置的图形进行比对,得到的相似度作为目标相似度集合,其中,x的取值范围为[1,n];
可选的,目标相似度集合中的相似度还可以包括目标应用程序图标的关键内容所在区域的相似度。
D4、若所述目标相似度集合中每个相似度均大于目标预设相似度,且与矩阵坐标(1,1)和(x,n)的矩形图形相对应的相似度为100%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
其中,目标预设相似度的取值范围可以为0.95-1.00,例如可以是0.96、0.97等。
可选的,在危险动态库图标设计时,其在(1,1)和(x,n)位置的图像为危险动态库的标识。
通过将目标动态库图标拆分为n*n个矩形图形,然后将矩形图形分别与危险动态库图标在拆分后相同坐标位置的矩形图形进行比对,每个矩形图形的相似度,然后从相似度中划分目标相似度,目标相似度集合中每个相似度均大于目标预设相似度,且矩阵坐标(1,1)和(x,n)的矩形图形相对应的相似度为100%时,则确定出所述目标应用程序的运行环境为不可信的运行环境,能够在一定程度上提升判别目标应用程序的运行环境为不可信的运行环境的准确性。
一个可能的示例中,在判别出目标应用程序的运行环境为不可信的运行环境之后,还可包括步骤E1-E3,具体如下:
E1、关闭所述目标应用程序;
E2、对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;
可选的,对目标应用程序的运行环境进行杀毒操作,将危险动态库进行隔离或者将危险动态库删除,从而将目标应用程序的运行环境从不可信的运行环境改变为可信的运行环境。
E3、在所述可信的运行环境中重启所述目标应用程序。
通过本示例,在发现目标应用程序的运行环境为不可信的运行环境后将目标应用程序关闭,在运行环境为可信的运行环境时,重启目标应用程序,能够一定程度上提升目标应用程序运行的安全性,例如在,在应用程序支付输入密码环节,检测到当前应用程序的运行环境不可信,那么就可以提示并中止支付,从而保护用户的财产安全。
一个可能的示例中,应用程序的动态库信息获取方法还可包括步骤F1-F4,具体如下:
F1、接收目标函数调用请求,所述目标函数调用请求携带目标函数名;
可选的,在接收目标函数调用请求之前,将目标动态库存储到缓存中。
可选的,处理器接收参考应用程序发送的目标函数调用请求,目标函数请求中携带目标函数的名称,目标函数例如可以是参考应用程序在运行时,需要调用的函数,也可以是其它函数,例如通过上述的方法判断出的危险钩子函数等。
F2、确定所述目标函数名对应的目标函数所在的动态库;
可选的,可以通过对动态库中的函数列表进行查找,从而得到目标函数所在的动态库。
F3、在缓存中获取目标函数所在的动态库;
F4、从所述目标函数所在的动态库中获取所述目标函数。
通过本示例,过上述方法能够相对于现有方案中,在确定目标函数所在的目标动态库后,需要内存中调用目标动态库,直接从缓存中获取目标动态库的地址,能够减少目标函数获取的时间,进而提升了获取目标函数的效率。
请参阅图3,图3为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图。如图3所示,应用程序的动态库信息获取方法包括步骤301-308,具体如下:
301、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
302、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
303、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值;
304、根据所述DT_DEBUG的值得到参考结构体的内存地址;
305、访问所述参考结构体的内存地址,得到所述参考结构体;
306、从所述参考结构体的r_map字段获取所述目标结构体的内存地址;
307、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
308、遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息。
本示例中,通过获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
请参阅图4,图4为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图。如图4所示,应用程序的动态库信息获取方法可包括步骤401-411,具体如下:
401、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
402、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
403、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址;
404、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
405、遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息;
406、将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;
407、根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;
408、若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境;
409、关闭所述目标应用程序;
410、对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;
411、在所述可信的运行环境中重启所述目标应用程序。
本示例中,在得到目标应用程序已加载的动态库信息后,对已加载的动态库进行分析,若根据已加载动态库信息判别出目标应用程序的运行环境为不可信的运行环境时,则关闭目标应用程序并对该运行环境进行杀毒,得到在杀毒后得到可信的运行环境时重启目标应用程序,以此,能够在一定程度上提升目标应用程序运行时的安全性。
请参阅图5,图5为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图。如图5所示,应用程序的动态库信息获取方法可包括步骤501-512,具体如下:
501、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
502、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
503、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址;
504、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
505、遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息;
506、根据所述目标动态库信息,提取所述目标动态库;
507、在所述目标动态库中提取全部的钩子函数;
508、根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;
509、若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境;
510、关闭所述目标应用程序;
511、对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;
512、在所述可信的运行环境中重启所述目标应用程序。
本示例中,在得到目标应用程序已加载的动态库信息后,对已加载的动态库进行分析,通过已加载动态库中的钩子函数判别出目标应用程序的运行环境为不可信的运行环境时,则关闭目标应用程序并对该运行环境进行杀毒,得到在杀毒后得到可信的运行环境时重启目标应用程序,以此,能够在一定程度上提升目标应用程序运行时的安全性。
本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图。其中,应用程序的动态库信息获取方法可包括步骤601-612,具体如下:
601、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
602、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
603、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址;
604、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
605、遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息;
606、将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为n*n个矩形图形,每个矩形图形具有一个矩阵坐标,其中,所述矩阵为n*n的矩阵,n为大于2的奇数;
607、将所述目标动态库图标与预设的危险动态库图标中的矩形图形按照对应的坐标位置进行比对,得到n*n个相似度;
608、将目标动态库图标中矩阵坐标为(1,n),(n/2+0.5,1),(n/2+0.5,x),(x,n/2+0.5)以及(x,n)的矩形图形与预设的危险动态库图标中对应坐标位置的图形进行比对,得到的相似度作为目标相似度集合,其中,x的取值范围为[1,n];
609、若所述目标相似度集合中每个相似度均大于目标预设相似度,且与矩阵坐标(1,1)和(x,n)的矩形图形相对应的相似度为100%,则确定出所述目标应用程序的运行环境为不可信的运行环境;
610、关闭所述目标应用程序;
611、对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;
612、在所述可信的运行环境中重启所述目标应用程序。
本示例中,在得到目标应用程序已加载的动态库信息后,对已加载的动态库进行分析,通过已加载动态库中的动态库图标判别出目标应用程序的运行环境为不可信的运行环境时,则关闭目标应用程序并对该运行环境进行杀毒,得到在杀毒后得到可信的运行环境时重启目标应用程序,以此,能够在一定程度上提升目标应用程序运行时的安全性。
请参阅图6,图6为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图。如图6所示,应用程序的动态库信息获取方法可包括步骤701-712,具体如下:
701、提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
702、根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
703、从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址;
704、访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
705、遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息;
706、接收目标函数调用请求,所述目标函数调用请求携带目标函数名;
可选的,在接收目标函数调用请求之前,将目标动态库存储到缓存中。
707、确定所述目标函数名对应的目标函数所在的动态库;
708、在缓存中获取目标函数所在的动态库;
709、从所述目标函数所在的动态库中获取所述目标函数。
本示例中,在得到目标应用程序已加载的动态库信息后,将目标动态库存储到缓存中,直接从缓存中获取目标动态库的地址,能够减少目标函数获取的时间,进而提升了获取目标函数的效率。
与上述实施例一致的,请参阅图7,图7为本申请实施例提供的一种终端的结构示意图,如图所示,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,上述程序包括用于执行以下步骤的指令;
提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历所述目标结构体,得到目标动态库信息。
本示例中,通过提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量,根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址,从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体,遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息,因此,获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述一致的,请参阅图8,图8为本申请实施例提供了一种应用程序的动态库信息获取装置,所述装置包括提取单元801、第一获取单元802、第二获取单元803、访问单元804和遍历单元805,其中,
提取单元801,用于提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
第一获取单元802,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
第二获取单元803,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问单元804,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历单元805,用于遍历所述目标结构体,得到目标动态库信息。
本示例中,通过提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量,根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址,从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体,遍历所述目标结构体,得到目标动态库信息,所述目标动态库信息为所述目标应用程序已加载的动态库的信息,因此,获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
可选的,所述在根据所述DT_DEBUG的值得到目标结构体的内存地址方面,所述第二获取单元803具体用于:根据所述DT_DEBUG的值得到参考结构体的内存地址;访问所述参考结构体的内存地址,得到所述参考结构体;从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
可选的,所述应用程序的动态库信息获取装置还具体用于:将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
可选的,所述应用程序的动态库信息获取装置还具体用于:根据所述目标动态库信息,提取所述目标动态库;在所述目标动态库中提取全部的钩子函数;根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
可选的,所述应用程序的动态库信息获取装置还具体用于:将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为n*n个矩形图形,每个矩形图形具有一个矩阵坐标,其中,所述矩阵为n*n的矩阵,n为大于2的奇数;将所述目标动态库图标与预设的危险动态库图标中的矩形图形按照对应的坐标位置进行比对,得到n*n个相似度;将目标动态库图标中矩阵坐标为(1,n),(n/2+0.5,1),(n/2+0.5,x),(x,n/2+0.5)以及(x,n)的矩形图形与预设的危险动态库图标中对应坐标位置的图形进行比对,得到的相似度作为目标相似度集合,其中,x的取值范围为[1,n];若所述目标相似度集合中每个相似度均大于目标预设相似度,且与矩阵坐标(1,1)和(x,n)的矩形图形相对应的相似度为100%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
可选的,所述应用程序的动态库信息获取装置还具体用于:关闭所述目标应用程序;对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;在所述可信的运行环境中重启所述目标应用程序。
可选的,所述应用程序的动态库信息获取装置还具体用于:接收目标函数调用请求,所述目标函数调用请求携带目标函数名;确定所述目标函数名对应的目标函数所在的动态库;在缓存中获取目标函数所在的动态库;从动态库中获取所述目标函数。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种应用程序的动态库信息获取方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种应用程序的动态库信息获取方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种应用程序的动态库信息获取方法,其特征在于,所述方法包括:
提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历所述目标结构体,得到目标动态库信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述DT_DEBUG的值得到目标结构体的内存地址,包括:
根据所述DT_DEBUG的值得到参考结构体的内存地址;
访问所述参考结构体的内存地址,得到所述参考结构体;
从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
3.根据权利要求1所述的方法,其特征在于,所述目标动态库信息包括目标动态库名称,所述遍历所述目标结构体,得到目标动态库信息后,所述方法还包括:
将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;
根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;
若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
4.根据权利要求1所述的方法,其特征在于,所述遍历所述目标结构体,得到目标动态库信息之后,所述方法还包括:
根据所述目标动态库信息,提取所述目标动态库;
在所述目标动态库中提取全部的钩子函数;
根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;
若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
5.根据权利要求1所述的方法,其特征在于,所述目标动态库信息包括目标动态库图标,所述方法还包括:
将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为n*n个矩形图形,每个矩形图形具有一个矩阵坐标,其中,所述矩阵为n*n的矩阵,n为大于2的奇数;
将所述目标动态库图标与预设的危险动态库图标中的矩形图形按照对应的坐标位置进行比对,得到n*n个相似度;
将目标动态库图标中矩阵坐标为(1,n),(n/2+0.5,1),(n/2+0.5,x),(x,n/2+0.5)以及(x,n)的矩形图形与预设的危险动态库图标中对应坐标位置的图形进行比对,得到的相似度作为目标相似度集合,其中,x的取值范围为1<x≤n;
若所述目标相似度集合中每个相似度均大于目标预设相似度,且与矩阵坐标为(1,1)和(x,n)的矩形图形相对应的相似度为100%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
6.根据权利要求3至5任一项所述的方法,其特征在于,所述确定出所述目标应用程序的运行环境为不可信的运行环境之后,所述方法还包括:
关闭所述目标应用程序;
对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;
在所述可信的运行环境中重启所述目标应用程序。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
接收目标函数调用请求,所述目标函数调用请求携带目标函数名;
确定所述目标函数名对应的目标函数所在的动态库;
在缓存中获取目标函数所在的动态库;
从所述目标函数所在的动态库中获取所述目标函数。
8.一种应用程序的动态库信息获取装置,其特征在于,所述装置包括:
提取单元,用于提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
第一获取单元,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
第二获取单元,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问单元,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历单元,用于遍历所述目标结构体,得到目标动态库信息。
9.一种终端,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810877772.1A CN109189496B (zh) | 2018-08-03 | 2018-08-03 | 应用程序的动态库信息获取方法及装置 |
PCT/CN2018/108883 WO2020024424A1 (zh) | 2018-08-03 | 2018-09-29 | 应用程序的动态库信息获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810877772.1A CN109189496B (zh) | 2018-08-03 | 2018-08-03 | 应用程序的动态库信息获取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109189496A CN109189496A (zh) | 2019-01-11 |
CN109189496B true CN109189496B (zh) | 2021-04-23 |
Family
ID=64920064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810877772.1A Active CN109189496B (zh) | 2018-08-03 | 2018-08-03 | 应用程序的动态库信息获取方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109189496B (zh) |
WO (1) | WO2020024424A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947407B (zh) * | 2019-03-07 | 2022-07-26 | 腾讯科技(北京)有限公司 | 一种数据获取方法及装置 |
CN110286958B (zh) * | 2019-06-20 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 节点信息获取方法、装置及存储介质 |
CN111046377B (zh) * | 2019-12-25 | 2023-11-14 | 五八同城信息技术有限公司 | 加载动态链接库的方法、装置、电子设备及存储介质 |
CN112559067A (zh) * | 2020-12-08 | 2021-03-26 | 浪潮商用机器有限公司 | 一种动态库加载方法及相关装置 |
CN113448655B (zh) * | 2021-07-09 | 2022-06-17 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
CN114995899A (zh) * | 2022-05-16 | 2022-09-02 | 上海商汤智能科技有限公司 | 程序运行方法和装置、电子设备、存储介质 |
CN117234963B (zh) * | 2023-11-14 | 2024-01-23 | 海马云(天津)信息技术有限公司 | 动态库处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117644A (zh) * | 2015-08-26 | 2015-12-02 | 福建天晴数码有限公司 | 采集Android外挂程序方法及系统 |
CN106325847A (zh) * | 2015-07-02 | 2017-01-11 | 杭州海康机器人技术有限公司 | 基于iOS平台获取应用程序功能的方法和装置 |
CN106502745A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种函数调用方法和装置 |
CN107592338A (zh) * | 2017-08-08 | 2018-01-16 | 新智云数据服务有限公司 | 一种动态库的更新系统、方法和相关设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2407656B (en) * | 2003-10-28 | 2008-12-17 | Symbian Ltd | Mapping of dynamic link libraries in computing devices |
US9031867B1 (en) * | 2012-10-18 | 2015-05-12 | Joshua Earl Crawford | Computer implemented method and system for ordering food from a restaurant |
-
2018
- 2018-08-03 CN CN201810877772.1A patent/CN109189496B/zh active Active
- 2018-09-29 WO PCT/CN2018/108883 patent/WO2020024424A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325847A (zh) * | 2015-07-02 | 2017-01-11 | 杭州海康机器人技术有限公司 | 基于iOS平台获取应用程序功能的方法和装置 |
CN105117644A (zh) * | 2015-08-26 | 2015-12-02 | 福建天晴数码有限公司 | 采集Android外挂程序方法及系统 |
CN106502745A (zh) * | 2016-10-26 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 一种函数调用方法和装置 |
CN107592338A (zh) * | 2017-08-08 | 2018-01-16 | 新智云数据服务有限公司 | 一种动态库的更新系统、方法和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109189496A (zh) | 2019-01-11 |
WO2020024424A1 (zh) | 2020-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189496B (zh) | 应用程序的动态库信息获取方法及装置 | |
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
RU2723665C1 (ru) | Динамический индикатор репутации для оптимизации операций по обеспечению компьютерной безопасности | |
CN109388946B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN103761478A (zh) | 恶意文件的判断方法及设备 | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
WO2018017498A1 (en) | Inferential exploit attempt detection | |
CN110837644B (zh) | 一种系统渗透测试方法、装置及终端设备 | |
CN111339531B (zh) | 恶意代码的检测方法、装置、存储介质及电子设备 | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN111931185A (zh) | 一种Java反序列化漏洞检测方法及组件 | |
CN113391874A (zh) | 一种虚拟机检测对抗方法、装置、电子设备及存储介质 | |
CN108898012B (zh) | 检测非法程序的方法和装置 | |
CN111062040A (zh) | 一种确定未知漏洞的方法、服务器及计算机可读存储介质 | |
CN109145589B (zh) | 应用程序获取方法及装置 | |
CN103713945B (zh) | 游戏的识别方法和装置 | |
CN111597553A (zh) | 病毒查杀中的进程处理方法、装置、设备及存储介质 | |
CN104426836A (zh) | 一种入侵检测方法及装置 | |
CN112395603B (zh) | 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备 | |
CN113127868A (zh) | 脚本识别方法、装置、设备及存储介质 | |
CN112685744B (zh) | 一种利用栈相关寄存器检测软件漏洞的方法及装置 | |
CN113064601B (zh) | 动态加载文件的确定方法、装置、终端及存储介质 | |
CN113779589A (zh) | 一种安卓智能手机应用误配置检测方法 | |
CN109597662B (zh) | 移动终端中非公开库的调用方法、装置及电子设备 | |
CN112887328A (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 |