【Android 逆向】【ARM汇编】 堆栈
2023-04-18 15:49:13 时间
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
相关文章
- 数字人民币场景战白热化 专家称要尽快与第三层运营推广合作
- 英伟达 400 亿收购 ARM 计划,或将遭到英国政府否决
- Python+Appium实现APP自动化测试
- 如何创建Django项目
- 小程序开发环境搭建
- 安卓so ida动态调试
- 人人都可以使用的NFC技术 - 非手机数字化应用
- 微信小程序 | 小程序系统API调用
- 2022年微信小程序授权登录的最新实现方案
- 微信小程序转uniapp的迁移步骤及遇到的问题
- 19、节流和防抖的区别以及应用场景的理解
- 微信小程序简洁登录页面(附源码)
- 开发微信订阅消息推送
- Android短信监听实现,及Android4.4之后短信机制变更
- 微信小程序获取用户openid
- Django同时支持http/https(转载)
- 微信小程序获取当前的位置
- 原生微信小程序/uniapp使用空格占位符无效解决方法
- Node.js error: ERR_OSSL_EVP_UNSUPPORTED
- 【微信小程序】web-view 无法打开该页面不支持打开