[发明专利]一种加壳动态链接库加载方法及装置在审
申请号: | 201910492530.5 | 申请日: | 2019-06-06 |
公开(公告)号: | CN110378081A | 公开(公告)日: | 2019-10-25 |
发明(设计)人: | 陈子为 | 申请(专利权)人: | 厦门网宿有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/60;G06F9/445 |
代理公司: | 北京华智则铭知识产权代理有限公司 11573 | 代理人: | 王昌贵 |
地址: | 361000 福建省厦门市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态链接库 加载 指令集架构 应用程序 应用程序加载 加载请求 预设文件 运行平台 匹配 查找 应用 | ||
本发明提供了一种加壳动态链接库加载方法及装置,该方法包括:基于应用程序的动态链接库的加载请求,确定应用程序所运行平台的指令集架构;在预设文件目录下查找与所述指令集架构相匹配的加壳动态链接库;对所述加壳动态链接库进行解壳,以使所述应用程序加载解壳后得到的动态链接库。应用本发明实施例提供的方案,能够实现加载加壳动态链接库。
技术领域
本发明涉及计算机应用技术领域,特别涉及一种加壳动态链接库加载方法及装置。
背景技术
动态链接库(so,shared object)是linux系统中一种常见的可执行代码的二进制格式,相比较静态链接库来说,有节省空间,运行时能够动态申请并调用等特点。
Android系统本质上属于linux系统的一种,在Android系统的发展过程中,CPU架构由最早的armeabi不断发展出armeabi-v7a,arm64-v8a,x86,x86_64等平台,然而,各个平台所支持的指令集架构不尽相同,基于此,动态链接库需要适配不同平台的指令集架构,也就是动态链接库需要与平台的指令集架构相匹配,才能够被该平台内运行的应用程序所加载。
相关技术中,Android系统中的应用程序加载动态链接库时,需要预先将编译好的动态链接库存放在Android系统指定的目标目录下,使得在应用程序运行时能够在目标目录下查找到与指令集架构相匹配的动态链接库进行加载。
然而,动态链接库存在容易被逆向而暴露核心代码的安全隐患,因此,在开发动态链接库的过程中通常会利用特定的算法进行加密和压缩处理,俗称加壳。但是,加壳动态链接库并非系统可以识别的动态链接库,那么,即使将加壳动态链接库存放到Android系统指定的目标目录下,系统也无法在目标目录下查找到与指令集架构相匹配的动态链接库进行加载,从而导致应用程序无法正常运行。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种加壳动态链接库加载方法及装置。所述技术方案如下:
第一方面,提供了一种一种加壳动态链接库加载方法,所述方法包括:
基于应用程序的动态链接库的加载请求,确定所述应用程序所运行平台的指令集架构;
在预设文件目录下查找与所述指令集架构相匹配的加壳动态链接库;
对所述加壳动态链接库进行解壳,以使所述应用程序加载解壳后得到的动态链接库。
可选的,所述基于应用程序的动态链接库的加载请求,确定所述应用程序
所运行平台的指令集架构,包括:
响应于所述应用程序的动态链接库的加载请求,调用目标目录下接口动态链接库的接口,得到返回值;
根据所述返回值确定所述应用程序所运行平台的指令集架构。
可选的,所述方法还包括:
分别预先对与各个平台的指令集架构相匹配的动态链接库进行加壳处理,得到预定扩展名的加壳动态链接库;
将所得到的加壳动态链接库存放在所述预设文件目录下。
可选的,所述方法还包括:
编写JNI接口,在编译所述JNI接口的过程中,分别加入用于表征各个平台的指令集架构的宏定义,并设置用于表征所述指令集架构的数值,以获得各个所述平台的指令架构对应的所述接口动态链接库。
可选的,所述调用目标目录下接口动态链接库的接口,得到返回值的步骤,包括:
系统自动调用目标目录下的接口动态链接库的接口;
读取所述接口动态链接库中的宏定义;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门网宿有限公司,未经厦门网宿有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910492530.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种带有版权保护机制的出版物
- 下一篇:软件安全开发方法及系统