引言
Moto E2是一部具有相当性价比的Linux智能手机,但是由于某些商业上的原因并没有开放其本地的图形库SDK,导致其竞争力与扩展性大幅度的降低。本文以我在编写其应用中获得的经验,介绍如何在没有相关资料的情况下导出对应的头文件并且编写相应的程序代码。
注意,本文并非面对一般的手机用户,如果想顺利的阅读这篇文章,请首先学习一些相关的C/C++知识以及编译知识。当然,由于本人所学限制,可能有错误,甚至是缪误,也欢迎众多高手斧正讨论。另外,这篇文章所描述的方法并不只限于Moto E2的EZX图形库的使用方法,理论上能够应用于任何类似的环境。
一. 原理
为了破解这些没有资料的动态连接库,首先必须理解在linux下面的程序编译。下面首先假定需要破解的动态连接库是某个系统的基础(例如,Moto E2手机的图形库即EZX,这是一个基于QT2.3.8的扩展图形库,也就是我们需要破解的部分),否则作为非通用性(仅对当前系统而言)没有任何的实际意义。
Linux的程序在链接库的使用方式上有三种。
1.编译时链接.a库文件并将起代码拷贝到生成的二进制文件中,运行时脱离.a库文件运行。
2.编译时链接.so库文件并将其作为引用生成二进制文件,运行时需要依赖相应.so文件。
3.在程序用以动态链接库的方式调用相关的.so库文件,在编译器不依赖这些.so文件,但是在运行期需要依赖这些.so文件。
作为现状来说,第一种方式首先被排