一种编译安卓安装包的动态链接库SO文件的方法和装置制造方法及图纸

技术编号:15391347 阅读:56 留言:0更新日期:2017-05-19 04:42
本发明专利技术公开了一种编译安卓安装包的动态链接库SO文件的方法和装置。其中方法包括:读取SO文件到SO文件编译设备的内存中;对所述SO文件中的至少一个指定节,定位指定节的起始地址;根据定位到的指定节的起始地址,获取该指定节存储的数据信息。该技术方案通过内存寻址,快速准确地定位到需要获取数据信息的代码段,从而获取到需要的数据信息,可以将其用于进一步的开发、加固等,效率高,实用性好。

Method and device for compiling dynamic link library SO file of Android installation package

The invention discloses a method and a device for compiling a dynamic link library SO file of a Android installation package. The method comprises the following steps: read SO SO file to compile equipment in memory; for at least one of the specified section in the SO file, locate the specified starting address section; according to the starting address of the specified section to the location, access to the information stored in the specified section. The technical scheme of the addressable memory, the code segment accurately to obtain data and information, and access to the data needed, which can be used for further development and strengthening, high efficiency and good practicability.

【技术实现步骤摘要】
一种编译安卓安装包的动态链接库SO文件的方法和装置
本专利技术涉及计算机
,具体涉及一种编译安卓安装包的动态链接库SO文件的方法和装置。
技术介绍
随着技术的不断发展,安卓应用程序在开发过程中往往不再单纯依赖于JAVA开发环境,也逐渐利用JAVA的JNI(JavaNativeInterface,JAVA本地接口)机制,开发一些在其他语言环境下编写的文件,例如,动态链接库SO、DLL文件等。这些文件可以通过JNI机制被安卓系统调用,实现更多功能。但也因为如此,对这些文件的加固是开发者们不断探求的过程,而在加固过程中,往往要对原SO文件进行编译,获取其中的一些信息,如何准确、快速地获取到需要的信息是亟待解决的问题。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的编译安卓安装包的动态链接库SO文件的方法和装置。依据本专利技术的一个方面,提供了一种编译安卓安装包的动态链接库SO文件的方法,包括:读取SO文件到SO文件编译设备的内存中;对所述SO文件中的至少一个指定节,定位指定节的起始地址;根据定位到的指定节的起始地址,获取该指定节存储的数据信息。可选地,所述定位指定节的起始地址包括:获取所述SO文件的起始地址;计算所述指定节在所述SO文件中的文件偏移;将所述指定节在所述SO文件中的文件偏移与所述SO文件的起始地址之和作为指定节的起始地址。可选地,所述计算所述指定节在所述SO文件中的文件偏移包括:获取所述SO文件的起始虚拟地址;获取所述指定节的起始虚拟地址;将所述指定节的起始虚拟地址与所述SO文件的起始虚拟地址作差,所得的差再与所述SO文件的起始地址求和,将所得的和作为所述指定节在所述SO文件中的文件偏移。可选地,所述获取所述SO文件的起始虚拟地址包括:从所述SO文件编译设备的SO文件编译器中读取所述SO文件的起始虚拟地址。可选地,所述获取所述指定节的起始虚拟地址包括:解析所述SO文件的dynamic段;从所述dynamic段查找出与所述指定节对应的Elf32_Dyn项;从与所述指定节对应的Elf32_Dyn项中读取d_ptr的值,将其作为所述指定节的起始虚拟地址。可选地,所述指定节为.dynstr节和/或.dynsym节。可选地,所述获取该指定节存储的数据信息包括:获取.dynstr节中存储的导入符号和/或导出符号的符号名;和/或,获取.dynsym节中存储的导入符号和/或导出符号的结构描述信息。可选地,该方法还包括:根据指定的导入符号和/或导出符号的符号名和/或结构描述信息,生成与指定的导入符号和/或导出符号的动态注册逻辑;对所述SO文件增加外壳,得到加固的SO文件;在所述外壳中写入所述指定的导入符号和/或导出符号的动态注册逻辑。可选地,所述对所述SO文件增加外壳包括:将所述SO文件转换为二进制形式,将得到的二进制形式的SO文件添加到所述外壳中。可选地,该方法还包括:将所述加固的SO文件打包到对应的安卓安装包中,以使所述安卓安装包被安装后,每次启动对应的应用时,由所述外壳根据所述动态注册逻辑,将所述SO文件中指定的导入符号和/或导出符号的相关信息动态注册到所述外壳中。可选地,该方法在所有步骤前进一步包括:对安卓安装包进行解包,得到安卓安装包的至少一个SO文件。依据本专利技术的另一方面,提供了一种编译安卓安装包的动态链接库SO文件的装置,包括:SO文件读取单元,适于读取SO文件到SO文件编译设备的内存中;定位单元,适于对所述SO文件中的至少一个指定节,定位指定节的起始地址;数据信息获取单元,适于根据定位到的指定节的起始地址,获取该指定节存储的数据信息。可选地,所述定位单元,适于获取所述SO文件的起始地址;计算所述指定节在所述SO文件中的文件偏移;将所述指定节在所述SO文件中的文件偏移与所述SO文件的起始地址之和作为指定节的起始地址。可选地,所述定位单元,适于获取所述SO文件的起始虚拟地址;获取所述指定节的起始虚拟地址;将所述指定节的起始虚拟地址与所述SO文件的起始虚拟地址作差,所得的差再与所述SO文件的起始地址求和,将所得的和作为所述指定节在所述SO文件中的文件偏移。可选地,所述定位单元,适于从所述SO文件编译设备的SO文件编译器中读取所述SO文件的起始虚拟地址。可选地,所述定位单元,适于解析所述SO文件的dynamic段;从所述dynamic段查找出与所述指定节对应的Elf32_Dyn项;从与所述指定节对应的Elf32_Dyn项中读取d_ptr的值,将其作为所述指定节的起始虚拟地址。可选地,所述指定节为.dynstr节和/或.dynsym节。可选地,所述数据信息获取单元,适于获取.dynstr节中存储的导入符号和/或导出符号的符号名;和/或获取.dynsym节中存储的导入符号和/或导出符号的结构描述信息。可选地,该装置还包括:加固单元,适于根据指定的导入符号和/或导出符号的符号名和/或结构描述信息,生成与指定的导入符号和/或导出符号的动态注册逻辑;对所述SO文件增加外壳,得到加固的SO文件;在所述外壳中写入所述指定的导入符号和/或导出符号的动态注册逻辑。可选地,所述加固单元,适于将所述SO文件转换为二进制形式,将得到的二进制形式的SO文件添加到所述外壳中。可选地,该装置还包括:打包单元,适于将所述加固的SO文件打包到对应的安卓安装包中,以使所述安卓安装包被安装后,每次启动对应的应用时,由所述外壳根据所述动态注册逻辑,将所述SO文件中指定的导入符号和/或导出符号的相关信息动态注册到所述外壳中。可选地,该装置还包括:解包单元,适于对安卓安装包进行解包,得到安卓安装包的至少一个SO文件。由上述可知,本专利技术的技术方案,在读取SO文件到SO文件编译设备的内存后,定位SO文件中至少一个指定节的地址,从该地址获取指定节中存储的数据信息。该技术方案通过内存寻址,快速准确地定位到需要获取数据信息的代码段,从而获取到需要的数据信息,可以将其用于进一步的开发、加固等,效率高,实用性好。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的一种编译安卓安装包的动态链接库SO文件的方法的流程示意图;图2示出了根据本专利技术一个实施例的一种编译安卓安装包的动态链接库SO文件的装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的一种编译安卓安装包的动态链接库SO文件的方法的流程示意图,如图1所示,该方法包括:步骤S110,读取SO文件到SO文件本文档来自技高网...
一种编译安卓安装包的动态链接库SO文件的方法和装置

【技术保护点】
一种编译安卓安装包的动态链接库SO文件的方法,其中,该方法包括:读取SO文件到SO文件编译设备的内存中;对所述SO文件中的至少一个指定节,定位指定节的起始地址;根据定位到的指定节的起始地址,获取该指定节存储的数据信息。

【技术特征摘要】
1.一种编译安卓安装包的动态链接库SO文件的方法,其中,该方法包括:读取SO文件到SO文件编译设备的内存中;对所述SO文件中的至少一个指定节,定位指定节的起始地址;根据定位到的指定节的起始地址,获取该指定节存储的数据信息。2.如权利要求1所述的方法,其中,所述定位指定节的起始地址包括:获取所述SO文件的起始地址;计算所述指定节在所述SO文件中的文件偏移;将所述指定节在所述SO文件中的文件偏移与所述SO文件的起始地址之和作为指定节的起始地址。3.如权利要求2所述的方法,其中,所述计算所述指定节在所述SO文件中的文件偏移包括:获取所述SO文件的起始虚拟地址;获取所述指定节的起始虚拟地址;将所述指定节的起始虚拟地址与所述SO文件的起始虚拟地址作差,所得的差再与所述SO文件的起始地址求和,将所得的和作为所述指定节在所述SO文件中的文件偏移。4.如权利要求3所述的方法,其中,所述获取所述SO文件的起始虚拟地址包括:从所述SO文件编译设备的SO文件编译器中读取所述SO文件的起始虚拟地址。5.如权利要求3所述的方法,其中,所述获取所述指定节的起始虚拟地址包括:解析所述SO文件的dynamic段;从所述dynamic段查找出与所述指定节对应的Elf32_Dyn项;从与所述指定节对应的Elf32_Dyn项中读取d_ptr的值,将其作为所述指定节的...

【专利技术属性】
技术研发人员:吴乐
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1