WO2020024424A1 - 应用程序的动态库信息获取方法及装置 - Google Patents
应用程序的动态库信息获取方法及装置 Download PDFInfo
- Publication number
- WO2020024424A1 WO2020024424A1 PCT/CN2018/108883 CN2018108883W WO2020024424A1 WO 2020024424 A1 WO2020024424 A1 WO 2020024424A1 CN 2018108883 W CN2018108883 W CN 2018108883W WO 2020024424 A1 WO2020024424 A1 WO 2020024424A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- dynamic library
- target
- memory address
- dangerous
- application
- Prior art date
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
Definitions
- the present application relates to the field of information technology, and in particular, to a method and device for acquiring dynamic library information of an application program.
- the embodiments of the present application provide a method and a device for acquiring dynamic library information of an application program, which can improve accuracy when acquiring dynamic library information.
- a first aspect of the embodiments of the present application provides a method for acquiring dynamic library information of an application, where the method includes:
- a second aspect of the embodiments of the present application provides a dynamic library information acquisition apparatus for an application program, where the apparatus includes an extraction unit, a first acquisition unit, a second acquisition unit, an access unit, and a traversal unit, where:
- An extraction unit configured to extract a memory address of the dynamic library information acquisition instruction for the target application, and an offset of the DT_DEBUG entry in the target application that identifies the dynamic library;
- a first obtaining unit configured to obtain a memory address of the identification dynamic library according to the memory address of the dynamic library information acquisition instruction and the offset of the DT_DEBUG entry;
- a second obtaining unit is configured to obtain a value of the DT_DEBUG from a memory space corresponding to a memory address of the identification dynamic library, and obtain a memory address of a target structure according to the value of the DT_DEBUG, which is stored in the target structure
- the dynamic library information of the dynamic library loaded by the target application
- An access unit configured to access a memory space corresponding to a memory address of the target structure to obtain the target structure
- the traversal unit is configured to traverse the target structure to obtain target dynamic library information.
- a third aspect of the embodiments of the present application provides a terminal, including a processor, an input device, an output device, and a memory.
- the processor, the input device, the output device, and the memory are connected to each other.
- the memory is used to store a computer program.
- the computer program includes program instructions, and the processor is configured to call the program instructions and execute the step instructions as in the first aspect of the embodiments of the present application.
- a fourth aspect of the embodiments of the present application provides a computer-readable storage medium, where the computer-readable storage medium stores a computer program for electronic data exchange, wherein the computer program causes a computer to execute a computer program as described in the first embodiment of the application.
- a fifth aspect of the embodiments of the present application provides a computer program product, wherein the computer program product includes a non-transitory computer-readable storage medium storing a computer program, and the computer program is operable to cause a computer to execute the implementation of the present application. Some or all of the steps described in the first aspect of the example.
- the computer program product can be a software installation package.
- the memory address of the dynamic library is identified, the memory address of the target structure is obtained according to the memory address, the target structure is obtained according to the memory address of the target structure, and the target dynamic library information is obtained by traversing the structure.
- the target dynamic library information is obtained by accessing the memory-mapped file.
- the target dynamic library information is obtained according to the identification dynamic library, which can improve the accuracy of the dynamic library information acquisition to a certain extent.
- FIG. 1 is a schematic diagram of an electronic device according to an embodiment of the present application.
- FIG. 2 is a schematic flowchart of a method for acquiring dynamic library information of an application according to an embodiment of the present application
- FIG. 3 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application
- FIG. 4 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application
- FIG. 5 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application
- FIG. 6 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application
- FIG. 7 is a schematic structural diagram of a terminal according to an embodiment of the present application.
- FIG. 8 provides an apparatus for acquiring dynamic library information of an application according to an embodiment of the present application.
- a struct refers to a data structure, which is a type of aggregate data types in the C language. Structures can be declared as variables, pointers, or arrays to implement more complex data structures. Structure members can also include other structures, and can also contain pointers to their own structure types. Usually, the application of such pointers is to implement some more advanced data structures such as linked lists and trees.
- FIG. 1 is a schematic diagram of an electronic device according to an embodiment of the present application.
- the electronic device includes a reference application 101 and a processor 102.
- the reference application 101 is an application used by a user.
- the user issues a dynamic library acquisition instruction of the application.
- the dynamic library information acquisition method of the application Including: the user sends the dynamic library acquisition instruction of the target application to the processor 102 through the reference application 101, and after the processor 102 receives the dynamic library acquisition instruction of the target application, extracts the memory of the dynamic library information acquisition instruction of the target application The address and the offset of the DT_DEBUG entry in the target dynamic library in the target application.
- the offset of the DT_DEBUG entry is to add an entry to the .dynamic section of the dynamic library file when generating the code to identify the dynamic library.
- the key of the entry is DT_DEBUG, and its initial value is 0, and then the code identifying the dynamic library is compiled to obtain the offset of the DT_DEBUG entry after the identification of the dynamic library.
- the offset may be, for example, 300, of course, the offset and initial value can also have other specific values; then the processor 102 sets the target Use the program's dynamic library information to obtain the instruction's memory address plus the offset to obtain the memory address of the identified dynamic library, access the memory space corresponding to the memory address of the identified dynamic library, and obtain the value of DT_DEBUG.
- the processor 102 is worthy of the value of DT_DEBUG.
- the target structure is a link_map structure.
- the processor 102 accesses the memory space corresponding to the memory address of the link_map structure to obtain the link_map structure.
- the processor 102 traverses the link_map structure to obtain the target dynamic library.
- Information, the target dynamic library information is the information of the dynamic library loaded by the target application
- FIG. 2 is a schematic flowchart of a method for acquiring dynamic library information of an application program according to an embodiment of the present application.
- the method for obtaining dynamic library information of the application includes steps 201-205, which are as follows:
- the offset of the DT_DEBUG entry is: when generating the code identifying the dynamic library, add an entry to the .dynamic section of the identifying dynamic library file, the key of the entry is DT_DEBUG, the value of which is 0, and then Compile the code that identifies the dynamic library and obtain the offset of the DT_DEBUG entry after obtaining the identification of the dynamic library.
- the offset can be, for example, 300, of course, the offset can also have other specific values, which can be directly
- the ID dynamic library compilation file extracts the offset of the DT_DEBUG entry in the ID dynamic library in the target application.
- the memory address of the dynamic library information acquisition instruction of the target application can be extracted by the address search method.
- the target application program is a program running in the electronic device, which can be selected by the user or by the electronic device, which is not specifically limited here.
- the memory address of the dynamic library information acquisition instruction of the target application and the offset of the DT_DEBUG entry are superimposed to obtain the memory address identifying the dynamic library.
- 203 Obtain a value of the DT_DEBUG from a memory space corresponding to a memory address of the identification dynamic library, and obtain a memory address of a target structure according to the value of the DT_DEBUG.
- the target structure stores a target application program Dynamic library information for the loaded dynamic library.
- the target structure is a link_map structure
- the link_map structure is a doubly linked list.
- Each node of the linked list corresponds to each of the loaded dynamic libraries of the target application.
- the nodes store each of the loaded dynamic libraries.
- Dynamic library information including dynamic library name and dynamic library memory address.
- a doubly linked list is a type of linked list, and each data node of the doubly linked list includes two different pointers, which point to a direct successor and a direct predecessor, respectively. Therefore, from any node in the doubly linked list, its predecessor node and subsequent node can be accessed.
- a possible method for obtaining the memory address of the target structure according to the value of DT_DEBUG includes steps A1-A3, as follows:
- the value of DT_DEBUG and the initial value of DT_DEBUG are superimposed to obtain the memory address of the reference structure.
- the reference structure is an r_debug structure
- the r_debug structure includes multiple fields, and different fields store the memory addresses of the structures associated with them.
- A2 access the memory address of the reference structure to obtain the reference structure
- A3. Obtain a memory address of the target structure from an r_map field of the reference structure.
- the r_map field stores the memory address of the target structure, and the memory space of the r_map field is read to obtain the target structure memory address.
- each node of the target structure (link_map structure) is traversed, and dynamic library information of the dynamic library loaded by the target application is obtained from the memory space of each node.
- link_map structure By traversing the link_map structure to obtain the information of the dynamic library loaded by the target application, without access to any files, the accuracy of the obtained dynamic library information is improved.
- no external call is made. Function, so it is difficult to be reversely located, which can also improve the accuracy of obtaining dynamic library information.
- the target dynamic library information includes a target dynamic library name.
- the method further includes steps B1-B3, as follows:
- the target dynamic library name is compared with a plurality of preset dangerous dynamic library names to obtain the target dynamic library name and each of the plurality of preset dangerous dynamic library names. Similarity between
- the preset dangerous dynamic library is stored in the dangerous library.
- the name of the dangerous dynamic library can be, for example, dynamic library names such as libsubstrate.so, libsubstrate.so, libSubstrateJNI.so, libSubstrateRun.so, etc.
- Such dynamic libraries are hook frameworks, of course.
- the dangerous dynamic library in the dangerous library can also be updated. For example, the system determines the dynamic library. When the dynamic library is determined to be a dangerous dynamic library, the dangerous dynamic library is added to the dangerous library.
- a possible method for determining whether the target dynamic library is a dangerous dynamic library is: the similarity between the target dynamic library name and each of the plurality of preset dangerous dynamic library names is greater than the When the similarity threshold is set, it is determined that the target dynamic library is a dangerous dynamic library, and the preset similarity threshold is 90% -100%.
- another possible method for judging whether the target dynamic library is a dangerous dynamic library is to determine whether the dynamic library will make illegal calls to system resources, tamper with kernel data, or tamper with system key parameters after the dynamic library is mounted. If the determination result is yes, the dynamic library is determined to be a dangerous dynamic library.
- illegal calls to system resources include: calling system resources without system authorization; key system parameters include: system control parameters.
- the target dynamic library is a dangerous dynamic library, determine that the running environment of the target application is an untrusted running environment.
- the untrusted operating environment is an environment where the target application may be attacked by a virus or the like.
- another method for determining a running environment of a target application as an untrusted running environment may include steps C1-C4, as follows:
- the target dynamic library information includes the dynamic library name and the dynamic library memory address
- the target dynamic library can be extracted by reading the memory space corresponding to the dynamic library memory address.
- the hook function is part of the Windows message processing mechanism. By setting the "hook", the application can filter all messages and events at the system level and access messages that cannot be accessed under normal circumstances.
- the essence of a hook is a program that processes system messages and hangs it into the system through system calls.
- the dangerous hook function may be a function such as MSJava Hook Method, MSJava Hook ClassLoad, MS Hook Function, and the like.
- the method for judging the hook function may be, by matching the function name, if the hook function and the dangerous hook function exactly match, it is determined that the hook function is a dangerous hook function.
- the preset method for determining a dangerous hook function may be: comparing a characteristic parameter of the target hook function with a reference characteristic parameter in the dangerous hook function library; if the characteristic of the target hook function includes a reference characteristic parameter, determining the target hook
- the function is a dangerous hook function.
- the reference characteristic parameters include: a hook function name, a hook function category, and the like.
- the category of the dangerous hook function can be, for example, the MS hook.xx category, where xx is an arbitrary parameter, that is, only the Ms hook. Is used to identify the category of the dangerous function.
- the dangerous hook function can be, for example, the MS hook.trate, etc. If the function is a dangerous hook function, it is only necessary to identify whether the hook function has an MS hook. This header, if the hook function has an MS hook, determine that the hook function is a dangerous hook function.
- the dangerous hook function library includes an update mechanism.
- the system can add the newly discovered dangerous hook function to the dangerous hook function library.
- the newly discovered dangerous hook function can be, for example, a hook function in a newly discovered virus, or it can be Hook functions that do not exist in the original dangerous hook function library.
- the target dynamic library information includes the target dynamic library icon.
- Another method for determining the running environment of the target application as an untrusted running environment may include steps D1-D4, which are as follows:
- the target dynamic library icon and the preset dangerous dynamic library icon are divided into n * n rectangular shapes in a matrix form, and each rectangular shape has a matrix coordinate, where the matrix is n * n Matrix, n is an odd number greater than 2;
- the area of the rectangular figures obtained after the splitting may be the same or different. If the area of the rectangular graphic obtained after splitting is different, one possible splitting method is: extract the area where the key content of the target application icon is located, and when splitting the area, the split density is greater than the non-critical The density of the area where the content is located, that is, the area of the rectangular graphic in the area where the key content is located is smaller than the area of the rectangle in the area where the non-critical content is located.
- the key content may be, for example, an area with an iconic meaning in the icon, and the area with an iconic meaning may be an area capable of highlighting the characteristics of the icon, such as a special-shaped area in a Baidu icon.
- the similarity in the target similarity set may further include the similarity of the area where the key content of the target application icon is located.
- each similarity in the target similarity set is greater than the target preset similarity, and the similarity corresponding to a rectangular figure of matrix coordinates (1, 1) and (x, n) is 100%, then It is determined that the running environment of the target application is an untrusted running environment.
- the range of the target preset similarity may be 0.95-1.00, for example, 0.96, 0.97, and the like.
- the images at positions (1, 1) and (x, n) are the identifiers of the dangerous dynamic library.
- each similarity in the target similarity set is greater than the target preset similarity, and the similarity corresponding to the rectangular figure of the matrix coordinates (1,1) and (x, n) is 100%
- the accuracy of judging the running environment of the target application as an untrusted running environment can be improved to a certain extent.
- steps E1-E3 may be further included as follows:
- an anti-virus operation is performed on the running environment of the target application to isolate or delete the dangerous dynamic library, thereby changing the running environment of the target application from an untrusted running environment to a trusted running environment.
- the target application is shut down after it is found that the target application's operating environment is an untrusted operating environment.
- the operating environment is a trusted operating environment
- restarting the target application can improve the target application's operation to a certain extent.
- Security for example, in the input password of the application payment, it is detected that the operating environment of the current application is not credible, then the payment can be prompted and suspended to protect the user's property security.
- the method for acquiring dynamic library information of an application may further include steps F1-F4, as follows:
- F1 Receive a target function call request, where the target function call request carries a target function name;
- the target dynamic library is stored in the cache.
- the processor receives the target function call request sent by the reference application, and the target function request carries the name of the target function.
- the target function may be, for example, a function that needs to be called when the reference application is running, or other functions. For example, the dangerous hook function determined by the method described above.
- the function list in the dynamic library can be searched to obtain the dynamic library in which the target function is located.
- the target dynamic library needs to be called in memory, and the address of the target dynamic library is directly obtained from the cache, which can reduce the acquisition of the target function. Time, thereby improving the efficiency of obtaining the objective function.
- FIG. 3 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application.
- the method for obtaining dynamic library information of an application includes steps 301-330, as follows:
- target dynamic library information is information of a dynamic library loaded by the target application.
- the target dynamic library information is obtained by accessing the memory mapped file.
- This solution uses the identification of the dynamic library to obtain the target dynamic library information, which can improve the accuracy of the dynamic library information acquisition to a certain extent. Sex.
- FIG. 4 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application.
- the method for acquiring dynamic library information of an application may include steps 401-411, as follows:
- Target dynamic library information is information of a dynamic library loaded by the target application
- the target application is closed and the operating environment is antivirused, and the target application is restarted when a trusted operating environment is obtained after the antivirus, so that the security of the target application can be improved to a certain extent.
- FIG. 5 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application.
- the method for acquiring dynamic library information of an application may include steps 501-512, which are as follows:
- Target dynamic library information is information of a dynamic library loaded by the target application
- the target application is closed and the operating environment is antivirused, and the target application is restarted when a trusted operating environment is obtained after the antivirus, so that the security of the target application can be improved to a certain extent.
- the embodiment of the present application provides a schematic flowchart of another method for acquiring dynamic library information of an application.
- the method for obtaining dynamic library information of the application may include steps 601-612, as follows:
- target dynamic library information is information of a dynamic library loaded by the target application
- the target application is closed and the operating environment is antivirused, and the target application is restarted when a trusted operating environment is obtained after the antivirus, so that the security of the target application can be improved to a certain extent.
- FIG. 6 is a schematic flowchart of another method for acquiring dynamic library information of an application according to an embodiment of the present application.
- the method for acquiring dynamic library information of an application may include steps 701-112, as follows:
- Target dynamic library information is information of a dynamic library loaded by the target application
- the target dynamic library is stored in the cache.
- the target dynamic library is stored in the cache, and the address of the target dynamic library is directly obtained from the cache, which can reduce the acquisition time of the target function, thereby improving the acquisition target. Efficiency of the function.
- FIG. 7 is a schematic structural diagram of a terminal according to an embodiment of the present application.
- the terminal includes a processor, an input device, an output device, and a memory.
- An input device, an output device, and a memory are connected to each other, where the memory is used to store a computer program, the computer program includes program instructions, the processor is configured to call the program instructions, and the program includes a program configured to execute the following Step instructions
- the memory address identifying the dynamic library is obtained
- the memory address of the target structure is obtained according to the memory address
- the target structure is obtained according to the memory address of the target structure
- the target dynamic library information is obtained by traversing the structure, compared to the existing
- the target dynamic library information is obtained by accessing the memory-mapped file.
- the target dynamic library information is obtained according to the identification dynamic library, which can improve the accuracy of the dynamic library information acquisition to a certain extent.
- FIG. 8 This embodiment provides an apparatus for acquiring dynamic library information of an application according to an embodiment of the present application.
- the apparatus includes an extraction unit 801, a first acquisition unit 802, a second acquisition unit 803, An access unit 804 and a traversal unit 805, where:
- An extraction unit 801 configured to extract a memory address of a dynamic library information acquisition instruction of a target application, and an offset of a DT_DEBUG entry in the target application that identifies a dynamic library;
- a first obtaining unit 802 configured to obtain a memory address of the identification dynamic library according to a memory address of the dynamic library information acquisition instruction and an offset of the DT_DEBUG entry;
- a second obtaining unit 803 is configured to obtain a value of the DT_DEBUG from a memory space corresponding to a memory address of the identification dynamic library, and obtain a memory address of a target structure according to the value of the DT_DEBUG.
- An access unit 804 configured to access a memory space corresponding to a memory address of the target structure to obtain the target structure
- the traversal unit 805 is configured to traverse the target structure to obtain target dynamic library information.
- the memory address identifying the dynamic library is obtained
- the memory address of the target structure is obtained according to the memory address
- the target structure is obtained according to the memory address of the target structure
- the target dynamic library information is obtained by traversing the structure, compared to the existing
- the target dynamic library information is obtained by accessing the memory-mapped file.
- the target dynamic library information is obtained according to the identification dynamic library, which can improve the accuracy of the dynamic library information acquisition to a certain extent.
- the second obtaining unit 803 is specifically configured to: obtain the memory address of the reference structure according to the value of the DT_DEBUG; and access the Reference the memory address of the structure to obtain the reference structure; obtain the memory address of the target structure from the r_map field of the reference structure.
- the application's dynamic library information acquisition device is further specifically configured to compare the target dynamic library name with a plurality of preset dangerous dynamic library names to obtain the target dynamic library name and the target dynamic library name. Similarity between each of the plurality of preset dangerous dynamic library names; according to the target dynamic library name and between each of the plurality of preset dangerous dynamic library names Whether the target dynamic library is a dangerous dynamic library; if it is determined that the target dynamic library is a dangerous dynamic library, it is determined that the running environment of the target application is an untrusted running environment.
- the dynamic library information acquiring device of the application program is further specifically configured to: extract the target dynamic library according to the target dynamic library information; extract all hook functions in the target dynamic library; and according to a preset Method for determining a dangerous hook function, to determine whether a dangerous hook function exists in all the hook functions; if it is determined that a dangerous hook function exists in all the hook functions, it is determined that the running environment of the target application is untrustworthy Operating environment.
- the dynamic library information obtaining device of the application program is further specifically configured to split the target dynamic library icon and the preset dangerous dynamic library icon into n * n rectangular graphics in a matrix form, each The rectangular figure has a matrix coordinate, where the matrix is a matrix of n * n, and n is an odd number greater than 2.
- the target dynamic library icon and the rectangular graphic in the preset dangerous dynamic library icon are in accordance with corresponding coordinate positions.
- n * n similarities set the matrix coordinates in the target dynamic library icon to (1, n), (n / 2 + 0.5,1), (n / 2 + 0.5, x), (x, (n / 2 + 0.5) and (x, n) rectangular graphics are compared with the corresponding coordinate position graphics in the preset dangerous dynamic library icon, and the obtained similarity is used as the target similarity set, where the value range of x [1, n]; if each similarity in the target similarity set is greater than the target preset similarity, and the similarity corresponding to the rectangular figure of matrix coordinates (1,1) and (x, n) If it is 100%, it is determined that the running environment of the target application is an untrusted running environment.
- the apparatus for acquiring dynamic library information of the application program is further specifically configured to: close the target application program; perform antivirus on the operating environment of the target application program to obtain a trusted operating environment; Restart the target application in the operating environment of the letter.
- the application's dynamic library information acquisition device is further specifically configured to: receive a target function call request, where the target function call request carries a target function name; and determine a dynamic library where the target function corresponding to the target function name is located Obtaining a dynamic library in which a target function is located in a cache; obtaining the target function from a dynamic library.
- An embodiment of the present application further provides a computer-readable medium, wherein the computer-readable medium stores a computer program for electronic data exchange, and the computer program causes a computer to execute any one of the application programs described in the foregoing method embodiments. Part or all of the steps of the dynamic library information acquisition method.
- An embodiment of the present application further provides a computer program product, where the computer program product includes a non-transitory computer-readable storage medium storing a computer program, and the computer program enables a computer to execute any application described in the foregoing method embodiments. Some or all steps of the program's dynamic library information acquisition method.
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条目的偏移量(201);根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址(202);从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息(203);访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体(204);遍历所述目标结构体,得到目标动态库信息(205)。通过所述方法和装置,能够提升动态库信息获取时的准确性。
Description
本申请要求于2018年08月03日提交中国专利局、申请号为2018108777721、申请名称为“应用程序的动态库信息获取方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及信息技术领域,具体涉及一种应用程序的动态库信息获取方法及装置。
随着智能电子设备(智能手机,平板电脑等)的逐步普及,各种智能电子设备的操作系统也随之得到了很大的发展,但是在一些方面仍然存在诸多不足。目前Android系统中,Android应用程序(Application,APP)在获取自身进程已加载的动态库信息(例如动态库名称、地址等)时,大多都通过访问内存映射文件来获得,但是通过这种方式来获取动态库信息时的准确性较低。
发明内容
本申请实施例提供一种应用程序的动态库信息获取方法及装置,能够提升动态库信息获取时的准确性。
本申请实施例的第一方面提供了一种应用程序的动态库信息获取方法,所述方法包括:
提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历所述目标结构体,得到目标动态库信息。
本申请实施例的第二方面提供了一种应用程序的动态库信息获取装置,所述装置包括提取单元、第一获取单元、第二获取单元、访问单元和遍历单元,其中,
提取单元,用于提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
第一获取单元,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
第二获取单元,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问单元,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历单元,用于遍历所述目标结构体,得到目标动态库信息。
本申请实施例的第三方面提供一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、 输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面中的步骤指令。
本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
实施本申请实施例,至少具有如下有益效果:
本申请实施例,通过获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供了一种电子装置的示意图;
图2为本申请实施例提供了一种应用程序的动态库信息获取方法的流程示意图;
图3为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图4为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图5为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图6为本申请实施例提供了另一种应用程序的动态库信息获取方法的流程示意图;
图7为本申请实施例提供的一种终端的结构示意图;
图8为本申请实施例提供了一种应用程序的动态库信息获取装置。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例所涉及的结构体为:在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的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历所述目标结构体,得到目标动态库信息。
本示例中,获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
与上述一致的,请参阅图8,图8为本申请实施例提供了一种应用程序的动态库信息获取装置,所述装置包括提取单元801、第一获取单元802、第二获取单元803、访问单元804和遍历单元805,其中,
提取单元801,用于提取目标应用程序的动态库信息获取指令的内存地址,以及目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;
第一获取单元802,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;
第二获取单元803,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;
访问单元804,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;
遍历单元805,用于遍历所述目标结构体,得到目标动态库信息。
本示例中,获取标识动态库的内存地址,根据该内存地址得到目标结构体的内存地址,根据目标结构体的内存地址得到目标结构体,遍历该结构体得到目标动态库信息,相对于现有方案中,通过访问内存映射文件来获得目标动态库信息,本方案采用了根据标识动态库来获取目标动态库信息,能够一定程度上提升动态库信息获取时的准确性。
可选的,所述在根据所述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%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
可选的,所述应用程序的动态库信息获取装置还具体用于:关闭所述目标应用程序;对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;在所述可信的运行环境中重启所述目标应用程序。
可选的,所述应用程序的动态库信息获取装置还具体用于:接收目标函数调用请求,所述目标函数调用请求携带目标函数名;确定所述目标函数名对应的目标函数所在的动态库;在缓存中获取目标函数所在的动态库;从动态库中获取所述目标函数。
本申请实施例还提供一种计算机可读介质,其中,该计算机可读介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种应用程序的动态库信息获取 方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种应用程序的动态库信息获取方法的部分或全部步骤。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (20)
- 一种应用程序的动态库信息获取方法,其特征在于,所述方法包括:提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;遍历所述目标结构体,得到目标动态库信息。
- 根据权利要求1所述的方法,其特征在于,所述根据所述DT_DEBUG的值得到目标结构体的内存地址,包括:根据所述DT_DEBUG的值得到参考结构体的内存地址;访问所述参考结构体的内存地址,得到所述参考结构体;从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
- 根据权利要求1或2所述的方法,其特征在于,所述目标动态库信息包括目标动态库名称,在所述在遍历所述目标结构体,得到目标动态库信息后,所述方法还包括:将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求1或2所述的方法,其特征在于,所述在遍历所述目标结构体,得到目标动态库信息之后,所述方法还包括:根据所述目标动态库信息,提取所述目标动态库;在所述目标动态库中提取全部的钩子函数;根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求1或2所述的方法,其特征在于,所述目标动态库信息包括目标动态库图标,所述方法还包括:将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为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%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求5所述的方法,其特征在于,所述确定出所述目标应用程序的运行环境为不可信的运行环境之后,所述方法还包括:关闭所述目标应用程序;对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;在所述可信的运行环境中重启所述目标应用程序。
- 根据权利要求6所述的方法,其特征在于,所述方法还包括:接收目标函数调用请求,所述目标函数调用请求携带目标函数名;确定所述目标函数名对应的目标函数所在的动态库;在缓存中获取目标函数所在的动态库;从所述目标函数所在的动态库中获取所述目标函数。
- 一种应用程序的动态库信息获取装置,其特征在于,所述装置包括:提取单元,用于提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;第一获取单元,用于根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;第二获取单元,用于从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;访问单元,用于访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;遍历单元,用于遍历所述目标结构体,得到目标动态库信息。
- 根据权利要求8所述的装置,其特征在于,所述第二获取单元具体用于:根据所述DT_DEBUG的值得到参考结构体的内存地址;访问所述参考结构体的内存地址,得到所述参考结构体;从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
- 根据权利要求8或9所述的装置,其特征在于,所述应用程序的动态库信息获取装置还具体用于:将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求8或9所述的装置,其特征在于,所述应用程序的动态库信息获取装置还具体用 于:根据所述目标动态库信息,提取所述目标动态库;在所述目标动态库中提取全部的钩子函数;根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求8或9所述的装置,其特征在于,所述应用程序的动态库信息获取装置还具体用于:将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为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%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求12所述的装置,其特征在于,所述应用程序的动态库信息获取装置还具体用于:关闭所述目标应用程序;对所述目标应用程序的运行环境进行杀毒,以得到可信的运行环境;在所述可信的运行环境中重启所述目标应用程序。
- 根据权利要求13所述的装置,其特征在于,所述应用程序的动态库信息获取装置还具体用于:接收目标函数调用请求,所述目标函数调用请求携带目标函数名;确定所述目标函数名对应的目标函数所在的动态库;在缓存中获取目标函数所在的动态库;从所述目标函数所在的动态库中获取所述目标函数。
- 一种终端,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,所述处理器用于执行:提取针对目标应用程序的动态库信息获取指令的内存地址,以及所述目标应用程序中的标识动态库中的DT_DEBUG条目的偏移量;根据所述动态库信息获取指令的内存地址和所述DT_DEBUG条目的偏移量,获取所述标识动态库的内存地址;从所述标识动态库的内存地址对应的内存空间中获取所述DT_DEBUG的值,以及根据所述DT_DEBUG的值得到目标结构体的内存地址,所述目标结构体中存储有目标应用程序已加载的动态库的动态库信息;访问所述目标结构体的内存地址对应的内存空间,得到所述目标结构体;遍历所述目标结构体,得到目标动态库信息。
- 根据权利要求15所述的终端,其特征在于,在所述根据所述DT_DEBUG的值得到目标结构体的内存地址方面,所述处理器还用于执行:根据所述DT_DEBUG的值得到参考结构体的内存地址;访问所述参考结构体的内存地址,得到所述参考结构体;从所述参考结构体的r_map字段获取所述目标结构体的内存地址。
- 根据权利要求15或16所述的终端,其特征在于,所述处理器还用于执行:将所述目标动态库名称与多个预设的危险动态库名称进行比对,得到所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度;根据所述目标动态库名称与所述多个预设的危险动态库名称中的每个危险动态库之间的相似度,判别所述目标动态库是否为危险动态库;若判别出所述目标动态库为危险动态库,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求15或16所述的终端,其特征在于,所述处理器还用于执行:根据所述目标动态库信息,提取所述目标动态库;在所述目标动态库中提取全部的钩子函数;根据预设的危险钩子函数判别方法,判别所述全部的钩子函数中是否存在危险钩子函数;若判别出所述全部的钩子函数中存在危险钩子函数,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 根据权利要求15或16所述的终端,其特征在于,所述处理器还用于执行:将所述目标动态库图标与预设的危险动态库图标以矩阵的形式拆分为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%,则确定出所述目标应用程序的运行环境为不可信的运行环境。
- 一种计算机可读存储介质,其特征在于,所述计算机可读介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810877772.1A CN109189496B (zh) | 2018-08-03 | 2018-08-03 | 应用程序的动态库信息获取方法及装置 |
CN201810877772.1 | 2018-08-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020024424A1 true WO2020024424A1 (zh) | 2020-02-06 |
Family
ID=64920064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/108883 WO2020024424A1 (zh) | 2018-08-03 | 2018-09-29 | 应用程序的动态库信息获取方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109189496B (zh) |
WO (1) | WO2020024424A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448655A (zh) * | 2021-07-09 | 2021-09-28 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
Families Citing this family (6)
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 | 浪潮商用机器有限公司 | 一种动态库加载方法及相关装置 |
CN114995899A (zh) * | 2022-05-16 | 2022-09-02 | 上海商汤智能科技有限公司 | 程序运行方法和装置、电子设备、存储介质 |
CN117234963B (zh) * | 2023-11-14 | 2024-01-23 | 海马云(天津)信息技术有限公司 | 动态库处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301719A1 (en) * | 2003-10-28 | 2008-12-04 | Symbian Software Limited | 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 |
CN105117644A (zh) * | 2015-08-26 | 2015-12-02 | 福建天晴数码有限公司 | 采集Android外挂程序方法及系统 |
CN106325847A (zh) * | 2015-07-02 | 2017-01-11 | 杭州海康机器人技术有限公司 | 基于iOS平台获取应用程序功能的方法和装置 |
CN107592338A (zh) * | 2017-08-08 | 2018-01-16 | 新智云数据服务有限公司 | 一种动态库的更新系统、方法和相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502745B (zh) * | 2016-10-26 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 一种函数调用方法和装置 |
-
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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301719A1 (en) * | 2003-10-28 | 2008-12-04 | Symbian Software Limited | 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 |
CN106325847A (zh) * | 2015-07-02 | 2017-01-11 | 杭州海康机器人技术有限公司 | 基于iOS平台获取应用程序功能的方法和装置 |
CN105117644A (zh) * | 2015-08-26 | 2015-12-02 | 福建天晴数码有限公司 | 采集Android外挂程序方法及系统 |
CN107592338A (zh) * | 2017-08-08 | 2018-01-16 | 新智云数据服务有限公司 | 一种动态库的更新系统、方法和相关设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448655A (zh) * | 2021-07-09 | 2021-09-28 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
CN113448655B (zh) * | 2021-07-09 | 2022-06-17 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109189496A (zh) | 2019-01-11 |
CN109189496B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020024424A1 (zh) | 应用程序的动态库信息获取方法及装置 | |
US11687645B2 (en) | Security control method and computer system | |
US10402563B2 (en) | Automated classification of exploits based on runtime environmental features | |
RU2723665C1 (ru) | Динамический индикатор репутации для оптимизации операций по обеспечению компьютерной безопасности | |
US9906537B2 (en) | System, method, and computer program product for conditionally performing an action based on an attribute | |
WO2018017498A1 (en) | Inferential exploit attempt detection | |
CN109753819B (zh) | 一种访问控制策略的处理方法和装置 | |
CN111597553A (zh) | 病毒查杀中的进程处理方法、装置、设备及存储介质 | |
WO2020019520A1 (zh) | 应用程序获取方法及装置 | |
CN113467895A (zh) | 一种Docker的操作方法、装置、服务器和存储介质 | |
CN113176926A (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
CN113064601B (zh) | 动态加载文件的确定方法、装置、终端及存储介质 | |
CN114491422A (zh) | 一种用户操作权限审核方法及装置 | |
WO2017114341A1 (zh) | 一种root病毒清理方法、装置及电子设备 | |
CN112597492A (zh) | 一种基于Windows内核的二进制可执行文件更改监测方法 | |
CN113590264A (zh) | 一种容器环境下的文件防篡改方法及装置 | |
CN113961366A (zh) | 操作系统的内核函数调用方法及计算机设备 | |
CN111240696A (zh) | 移动恶意程序相似模块提取方法 | |
CN112733091A (zh) | 一种应用程序访问外接设备的控制方法及装置 | |
CN114327828B (zh) | 一种共享数据的无锁并发访问方法、装置、设备及介质 | |
CN113391874B (zh) | 一种虚拟机检测对抗方法、装置、电子设备及存储介质 | |
US12001545B2 (en) | Detecting stack pivots using stack artifact verification | |
KR101012669B1 (ko) | 불법적인 메모리 접근을 진단하는 악성 프로그램 탐지기 및그 제어방법 | |
Shamshirsaz et al. | An Improved Process Supervision and Control Method for Malware Detection. | |
CN115640574A (zh) | 病毒免疫方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18928236 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18928236 Country of ref document: EP Kind code of ref document: A1 |