- 0
- 0
- 约小于1千字
- 约 2页
- 2026-02-13 发布于北京
- 举报
arm汇编代码讲解2
1so文件信息
Elf文件查看工具:readelf--执行环境linux
参数
-显示so文件所有信息
-hELF文件头
-lProgramheader,动态加载时需要的信息
-SSectionheader静态加载分析时需要的信息。
-e同样头信息,elfheader,sectionheader,programheader
-s显示符号表
-d显示动态节
一般地,可以使用readelf工具来获得so的详细信息。
2SoHelper
可以用来快速的获取so的一些基本信息,提供较弱的汇编功能。
3so加载顺序
Soloaded-Init_array-JNI_onLoad-其他奇怪的函数-fini_array
4堆栈
堆栈用于保存函数中的临时变量,以及某些寄存器的值,退出时候用堆栈的数据来还原
运行环境,如寄存器等等。
5堆栈平衡原理
对于每个函数,堆栈总是平衡的。也即,函数进入前分配了多少堆栈空间,退出时需要
释放多少堆栈空间。
I
6临时变量与全局变量
①全局变量:
存在于程序内存数据中,所有函数都可以直接调用。
②临时变量:
存在于函数堆栈中,函数进入时分配空间(于堆栈中),函数退出时释放空间。
7指针
Inta=10;
Int*p=a;
P就是指针,它的值将指向a;
8二进制,八进制,十六进制
计算机底层都是使用二进制来存储数据的。而二进制,八进制与十六进制之间可以相互
转化。
二进制:0~1
八进制:0~7
十六进制:0~F
如0xE=01=1110(二进制)=14
9函数参数传递
Arm遵循ATPCS规则,前4个参数使用R0-R3传递,其他均通过堆栈传递。
II
原创力文档

文档评论(0)