-
兄弟们都知道,学好逆向有个前提。会点
汇编(因为有个重要的环节是静态分析) -
咱们初识一波~
1. 汇编的发展史
- 大多数的兄弟们都知道--
汇编会转变成机器语言让机器读取,,机器语言也可以转变成汇编,称为反汇编。我们简单了解下汇编和机器语言的爱恨情仇.
1.1. 机器语言
机器语言就是由0和1组成的机器指令,可以让机器识别
1.2. 汇编语言
-
汇编语言早期是由助记符演变过来的
-
- 就是通过特定的指令,然后通过
编译变成机器语言
- 就是通过特定的指令,然后通过
1.3. 高级语言
-
- 像
C/C++/java/OC/Swift这种,都被称为高级语言
- 像
-
高级语言可以理解为方便开发者开发的语言,然后通过编译器变成汇编语言。
爱恨情仇图(偷来的)
1.4. 汇编的作用
- 就一句话概括(听说很装波~):了解底层的程序员,都需要掌握的一门语言
1.5. 汇编的种类
-
汇编其实有好几种,在不同的CPU架构会有不同的指令集
-
- 不过目前看来开发者只需要研究
arm64就可以了。(毕竟Mac都出M1了~)
- 不过目前看来开发者只需要研究
2. 总线
总线主要分为三种:地址总线,控制总线,数据总线。(他的能力和用途,兄弟们就受下累查一下吧。😆)
2.1. 工作流程
-
CPU会在地址总线确定内存的地址
-
CPU会在控制总线传输读写命令
-
读操作:数据总线返回数据给CPU|写操作:CPU从数据总线传输数据覆盖所在地址
-
- 偷了一波
王爽老师-《汇编语言》的图
- 偷了一波
3. 进制
关于
进制其实大家懂得都比我多。我就稍微装装,兄弟们不要拆穿。
3.1. 常用的进制
-
八进制由8个符号组成:0 1 2 3 4 5 6 7逢八进一
-
十进制由10个符号组成:0 1 2 3 4 5 6 7 8 9逢十进一
-
十六进制就是由16个符号组成:逢十六进一
我在多嘴一句,重点是由
N个符号组成,逢N进一
3.2. 举例说明
-
十进制:0 1 3 5 7 9 a b c d 由10个符号组成,也是十进制。(这个也是加密了-自定义进制)
-
- 这个情况下。
1 + 1 = 3哈哈
- 这个情况下。
4. CPU 和 寄存器
4.1. CPU和寄存器的关系
-
CPU主要是有3部分组成:寄存器,运算器和控制器
-
- 偷一波图:
4.2. 常见的寄存器
4.2.1. 浮点寄存器
-
因为浮点数的存储以及其运算的特殊性,
CPU中专门提供浮点数寄存器来处理浮点数 -
浮点寄存器64位:D0 - D3132位: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当前要读取指令的地址
这篇文章主要是一些概念,我也是刚开始研究逆向,希望和大家一起进步,也希望这篇博客对大家有帮助吧