pwnable.kr之leg ARM指令初步了解

汇编语言分为好多种,在这道题中展示的是ARM指令集,ARM指令集还包含一种thumb指令集,thumb指令集的出现时为了应对早起的开发者面对的内存不足而设计的,因为thumb指令集和ARM指令集看起来没什么不一样,但是在生成的时候,thumb指令集可以使得可执行文件更小一点。

ARM到thumb之间的跳转互换用的是bx,blx。后来由于在开发过程中容易被跳来跳去弄昏头,所以发明了thumb2指令,具体执行的时候自动判断采用ARM还是thumb指令。

其中在本题目中需要了解的是

1.      pc寄存器,相当于我们在熟悉的x86指令下的EIP,不过,它总是指向当前指令加8的位置,在thumb指令集下指向当前指令加4的位置。其实也就是当前指令两条后的位置。保证CPU处理程序时形成一个流水线。

2.      lr寄存器,保存着函数的返回地址。

3.      r0寄存器,类似于x86下的eax,常用来保存返回值

4.      这里的函数建立堆栈的过程,不是以前的push ebp,mov esp ebp了。其实看一看开头结尾还是很好理解的。就是加一块栈空间。

5.      bl指令是用来跳转的,类似于jmp。

那么我们在做这道题目时就很好做了。

         计算机体系结构不会变,不论什么指令,最终都是做的大方向上一样的事情,确实一开始看到一套新的指令会一脸懵逼,但是只要掌握了一门,再把其对应到我们之前学的就好了。所以还是先集中精力吃透一套指令。因为本人机器是x86架构的,所以就从x86学起吧。以后再分享学习汇编的笔记。

但是今天这道题介绍的只是毛毛雨。而且,还听说好像还有一套MIPS指令,CTF逆向中也会用到,以后再看。路漫漫其修远兮~。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值