逆向-汇编1

354 阅读2分钟

CPU & 寄存器

寄存器的作用是进行数据的临时存储,CPU的运算速度很快,为了性能,CPU在内部开辟了一块临时存储区域,在进行运算时先将数据从内存复制到这块临时存储区域中,运算时就在这块区域中进行,称这块临时存储区域为寄存器

对于arm64系的CPU来说,如果寄存器以x开头则表明是一个64位的寄存器,如果以w开头则表明是一个32位的寄存器,其中32位寄存器是64位寄存器的低32位部分,并不是独立存在的

- 可以通过改变寄存器的内容来实现对CPU的控制
- 不同的CPU,寄存器的个数,结构是不同的

浮点寄存器

截屏2021-04-01 上午11.20.45.png

通用寄存器

  • 通用寄存器也叫数据地址寄存器,通常用来做数据计算的临时存储、累加、计数、地址保存等功能
  • arm64拥有32个64位的通用寄存器x0~x32,以及XZR(零寄存器)
    • w0~w28是32位的,因为64位CPU可以兼容32位的,所以可以使用64位寄存器的低32位
    • w0是x0的低32位

截屏2021-04-01 下午2.47.02.png 向寄存器里存入-1 截屏2021-04-01 下午3.11.40.png

pc寄存器

  • pc寄存器为指令指针寄存器,它表示了CPU当前要读取指令的地址
  • 在内存和磁盘上数据和指令没有区别,都是二进制信息
  • CPU将pc寄存器指向的内存单元内容看作是指令
  • 如果内存中的某段指令被CPU执行过,那么它所在的内存单元必定被pc指向过 截屏2021-04-01 下午3.25.00.png 通过修改pc寄存器的值来改变汇编指令的执行顺序 截屏2021-04-01 下午3.46.35.png

bl指令

arm64提供了mov来表示传送指令,可以用来修改大部分的值,但是mov不能修改pc的指,arm64提供了bl指令来修改pc的值