
; 01
安卓手机打开so文件需要下载Native Libs Monitor这个app,这个应用可以帮助我们理解手机上安装的APK用到了哪些so文件,以及so文件来源于哪些函数库或者框架。我们也可以自己对app反编译来获取这些信息。
so文件是手机的一些运行库文件,在系统lib的文件夹下,置换移植其他系统的程序也需要修改更换相关so文件;没有它系统软件不能运行,哪部分损坏就影响相对功能,电话接打,通讯录,相机等等都是要依赖so文件使用的。so文件需要资深安卓大师更改,一般都是现成的搬运移植,打开它没有什么意义。安卓手机想要查看so文件就需要下载Native Libs Monitor。
so是shared object的缩写,见名思义就是共享的对象,机器可以直接运行的二进制代码。大到 *** 作系统,小到一个专用软件,都离不开so。so主要存在于Unix和Linux系统中。so是与平台相关的二进制机器码,Android应用支持的cpu架构取决于APK中位于lib或jniLib目录中的so文件。
由于Android基于Linux Kernl的,也继承了Linux中所有so相关的设计。
除了系统方面的原因,Android开发者还要知道以下几点:
so机制让开发者最大化利用已有的C和C++代码,达到重用的效果,利用软件世界积累了几十年的优秀代码。
so是二进制,没有解释编译的开消,用so实现的功能比纯java实现的功能要快。
so内存分配不受Dalivik/ART的单个应用限制,减少OOM。
nm 命令 可以看到符号表(不是所有库都包含这些信息,因为代码在执行的时候只用地址,这些信息是调试用的,正式的版权软件不一定包含这些),其中可以看到函数名,和变量名。但是具体传入参数的类型和其他信息,其实在标准C和C++在二进制库文件中是不包括这些信息的,进栈和出栈是在编译阶段决定的。
gdb 调试so所属应用程序的执行,看它的调用函数的传入和传出。
反编译可以获得一些信息,不过过程复杂,因为你要观察汇编代码和地址之间的跳转。如果你只是开发程序的话,获得完善的信息,你只能查看手册。
但是如果你是想用某个版权软件的某个so的功能的话只能反编译分析代码了。如果你具备反编译技能的话,应该不会问这个问题了。所以别伤脑筋了。你火候到了自然都有办法了。
如果借此以营利是违法的。
你拿到一个libABCso库,却没有头文件,这时候你该如何知道这个库中定义了哪些函数呢?
Linux/Mac提供了一个神奇的命令: nm 。看例子:
命令的用法是:
以上就是关于安卓手机如何打开.so文件全部的内容,包括:安卓手机如何打开.so文件、有个.so(unix 动态链接库)文件,有办法可以查看它都提供什么样的函数或接口可以调用吗谢谢。、在没有头文件时,如何查看安卓so库中定义的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)