视频分享地址: https://spa|

明月照江江

园龄:7年4个月粉丝:34关注:0

📂CTF
🔖CTF
2023-03-13 17:04阅读: 90评论: 0推荐: 0

【Android 逆向】【ARM汇编】 堆栈

arm 四种栈

1 空栈
栈指针指向空位,每次存入时可以直接存入然后栈指针移动一格;而取出时需要先移动一格才能取出
2 满栈
栈指针指向栈中最后一格数据。每次存入时需要先移动栈指针一格再存入。取出时可以直接取出,然后再移动栈指针
3 增栈
栈指针移动时向地址增加的方向移动的栈
4 减栈
栈指针移动时向地址减小的方向移动的栈

arm 8种后缀

用于多寄存器寻址
ia increase after 先传输 再地址+4
ib increase before 先地址+4,再传输
da decrease after 先传输 再地址-4
db decrease before 先地址-4 再传输

用于堆栈寻址
fd full decrease 满递减栈 (重点掌握 ARM用)
ed empty decrease 空递减栈
fa 满递增栈
ea 空递增栈
arm 是满递减栈(FD)
stmfd sp!, {r1-r4} 
等价于 stmfd sp!, {r1, r2, r3, r4} 
等价于 push {r1, r2, r3, r4}, sp = sp -寄存器数量*4(个字节)

入栈 从右往左  r4 -> r1

ldmfd sp!, {r1-r4}
出栈 从左往右  r1 -> r4

本文作者:明月照江江

本文链接:https://www.cnblogs.com/gradyblog/p/17212101.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   明月照江江  阅读(90)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起