从pwnable leg 中学到的arm常用tips

看了https://r00tk1ts.github.io/2018/03/07/leg/的wp后才做出来的

LR就是连接寄存器(Link Register,LR)(R14)

    在ARM体系结构中LR的特殊用途有两种:

        一是用来保存子程序返回地址 保存子程序返回地址。使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回;

        二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。

    所以在这道题目中我们会去看哪里调用了key3然后多加4得到lr的值(其实是pc-4,因为pc=当前+8)

SP(stack pointer)就是堆栈指针

寄存器pc(r15)在arm状态下(指令长度为4,RISC等长指令集),总是指向当前指令(正在执行)+8处

thumb状态下每次+4 (thumb状态每条指令是2字节长)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值