iOS逆向安防从入门到秃头--初识汇编(概念篇)

1,385 阅读3分钟

小谷秃头合集

  • 兄弟们都知道,学好逆向有个前提。会点汇编(因为有个重要的环节是 静态分析

  • 咱们初识一波~

1. 汇编的发展史

  • 大多数的兄弟们都知道--汇编会转变成机器语言让机器读取,,机器语言也可以转变成汇编,称为反汇编。我们简单了解下汇编机器语言的爱恨情仇.

1.1. 机器语言

  • 机器语言就是由01 组成的机器指令,可以让机器识别

1.2. 汇编语言

    1. 汇编语言早期是由助记符演变过来的
    1. 就是通过特定的指令,然后通过编译变成机器语言

1.3. 高级语言

    1. C/C++/java/OC/Swift这种,都被称为高级语言
    1. 高级语言可以理解为方便开发者开发的语言,然后通过编译器变成汇编语言

1.png

爱恨情仇图(偷来的)

1.4. 汇编的作用

  • 就一句话概括(听说很装波~):了解底层的程序员,都需要掌握的一门语言

1.5. 汇编的种类

    1. 汇编其实有好几种,在不同的CPU架构会有不同的指令集
    1. 不过目前看来开发者只需要研究arm64就可以了。(毕竟Mac都出M1了~)

2. 总线

  • 总线主要分为三种: 地址总线控制总线数据总线。(他的能力和用途,兄弟们就受下累查一下吧。😆)

2.1. 工作流程

    1. CPU会在地址总线确定内存的地址
    1. CPU会在控制总线传输读写命令
    1. 读操作数据总线返回数据给CPU|写操作CPU数据总线传输数据覆盖所在地址
    1. 偷了一波王爽老师-《汇编语言》的图

2.png

3. 进制

关于进制其实大家懂得都比我多。我就稍微装装,兄弟们不要拆穿。

3.1. 常用的进制

    1. 八进制由8个符号组成:0 1 2 3 4 5 6 7 逢八进一
    1. 十进制由10个符号组成:0 1 2 3 4 5 6 7 8 9 逢十进一
    1. 十六进制就是由16个符号组成:逢十六进一

我在多嘴一句,重点是由N个符号组成,逢N进一

3.2. 举例说明

    1. 十进制:0 1 3 5 7 9 a b c d 由10个符号组成,也是十进制。(这个也是加密了-自定义进制)
    1. 这个情况下。1 + 1 = 3哈哈

4. CPU 和 寄存器

4.1. CPU和寄存器的关系

    1. CPU主要是有3部分组成:寄存器运算器控制器
    1. 偷一波图:

3.png

4.2. 常见的寄存器

4.2.1. 浮点寄存器

  • 因为浮点数的存储以及其运算的特殊性,CPU中专门提供浮点数寄存器来处理浮点数

  • 浮点寄存器 64位: D0 - D31 32位: S0 - S31

4.2.2. 向量寄存器

  • 现在的CPU都支持向量运算了,主要是图形方面。向量RGBA

  • 向量寄存器 128位:V0-V31

4.2.3. 通用寄存器

  • 通用寄存器是我们打交道最多的。通常用来做数据计算临时存储做累加计数地址保存等功能

  • ARM64拥有有32个64位的通用寄存器 x0 到 x30,以及XZR(零寄存器),这些通用寄存器有时也有特定用途

32位所在的寄存器,在64位的地位区,而不是单独分出的寄存器 (32位是W0-W30)

4.2.4. PC寄存器

  • PC寄存器指令指针寄存器,它指向了CPU当前要读取指令的地址

这篇文章主要是一些概念,我也是刚开始研究逆向,希望和大家一起进步,也希望这篇博客对大家有帮助吧