so加载流程(简单总结)
来源:互联网 发布:淘宝客贷款哪里进 编辑:程序博客网 时间:2024/06/05 01:30
作为一个android逆向刚开始的菜鸟,不自量力来总结一下so的加载流程,由于暂时水平有限,这里借助几篇网上大佬们的博客(侵删),自己简单总结自己所学,算作笔记,还会慢慢加深自己的理解,持续更新。
先来简单总结一下java层中so的加载流程,动态链接库(SO)加载原理
加载so,主要分为两个步骤find和load,这篇文章里讲述了加载so的大概流程和如何找到so位置。
我们需要加载的so文件位置,主要来自两个方面,一个是来自classLoader构造函数传进的libraryPath,一个是来自java.library.path这个环境变量的值。环境变量的值大部分情况下是在/vendor/lib , /system/lib 下
libraryPath 主要来自两个方向:一个是 data 目录下 app-lib 中安装包目录,比如:/data/app-lib/com.test-1,另一个方向就是来自于 apkpath+”!/lib/”+primaryCpuAbi 的地址了,比如:/data/app/com.test-1.apk!/lib/arm64-v8a
- native层下so的加载,android so加载
整篇文章以总结为主,短小精悍,虽然没有讲过多的细节,但是对于android逆向常用或者入门来讲,应用是够用了,也很希望能多多看到这样的文章,暂时水平有限,待学习的深入总有一天会回过头来从源码的角度,再分析so的加载流程。
这里借用这篇文章的一幅大概流程图,以作简单总结。
我们在ida动态调试时,常常需要将断点下在init,initArray或者JNI_OnLoad函数下,通过这篇文章,我们可以通过在linker下下断点的方式,到达我们的init,initArray,JNI_OnLoad函数。
具体方式可参考以下文章:JNI_OnLoad与init_array下断方法整理
讲了半天,还是在引用别人的博客,没办法,这些文章写的实在好,由衷佩服这些大佬,嗯,继续努力吧
- so加载流程(简单总结)
- Android JNI 加载 so 文件流程 (Android 6.0)
- JNI so库加载流程之System.loadLibrary流程分析
- android so文件加载连接简单理解
- Android dex的加载流程以及加固脱壳时机点简单总结
- AsyncHttpClient执行流程简单总结
- [LinuxC]加载动态链接库so程序简单实例
- 类加载过程简单总结
- Android源码分析实战之JNI so库加载System.loadLibrary流程分析
- JMS发送邮件简单流程总结
- JMS发送邮件简单流程总结
- Veins 数据包收发基本流程简单总结
- 动态加载so
- 动态加载so
- android studio 加载so
- so 加载过程
- A20 加载 so
- so加载不上
- 面向过程与面向对象的区别
- [dfs] Codeforces717E. Paint it really, really dark gray
- Logback输出日志到控制台的配置方法和源码分析
- Fresco加载GIF动图
- Spark算子[03]:mapPartitions,mapPartitionsWithIndex 源码实战案例分析
- so加载流程(简单总结)
- CL聚合签名
- linux:shell命令之软硬链接
- DB9 公头母头引脚定义及连接
- 数组类—StaticArray
- java 抽象类和接口
- 带你玩转Eclipse项目转成AndroidStudio项目
- 什么是PSU/CPU
- EasyPlayerPro RTMP播放器助力远程娃娃机直播抓娃娃技术方案