CN113742002A - 一种动态库依赖关系获取方法、装置、设备及存储介质 - Google Patents
一种动态库依赖关系获取方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113742002A CN113742002A CN202111059932.XA CN202111059932A CN113742002A CN 113742002 A CN113742002 A CN 113742002A CN 202111059932 A CN202111059932 A CN 202111059932A CN 113742002 A CN113742002 A CN 113742002A
- Authority
- CN
- China
- Prior art keywords
- target
- dynamic library
- reading
- file
- operating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种动态库依赖关系获取方法、装置、设备及存储介质,该方法包括:获取目标文件以及目标文件所对应的操作系统类型;根据操作系统类型确定数据读取数量和目标读取内容;根据数据读取数量和目标读取内容对目标文件进行读取,确定目标文件所依赖动态库的目标动态库文件名称。解决了现有技术中无法跨平台获取动态库依赖关系的问题。通过操作系统类型确定数据读取数量和目标读取内容,不同的操作系统对应不同数据读取数量和目标读取内容,根据数据读取数量和目标读取内容对目标文件进行读取,确定目标文件所依赖动态库的目标动态库文件名称。仅需要知道目标文件所对应平台的操作系统类型,可以跨平台对目标动态库文件名称进行获取。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种动态库依赖关系获取方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展,越来越多的事件在处理时需要依赖计算机程序实现。计算机程序在使用过程中需要依赖很多基础的底层库,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。静态库:静态库在编译时会直接整合到目标程序中,编译成功的可执行文件可以独立运行,而不再需要读取外部静态库的内容。动态库:动态库在编译时,目标程序中只会记录需要用到的动态库的相关指向性信息,编译成功的可执行文件在运行时如果需要利用相关动态库,则必须实时读取外部动态库中的内容。由于静态库会造成一定的空间浪费,并且动态库更有利于产品的更新升级,所以程序中存在的绝大多数库文件是动态库。但因为程序的运行依赖相关的动态库,因此在程序开发,测试或者运维时,会有获取动态库依赖关系的需求,即获取某一可执行文件或库所依赖的其他动态库。其中,需要获取动态库依赖关系的可执行文件或库为目标文件。Windows平台下的目标文件为.exe文件和.dll文件,Linux平台下的目标文件为可执行文件和.so文件。
若目标文件的格式与当前操作系统相匹配,则获取目标文件的动态库依赖关系相对容易。在Linux平台下可使用ldd等命令查询目标文件的动态库依赖关系。在Windows平台下使用dumpbin命令查询目标文件的动态库依赖关系。由于Linux平台下没有dumpbin命令,Windows平台下也没有ldd命令,所以在目标文件的格式与当前操作系统不匹配时,例如在Linux平台下查询.exe文件或.dll文件的动态库依赖关系,由于Linux平台没有dumpbin命令,无法获取动态库依赖关系。
发明内容
本发明提供一种动态库依赖关系获取方法、装置、设备及存储介质,以实现对动态库依赖关系的直接获取,无需考虑系统平台影响。
第一方面,本发明实施例提供了一种动态库依赖关系获取方法,所述动态库依赖关系获取方法包括:
获取目标文件以及所述目标文件所对应的操作系统类型;
根据所述操作系统类型确定数据读取数量和目标读取内容;
根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
第二方面,本发明实施例还提供了一种动态库依赖关系获取装置,该动态库依赖关系获取装置包括:
获取模块,用于获取目标文件以及所述目标文件所对应的操作系统类型;
确定模块,用于根据所述操作系统类型确定数据读取数量和目标读取内容;
读取模块,用于根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
第三方面,本发明实施例还提供了一种计算机设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述的一种动态库依赖关系获取方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的一种动态库依赖关系获取方法。
本发明实施例提供了一种动态库依赖关系获取方法、装置、设备及存储介质,通过获取目标文件以及所述目标文件所对应的操作系统类型;根据所述操作系统类型确定数据读取数量和目标读取内容;根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。解决了现有技术中无法跨平台获取动态库依赖关系的问题。通过操作系统类型确定数据读取数量和目标读取内容,不同的操作系统对应不同的数据读取数量和目标读取内容,根据数据读取数量和目标读取内容对目标文件进行读取,确定目标文件所依赖动态库的目标动态库文件名称。在获取目标文件所依赖动态库的目标动态库文件名称时,仅需要知道目标文件所对应平台的操作系统类型,可以跨平台对目标动态库文件名称进行获取。
附图说明
图1是本发明实施例一中的一种动态库依赖关系获取方法的流程图;
图2是本发明实施例二中的一种动态库依赖关系获取方法的流程图;
图3是本发明实施例二中的一种Windows操作系统下目标文件的动态库依赖关系获取方法的实现示例图;
图4是本发明实施例二中的一种Linux操作系统下目标文件的动态库依赖关系获取方法的实现示例图;
图5是本发明实施例三中的一种动态库依赖关系获取装置的结构示意图;
图6是本发明实施例四中的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
实施例一
图1给出了本申请实施例一提供的一种动态库依赖关系获取方法的流程示意图,该方法适用于在获取任意平台中目标文件的动态库依赖关系的情况。该方法可以由计算机设备执行,该计算机设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,计算机设备可以是笔记本、台式计算机以及智能平板等。
如图1所示,本实施例一提供的一种动态库依赖关系获取方法,具体包括如下步骤:
S110、获取目标文件以及目标文件所对应的操作系统类型。
在本实施例中,目标文件即需要获取动态库依赖关系的可执行文件或库。操作系统类型具体可以理解为目标文件所对应平台的操作系统的类型。
进一步地,操作系统类型为Windows操作系统或Linux操作系统。
具体的,目标文件在平台中存储,操作系统类型为平台部署的操作系统的固有属性,在平台部署操作系统后,操作系统类型即相应确定。本申请的执行设备为部署了任意类型操作系统的平台,其可以执行动态库依赖关系获取方法,获取任意平台的目标文件的动态库依赖关系。目标文件和操作系统类型均可直接从相应的存储区域直接获取。
S120、根据操作系统类型确定数据读取数量和目标读取内容。
在本实施例中,数据读取数量具体可以理解为读取目标文件时所需读取的字节数量;目标读取内容具体可以理解为按照数据读取数量进行数据读取时,需要读取到的数据内容。
具体的,操作系统类型不同的平台,目标文件中记录动态库依赖信息的方式不同,例如,目标文件依赖的动态库命名规则不同,所记录的动态库名称的数据格式也不相同。基于此,预先为不同的操作系统类型设置不同的数据读取数量和目标读取内容。在获取到操作系统类型后,根据操作系统类型查找其对应的数据读取数量和目标读取内容。
S130、根据数据读取数量和目标读取内容对目标文件进行读取,确定目标文件所依赖动态库的目标动态库文件名称。
在本实施例中,目标动态库文件名称具体可以理解为目标文件所依赖动态库的文件名称。
需要知道的是,Windows平台下的目标文件遵循PE文件格式,Linux平台下的目标文件遵循ELF文件格式。PE文件格式和ELF文件格式的动态库依赖信息都是以明文方式存在的。常规情况下可以通过文件格式的定义,读取目标文件内容,从而获取动态库依赖信息。但是PE文件格式和ELF文件格式定义复杂,并且不同平台的文件格式的定义略有不同,因此通过常规方法获取动态库依赖关系较为繁琐。本申请提供了一种根据数据读取数量和目标读取内容读取目标文件的方法。
具体的,按照数据读取数量对目标文件进行读取,并将读取得到的数据内容与目标读取内容进行比较,若与目标读取内容匹配,则可以读取目标文件中的数据串,通过对数据串进行解析确定目标文件所依赖动态库的目标动态库文件名称。在读取目标文件内容时不依赖目标文件的文件格式,直接读取目标文件的内容即可获取相应的动态库依赖关系,即目标动态库文件名称。
本发明实施例提供了一种动态库依赖关系获取方法,通过获取目标文件以及所述目标文件所对应的操作系统类型;根据所述操作系统类型确定数据读取数量和目标读取内容;根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。解决了现有技术中无法跨平台获取动态库依赖关系的问题。通过操作系统类型确定数据读取数量和目标读取内容,不同的操作系统对应不同的数据读取数量和目标读取内容,根据数据读取数量和目标读取内容对目标文件的内容直接进行读取,确定目标文件所依赖动态库的目标动态库文件名称。在获取目标文件所依赖动态库的目标动态库文件名称时,仅需要知道目标文件所对应平台的操作系统类型,可以跨平台对目标动态库文件名称进行获取。
实施例二
图2为本发明实施例二提供的一种动态库依赖关系获取方法的流程图。本实施例的技术方案在上述技术方案的基础上进一步细化,具体主要包括如下步骤:
S201、获取目标文件以及目标文件所对应的操作系统类型。
S202、根据操作系统类型查找预确定的操作系统映射表,确定操作系统类型对应的数据读取数量和目标读取内容。
在本实施例中,操作系统映射表具体可以理解为存储操作系统类型及对应的数据读取数量和目标读取内容的数据表,预先根据操作系统类型以及各类型操作系统的固有属性形成。
具体的,预先生成操作系统映射表,对应存储操作系统类型、数据读取数量和目标读取内容。在获取到目标文件所对应的操作系统类型后,根据操作系统类型查询操作系统映射表,确定与操作系统类型匹配的数据读取数量和目标读取内容。
S203、获取初始起始位。
在本实施例中,初始起始位具体可以理解为数据读取的初始起点位置,即第一次进行数据读取时的起点位置。预先设置初始起始位并存储,存储位置可以是数据库、本地空间等。
S204、将初始起始位作为当前数据读取起点。
在本实施例中,当前数据读取起点具体可以理解为当前对目标文件进行读取时的起点。将获得的初始起始位作为当前数据读取起点,以便开始读取目标文件。
S205、以当前数据读取起点作为起始位,按照数据读取数量连续读取数据,获取读取内容。
在本实施例中,读取内容具体可以理解为对目标文件的内容进行读取,所得到的数据内容。以数据读取数量等于2,当前数据读取起点等于0为例,从起始位开始,连续读取两个16进制数,若读取成功,获得读取内容。若读取失败,则结束此次动态库依赖关系获取流程。
S206、判断读取内容与目标读取内容是否匹配,若是,执行S207;否则,执行S209。
S207、读取预设格式的目标数据串,根据目标数据串确定目标文件所依赖动态库的目标动态库文件名称。
在本实施例中,预设格式具体可以理解为预先根据操作系统类型所设置的格式,不同操作系统类型对应的预设格式不同。目标数据串具体可以理解为目标文件中符合预设格式的数据串。
具体的,预先根据操作系统类型确定预设格式,以Windows操作系统为例,Windows操作系统默认目标文件依赖的动态库名称以“.dll”作为后缀。目标文件中记录的动态库名称的字符串为:
X | XX | . | d | l | l |
在实际应用中,目标文件使用ASCII编码存储数据,因此,目标文件中记录的动态库名称的数据格式为:
X | 00 | XX | 2E | 64 | 6C | 6C |
其中,X代表一个非0的16进制数值,与动态库名称无关;XX代表多个非0的16进制数值,其对应的字符串即为具体的动态库名称,应符合Windows文件的命名规范(实际上,若XX中包含16进制数0,则其一定不符合Windows文件的命名规范)。
预设格式即为以“X 00”开头,以“2E 64 6C 6C”结尾,目标数据串即以“X 00”开头,以“2E 64 6C 6C”结尾的数据串,其中“2E 64 6C 6C”为从“X 00”开始读取到的第一个“2E 64 6C 6C”。在读取到目标数据串后,对目标数据串进行解析,确定目标数据串中所包含的目标动态库文件名称。
作为本实施例的一个可选实施例,本可选实施例进一步将所述根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称优化为:
A、对目标数据串进行解析,确定动态库文件名称。
在本实施例中,动态库文件名称具体可以理解为目标文件所依赖动态库的文件名称。目标数据串为ASCII编码形式的数据,对其解析,将其恢复为字符串形式,解析得到的字符串即为动态库文件名称。
示例性的,若XX对应的字符串为“disql”,则在Windows平台中相应的动态库文件名称为disql.dll。
B、根据操作系统类型确定命名规则。
在本实施例中,命名规则具体可以理解为文件的命名规范,不同类型的操作系统具有不同的命名规则。预先存储各操作系统的命名规则,根据操作系统类型查询并确定对应的命名规则。
C、如果动态库文件名称符合命名规则,则将动态库文件名称确定为目标动态库文件名称。
判断动态库文件名称是否符合此类操作系统的命令规则,若符合,则将动态库文件名称确定为目标动态库文件名称。在确定了目标动态库文件名称后可以保存,并记录。
S208、判断目标文件是否完成读取,若是,执行S210;否则,执行S209。
判断目标文件是否完成读取可以是判断当前的目标数据串后是否还有数据未被读取,若是,则说明目标文件未全部读取完成,则执行S209继续读取数据,获取目标文件所依赖的其他动态库的目标动态库文件名称。若已完成读取,则执行S210,结束对此目标文件的动态库依赖关系获取。
S209、将当前数据读取起点加1作为新的当前数据读取起点,返回执行S205。
S210、结束。
需要知道的是,S210结束的是对此目标文件的动态库依赖关系的获取,采用同样的方式可以获取其他目标文件的动态库依赖关系。
示例性的,图3为本发明实施例提供的一种Windows操作系统下目标文件的动态库依赖关系获取方法的实现示例图。Windows操作系统中目标文件为“.exe”文件或“.dll”文件。根据Windows平台中目标文件记录的动态库名称的数据格式,将数据读取数量设置为2,目标读取内容设置为“X 00”。
S301、开始。
S302、设置初始起始位为0,将初始起始位作为当前数据读取起点。
S303、以当前数据读取起点作为起始位读取数据,连续读取两个16进制数。
S304、判断是否读取成功,若是,执行S305;否则,执行S313。
S305、判断当前读取的内容是否为“X 00”,若否,执行S306;否则,执行S307。
S306、将当前数据读取起点加1作为新的当前数据读取起点,并返回执行S303。
S307、读取一个以当前的“X 00”为开始,以“2E 64 6C 6C”为结尾的目标数据串,其中“2E 64 6C 6C”为从“X 00”开始读取到的第一个“2E 64 6C 6C”。
S308、判断是否读取成功,若是,执行S309;否则,执行S313。
S309、解析目标数据串,获取动态库文件名称。
S310、判断动态库文件名称是否符合Windows操作系统的命名规则,若是,执行S311;否则,执行S312。
S311、将动态库文件名称确定为目标动态库文件名称,并记录。
S312、判断目标文件是否全部读取完成,若是,执行S313;否则,返回执行S306。
S313、结束。
示例性的,图4为本发明实施例提供的一种Linux操作系统下目标文件的动态库依赖关系获取方法的实现示例图。Linux操作系统中目标文件为可执行文件文件或“.so”文件。
Linux操作系统默认目标文件依赖的动态库名称以“lib”开始,“.so”作为后缀。目标文件中记录的动态库名称的字符串为:
l | i | b | XX | . | s | o |
在实际应用中,目标文件使用ASCII编码存储数据,因此,目标文件中记录的动态库名称的数据格式为:
00 | 6C | 69 | 62 | XX | 2E | 73 | 6F | 00 |
其中,XX代表多个非0的16进制数值,其对应的字符串即为具体的动态库名称,应符合Linux文件的命名规范(实际上,若XX中包含16进制数0,则其一定不符合Linux文件的命名规范)。
根据Linux平台中目标文件记录的动态库名称的数据格式,将数据读取数量设置为4,目标读取内容设置为“00 6C 69 62”。
S401、开始。
S402、设置初始起始位为0,将初始起始位作为当前数据读取起点。
S403、以当前数据读取起点作为起始位读取数据,连续读取四个16进制数。
S404、判断是否读取成功,若是,执行S405;否则,执行S413。
S405、判断当前读取的内容是否为“00 6C 69 62”,若否,执行S406;否则,执行S407。
S406、将当前数据读取起点加1作为新的当前数据读取起点,并返回执行S403。
S407、读取一个以当前的“00 6C 69 62”为开始,以“2E 73 6F 00”为结尾的目标数据串,其中“2E 73 6F 00”为从“00 6C 69 62”开始读取到的第一个“2E 73 6F 00”。
S408、判断是否读取成功,若是,执行S409;否则,执行S413。
S409、解析目标数据串,获取动态库文件名称。
S410、判断动态文件名称是否符合Linux操作系统的命名规则,若是,执行S411;否则,执行S412。
S411、将动态库文件名称确定为目标动态库文件名称,并记录。
S412、判断目标文件是否全部读取完成,若是,执行S413;否则,返回执行S406。
S413、结束。
本发明实施例提供了一种动态库依赖关系获取方法,解决了现有技术中无法跨平台获取动态库依赖关系的问题。通过操作系统类型确定数据读取数量和目标读取内容,不同的操作系统对应不同的数据读取数量和目标读取内容,根据数据读取数量对目标文件的内容进行读取,并通过目标读取内容判断读取内容是否匹配,若匹配,则读取目标数据串。通过解析目标数据串确定动态库文件名称,并判断动态库文件名称是否符合操作系统类型所对应的命名规则,若符合则将动态库文件名称确定为目标动态库文件名称,完成目标文件所依赖动态库的目标动态库文件名称的确定。在确定目标动态库文件名称的过程中,无需关注本平台的操作系统类型,仅需要知道目标文件所对应平台的操作系统类型,即可以跨平台对目标动态库文件名称进行获取,方法简单,易实现。
实施例三
图5为本发明实施例三提供的一种动态库依赖关系获取装置的结构示意图,该装置包括:获取模块51、确定模块52和读取模块53。
其中,获取模块51,用于获取目标文件以及所述目标文件所对应的操作系统类型;
确定模块52,用于根据所述操作系统类型确定数据读取数量和目标读取内容;
读取模块53,用于根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
本发明实施例提供了一种动态库依赖关系获取装置,通过获取目标文件以及所述目标文件所对应的操作系统类型;根据所述操作系统类型确定数据读取数量和目标读取内容;根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。解决了现有技术中无法跨平台获取动态库依赖关系的问题。通过操作系统类型确定数据读取数量和目标读取内容,不同的操作系统对应不同的数据读取数量和目标读取内容,根据数据读取数量和目标读取内容对目标文件进行读取,确定目标文件所依赖动态库的目标动态库文件名称。在获取目标文件所依赖动态库的目标动态库文件名称时,仅需要知道目标文件所对应平台的操作系统类型,可以跨平台对目标动态库文件名称进行获取。
进一步地,确定模块52,具体用于根据所述操作系统类型查找预确定的操作系统映射表,确定所述操作系统类型对应的数据读取数量和目标读取内容。
进一步地,读取模块53,包括:
起始位获取单元,用于获取初始起始位,并将所述初始起始位作为当前数据读取起点;
读取单元,用于以所述当前数据读取起点作为起始位,按照所述数据读取数量连续读取数据,获取读取内容;
文件名称确定单元,用于判断所述读取内容与目标读取内容是否匹配,若是,则读取预设格式的目标数据串,根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称;否则,将所述当前数据读取起点加1作为新的当前数据读取起点,返回执行读取内容的获取操作。
进一步地,文件名称确定单元,具体用于:对所述目标数据串进行解析,确定动态库文件名称;根据所述操作系统类型确定命名规则;如果所述动态库文件名称符合命名规则,则将所述动态库文件名称确定为目标动态库文件名称。
进一步地,读取模块53还包括:
返回单元,用于如果所述目标文件未完成读取,则将所述当前数据读取起点加1作为新的当前数据读取起点,返回执行读取内容的获得操作。
进一步地,所述操作系统类型为Windows操作系统或Linux操作系统。
本发明实施例所提供的动态库依赖关系获取装置可执行本发明任意实施例所提供的动态库依赖关系获取方法,具备执行方法相应的功能模块和有益效果。
实施例四
图6为本发明实施例四提供的一种计算机设备的结构示意图,如图6所示,该设备包括处理器60、存储器61、输入装置62和输出装置63;设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;设备中的处理器60、存储器61、输入装置62和输出装置63可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的动态库依赖关系获取方法对应的程序指令/模块(例如,动态库依赖关系获取装置中的获取模块51、确定模块52和读取模块53)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的动态库依赖关系获取方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置62可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置63可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种动态库依赖关系获取方法,该方法包括:
获取目标文件以及所述目标文件所对应的操作系统类型;
根据所述操作系统类型确定数据读取数量和目标读取内容;
根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的动态库依赖关系获取方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述动态库依赖关系获取装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种动态库依赖关系获取方法,其特征在于,包括:
获取目标文件以及所述目标文件所对应的操作系统类型;
根据所述操作系统类型确定数据读取数量和目标读取内容;
根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
2.根据权利要求1所述的方法,其特征在于,所述根据所述操作系统类型确定数据读取数量和目标读取内容,包括:
根据所述操作系统类型查找预确定的操作系统映射表,确定所述操作系统类型对应的数据读取数量和目标读取内容。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称,包括:
获取初始起始位,并将所述初始起始位作为当前数据读取起点;
以所述当前数据读取起点作为起始位,按照所述数据读取数量连续读取数据,获取读取内容;
判断所述读取内容与目标读取内容是否匹配,若是,则读取预设格式的目标数据串,根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称;
否则,将所述当前数据读取起点加1作为新的当前数据读取起点,返回执行读取内容的获取操作。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称,包括:
对所述目标数据串进行解析,确定动态库文件名称;
根据所述操作系统类型确定命名规则;
如果所述动态库文件名称符合命名规则,则将所述动态库文件名称确定为目标动态库文件名称。
5.根据权利要求3所述的方法,其特征在于,在所述根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称之后,还包括:
如果所述目标文件未完成读取,则将所述当前数据读取起点加1作为新的当前数据读取起点,返回执行读取内容的获得操作。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述操作系统类型为Windows操作系统或Linux操作系统。
7.一种动态库依赖关系获取装置,其特征在于,包括:
获取模块,用于获取目标文件以及所述目标文件所对应的操作系统类型;
确定模块,用于根据所述操作系统类型确定数据读取数量和目标读取内容;
读取模块,用于根据所述数据读取数量和目标读取内容对所述目标文件进行读取,确定所述目标文件所依赖动态库的目标动态库文件名称。
8.根据权利要求7所述的装置,其特征在于,所述读取模块,包括:
起始位获取单元,用于获取初始起始位,并将所述初始起始位作为当前数据读取起点;
读取单元,用于以所述当前数据读取起点作为起始位,按照所述数据读取数量连续读取数据,获取读取内容;
文件名称确定单元,用于判断所述读取内容与目标读取内容是否匹配,若是,则读取预设格式的目标数据串,根据所述目标数据串确定所述目标文件所依赖动态库的目标动态库文件名称;否则,将所述当前数据读取起点加1作为新的当前数据读取起点,返回执行读取内容的获取操作。
9.一种计算机设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的动态库依赖关系获取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的动态库依赖关系获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111059932.XA CN113742002A (zh) | 2021-09-10 | 2021-09-10 | 一种动态库依赖关系获取方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111059932.XA CN113742002A (zh) | 2021-09-10 | 2021-09-10 | 一种动态库依赖关系获取方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742002A true CN113742002A (zh) | 2021-12-03 |
Family
ID=78737925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111059932.XA Pending CN113742002A (zh) | 2021-09-10 | 2021-09-10 | 一种动态库依赖关系获取方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742002A (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577435A (zh) * | 2012-07-27 | 2014-02-12 | 永泰软件有限公司 | 一种异构交通信息汇聚的系统和方法 |
CN103984582A (zh) * | 2014-06-04 | 2014-08-13 | 网易(杭州)网络有限公司 | 一种热更新方法和装置 |
CN104063220A (zh) * | 2014-06-25 | 2014-09-24 | 清华大学 | 基于文件的Linux基础软件依赖关系分析方法 |
CN105045680A (zh) * | 2015-07-10 | 2015-11-11 | 上海爱数软件有限公司 | 一种达梦数据库备份数据的方法 |
CN105930190A (zh) * | 2016-04-27 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 一种基于操作系统的程序自启动方法和装置 |
CN106339247A (zh) * | 2016-09-13 | 2017-01-18 | 武汉斗鱼网络科技有限公司 | 一种动态链接库文件的加载系统及加载方法 |
CN106681782A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种编译安卓安装包的动态链接库so文件的方法和装置 |
CN108460155A (zh) * | 2018-03-28 | 2018-08-28 | 深信服科技股份有限公司 | 一种文件识别方法、装置、设备及存储介质 |
CN108595226A (zh) * | 2018-05-09 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 动态加载方法、装置及计算机可读存储介质 |
WO2018194196A1 (ko) * | 2017-04-20 | 2018-10-25 | 라인 가부시키가이샤 | Elf 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템 |
CN109918907A (zh) * | 2019-01-30 | 2019-06-21 | 国家计算机网络与信息安全管理中心 | Linux平台进程内存恶意代码取证方法、控制器及介质 |
CN110046502A (zh) * | 2019-04-08 | 2019-07-23 | 中国科学院软件研究所 | 一种基于虚拟化高效hash的可配置函数api监测方法 |
CN111488573A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 链接库检测方法、装置、电子设备和计算机可读存储介质 |
US20200278875A1 (en) * | 2017-11-20 | 2020-09-03 | Huawei Technologies Co., Ltd. | Dynamic loading method, and target file creation method and apparatus |
CN112230980A (zh) * | 2020-09-28 | 2021-01-15 | 北京五八信息技术有限公司 | 一种依赖关系检测方法、装置、电子设备及存储介质 |
CN112948024A (zh) * | 2021-04-15 | 2021-06-11 | 网易(杭州)网络有限公司 | 动态链接库的加载方法、装置、存储介质及电子设备 |
CN113139176A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 恶意文件的检测方法、装置、设备及存储介质 |
-
2021
- 2021-09-10 CN CN202111059932.XA patent/CN113742002A/zh active Pending
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577435A (zh) * | 2012-07-27 | 2014-02-12 | 永泰软件有限公司 | 一种异构交通信息汇聚的系统和方法 |
CN103984582A (zh) * | 2014-06-04 | 2014-08-13 | 网易(杭州)网络有限公司 | 一种热更新方法和装置 |
CN104063220A (zh) * | 2014-06-25 | 2014-09-24 | 清华大学 | 基于文件的Linux基础软件依赖关系分析方法 |
CN105045680A (zh) * | 2015-07-10 | 2015-11-11 | 上海爱数软件有限公司 | 一种达梦数据库备份数据的方法 |
CN105930190A (zh) * | 2016-04-27 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 一种基于操作系统的程序自启动方法和装置 |
CN106339247A (zh) * | 2016-09-13 | 2017-01-18 | 武汉斗鱼网络科技有限公司 | 一种动态链接库文件的加载系统及加载方法 |
CN106681782A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种编译安卓安装包的动态链接库so文件的方法和装置 |
WO2018194196A1 (ko) * | 2017-04-20 | 2018-10-25 | 라인 가부시키가이샤 | Elf 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템 |
US20200278875A1 (en) * | 2017-11-20 | 2020-09-03 | Huawei Technologies Co., Ltd. | Dynamic loading method, and target file creation method and apparatus |
CN108460155A (zh) * | 2018-03-28 | 2018-08-28 | 深信服科技股份有限公司 | 一种文件识别方法、装置、设备及存储介质 |
CN108595226A (zh) * | 2018-05-09 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 动态加载方法、装置及计算机可读存储介质 |
CN109918907A (zh) * | 2019-01-30 | 2019-06-21 | 国家计算机网络与信息安全管理中心 | Linux平台进程内存恶意代码取证方法、控制器及介质 |
CN110046502A (zh) * | 2019-04-08 | 2019-07-23 | 中国科学院软件研究所 | 一种基于虚拟化高效hash的可配置函数api监测方法 |
CN113139176A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 恶意文件的检测方法、装置、设备及存储介质 |
CN111488573A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 链接库检测方法、装置、电子设备和计算机可读存储介质 |
CN112230980A (zh) * | 2020-09-28 | 2021-01-15 | 北京五八信息技术有限公司 | 一种依赖关系检测方法、装置、电子设备及存储介质 |
CN112948024A (zh) * | 2021-04-15 | 2021-06-11 | 网易(杭州)网络有限公司 | 动态链接库的加载方法、装置、存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
BAHUTOU: "Linux动态链接库.so文件的命名及用途总结", Retrieved from the Internet <URL:https://blog.csdn.net/zhanglianpin/article/details/50491958> * |
尕尕LULA: "window系统下如何查看so库的信息", Retrieved from the Internet <URL:blog.csdn.net/lulus_tecpath/article/details/106249438> * |
曹玉林, 马建萍: "基于操作系统的动态库分析及移植方法", 西北民族大学学报(自然科学版), no. 04 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112395305B (zh) | 一种sql语句分析方法、装置、电子设备及存储介质 | |
CN108536745B (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN112364206A (zh) | 一种对多格式数据文件进行解析翻译的方法及装置 | |
CN110765773A (zh) | 地址数据获取方法以及装置 | |
CN113127125B (zh) | 页面自动适配方法、装置、设备及存储介质 | |
CN112445729A (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
US20180137281A1 (en) | Software analysis system, software analysis method, and software analysis program | |
CN112948827A (zh) | 一种源码编译验证方法、系统、设备和储存介质 | |
CN115794220A (zh) | 软件源迁移方法、装置和系统、计算设备和可读存储介质 | |
CN110704573A (zh) | 目录存储方法、装置、计算机设备及存储介质 | |
CN107526730B (zh) | 一种翻译数据的管理方法、存储介质及电子设备 | |
CN112749258A (zh) | 数据搜索的方法和装置、电子设备和存储介质 | |
CN111488483A (zh) | 曲库更新方法、装置、终端和非临时性计算机可读存储介质 | |
CN111913777A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN113742002A (zh) | 一种动态库依赖关系获取方法、装置、设备及存储介质 | |
CN111399849A (zh) | 一种应用程序安装包的确定方法及系统 | |
CN112003837B (zh) | 基于Modbus协议的设备智能适配方法、装置及存储介质 | |
CN114356330A (zh) | 页面配置方法、装置、电子设备和存储介质 | |
CN112947991A (zh) | 版本差异代码文件的获取方法、装置、计算机设备和介质 | |
CN113434585A (zh) | 资源保存方法及设备 | |
US5819287A (en) | Database driven automatic program production system | |
CN108334621B (zh) | 数据库操作方法、装置、设备及计算机可读存储介质 | |
CN107229746B (zh) | 终端及多派生项目的数据处理方法和存储介质 | |
CN113127408A (zh) | 数据转换方法及装置 | |
JP6091471B2 (ja) | ソースコード解析装置、ソースコード解析方法およびソースコード解析プログラム |
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 |