本公开提供了一种系统库的访问方法、装置以及计算机可读存储介质,其中,该方法包括:通过调用系统接口获取应用进程中加载的各动态库的动态库标识和程序头信息;根据待查询符号所属动态库的动态库标识,从获取的各动态库的程序头信息中,查找到所述目标动态库的程序头信息;根据待查询符号对应的用于查询的符号标识,和查找到的所述目标动态库的程序头信息,确定待查询符号的运行地址信息。本公开实施例通过调用系统接口获取各个动态库的动态库标识和程序头信息,结合待查询符号所属动态库标识,获取到该待查询符号所属动态库的程序头信息,进而得到待查询符号的运行地址信息,从而实现对符号的运行地址的自动查找。
A system library access method, device and computer readable storage medium
【技术实现步骤摘要】
一种系统库的访问方法、装置以及计算机可读存储介质
本公开涉及计算机
,具体而言,涉及一种系统库的访问方法、装置以及计算机存储介质。
技术介绍
随着智能终端的大规模发展,智能终端的功能也日益完善,智能终端通过安装各种应用软件为用户提供不同的服务。应用软件的开发过程依赖于操作系统,在基于操作系统的应用软件开发过程中,很多应用优化和调试的方案需要依赖一些系统库函数。然而,随着操作系统的不断更新,操作系统对一些常用接口做了改变。例如,有的操作系统限制了应用动态链接非公开系统库,即原始开发工具(NativeDevelopmentKit,NDK)库,极大程度的增加了依赖该操作系统运行的应用软件开发难度。
技术实现思路
本公开实施例至少提供一种系统库的访问方法、装置以及计算机可读存储介质。第一方面,本公开实施例提供了一种系统库的访问方法,包括:通过调用系统接口获取应用进程中加载的各动态库的动态库标识和程序头信息;根据待查询符号所属目标动态库的动态库标识,从获取的各动态库的程序头信息中,查找到所述目标动态库的程序头信息;根据所述待查询符号对应的用于查询的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,根据所述待查询符号的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息,包括:基于查找到的所述目标动态库的程序头信息,计算得到符号运行起始地址信息,和所述目标动态库的动态Dynamic段信息;基于所述Dynamic段信息,和所述待查询符号的符号标识,确定所述待查询符号的偏移信息;基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,基于所述Dynamic段信息,和所述待查询符号的符号标识,确定所述待查询符号的偏移信息,包括:基于所述Dynamic段信息,查找到符号表;基于所述待查询符号的符号标识,从所述符号表中查找到所述待查询符号的偏移信息。在一种可能的实施方式中,基于所述待查询符号的符号标识,从所述符号表中查找到所述待查询符号的偏移信息,包括:基于所述Dynamic段信息,查找到哈希表;并基于所述待查询符号的符号标识计算哈希值;基于所述哈希值从所述哈希表中查找到所述待查询符号的偏移信息在所述符号表中的位置信息,并基于该位置信息,从所述符号表中查找到所述待查询符号的偏移信息。在一种可能的实施方式中,所述偏移信息包括运行地址偏移信息;所述基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息,包括:基于所述符号运行起始地址信息和所述运行地址偏移信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,所述偏移信息还包括符号标识地址偏移信息;所述方法还包括:基于所述Dynamic段信息,查找到字符串表地址信息;基于所述符号标识地址偏移信息,和所述字符串表地址信息,查找到与所述运行地址信息对应的符号标识;判断查找到的与所述运行地址信息对应的符号标识与所述待查询符号对应的用于查询的符号标识是否一致;若一致,则基于确定的所述运行地址信息运行所述待查询符号。第二方面,本公开实施例还提供一种系统库的访问装置,包括:获取模块,用于通过调用系统接口获取应用进程中加载的各动态库的动态库标识和程序头信息;查找模块,用于根据待查询符号所属目标动态库的动态库标识,从获取的各动态库的程序头信息中,查找到所述目标动态库的程序头信息;确定模块,用于根据所述待查询符号对应的用于查询的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,确定模块用于根据以下步骤确定所述待查询符号的运行地址信息:基于查找到的所述目标动态库的程序头信息,计算得到符号运行起始地址信息,和所述目标动态库的动态Dynamic段信息;基于所述Dynamic段信息,和所述待查询符号的符号标识,确定所述待查询符号的偏移信息;基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,确定模块用于根据以下步骤确定所述待查询符号的偏移信息:基于所述Dynamic段信息,查找到符号表;基于所述待查询符号的符号标识,从所述符号表中查找到所述待查询符号的偏移信息。在一种可能的实施方式中,确定模块用于根据以下步骤从所述符号表中查找到所述待查询符号的偏移信息:基于所述Dynamic段信息,查找到哈希表;并基于所述待查询符号的符号标识计算哈希值;基于所述哈希值从所述哈希表中查找到所述待查询符号的偏移信息在所述符号表中的位置信息,并基于该位置信息,从所述符号表中查找到所述待查询符号的偏移信息。在一种可能的实施方式中,确定模块查找到的偏移信息包括运行地址偏移信息;确定模块,在基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息时,用于:基于所述符号运行起始地址信息和所述运行地址偏移信息,确定所述待查询符号的运行地址信息。在一种可能的实施方式中,确定模块查找到的偏移信息还包括符号标识地址偏移信息;所述查找模块还用于:基于所述Dynamic段信息,查找到字符串表地址信息;基于所述符号标识地址偏移信息,和所述字符串表地址信息,查找到与所述运行地址信息对应的符号标识;所述访问装置还包括:校验模块,用于判断所述查找模块查找到的与所述运行地址信息对应的符号标识与所述待查询符号对应的用于查询的符号标识是否一致;运行模块,用于在所述校验模块确定与所述运行地址信息对应的符号标识与所述待查询符号对应的用于查询的符号标识一致后,基于确定的所述运行地址信息运行所述待查询符号。第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。本公开实施例提供的系统库的访问方法,可以通过调用系统接口(比如高版本安卓系统支持的一个接口)获取各个动态库的动态库标识和程序头(programheader)信息,然后基于待查询符号所属目标动态库的动态库标识(也可以称为文件名),从获取到的各个动态库的programheader信息中,找到该待查询符号所属目标动态库的prog本文档来自技高网...
【技术保护点】
1.一种系统库的访问方法,其特征在于,所述访问方法包括:/n通过调用系统接口获取应用进程中加载的各动态库的动态库标识和程序头信息;/n根据待查询符号所属目标动态库的动态库标识,从获取的各动态库的程序头信息中,查找到所述目标动态库的程序头信息;/n根据所述待查询符号对应的用于查询的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息。/n
【技术特征摘要】
1.一种系统库的访问方法,其特征在于,所述访问方法包括:
通过调用系统接口获取应用进程中加载的各动态库的动态库标识和程序头信息;
根据待查询符号所属目标动态库的动态库标识,从获取的各动态库的程序头信息中,查找到所述目标动态库的程序头信息;
根据所述待查询符号对应的用于查询的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息。
2.根据权利要求1所述的访问方法,其特征在于,根据所述待查询符号的符号标识,和查找到的所述目标动态库的程序头信息,确定所述待查询符号的运行地址信息,包括:
基于查找到的所述目标动态库的程序头信息,计算得到符号运行起始地址信息,和所述目标动态库的动态Dynamic段信息;
基于所述Dynamic段信息,和所述待查询符号的符号标识,确定所述待查询符号的偏移信息;
基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息。
3.根据权利要求2所述的方法,其特征在于,基于所述Dynamic段信息,和所述待查询符号的符号标识,确定所述待查询符号的偏移信息,包括:
基于所述Dynamic段信息,查找到符号表;
基于所述待查询符号的符号标识,从所述符号表中查找到所述待查询符号的偏移信息。
4.根据权利要求3所述的方法,其特征在于,基于所述待查询符号的符号标识,从所述符号表中查找到所述待查询符号的偏移信息,包括:
基于所述Dynamic段信息,查找到哈希表;并基于所述待查询符号的符号标识计算哈希值;
基于所述哈希值从所述哈希表中查找到所述待查询符号的偏移信息在所述符号表中的位置信息,并基于该位置信息,从所述符号表中查找到所述待查询符号的偏移信息。
5.根据权利要求2~4任一所述的方法,其特征在于,所述偏移信息包括运行地址偏移信息;
所述基于所述符号运行起始地址信息和所述待查询符号的偏移信息,确定所述待查询符号的运行地址信息,包括:
基于所述符号运行起始地址信息和所述运行地址偏移信息,确...
【专利技术属性】
技术研发人员:朴英敏,
申请(专利权)人:北京字节跳动网络技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。