大家好,我是小鱼,我们大家都是了解一下什么是汇编语言,我们又该如何去学习这门课,假设说我是0基础是不是可以学习呢,我用很负责任话说自然是可以的,这门课有一点是要注意的,需要耐心,如果你烦躁有些代码,那你就可能要前功尽弃了.
我们高级语言中,可能是这样的代码,就是说 类型 A=数据,给定义一个变量,如果是在逻辑,可能是说用if,while,等等.你有没有想过一个问题,你这个if,其实就是汇编的一个比较代码,其实意义是一样的.比如说cmp,有时候比较成功也是发生跳转=>
我们需要了解一下,汇编语言来历,你可以认为,它不属于语言也对,因为刚开始就是助记符,计算机由01 这样的后来到汇编,这样方便了很多,运算加减乘除
然后就是需要注意汇编我们的课程如下:
80386常用寄存器
一、常用寄存器
1.1 通用寄存器
1.2 段寄存器
1.3 程序状态与控制寄存器
二、常用基本指令
2.1 数据传送指令
2.2 算术运算指令
2.2.1 加法指令
2.2.2 减法指令
2.2.3 乘法指令
2.2.4 除法指令
2.3 逻辑运算和移位指令
2.3.1 逻辑运算指令
2.3.2 移位指令
2.3.3 循环移位指令
2.4 控制转移指令
2.4.1 无条件转移指令
2.4.2 条件转移指令
PLT表和GOT表
1、Linux编译过程
1.1 预处理
1.2 编译
1.3 汇编
1.4 链接
2、静态编译动态链接
静态编译
动态链接
3、延迟绑定
3.1 重定向
3.2 GOT表
3.3 PLT表
4、GOT表的攻击利用
栈溢出基本原理
1、函数栈调用原理
1.1 参数逆序入栈
1.2 保存返回地址
1.3 保存(主调函数的)栈基地址
1.4 进入函数执行
1.5 清理(被调函数的)局部变量
1.6 恢复(主调函数)函数栈
1.7 恢复EIP,清理参数
2、栈溢出
3、ROP技术
3.1 32位
3.2 64位
格式化字符串漏洞
1、格式化字符串原理
2、格式化字符串漏洞
大端 一般书写
小端
GLIBC HEAP
1、内存分配器
1.1 HEAP
1.2 内存分配器PTMALLOC2
2、PTMALLOC数据结构
2.1 PTMALLOC 管理概述
2.2 CHUNK结构解析
2.3 CHUNK的空间复用
2.4 BINS介绍
2.5 堆段的产生和初始化
2.51 TOP CHUNK
2.6 FAST BIN
2.7 SMALL BIN
2.8 UNSORTED BIN
2.9 LARGE BIN
3、MALLOC/FREE概述
3.1 MALLOC
3.1.1 _LIBC_MALLOC
3.1.2 _INT_MALLO
3.2 FREE
3.2.1 __LIBC_FREE
3.2.2 _INT_FREE
之后呢,我们学完这些我们需要走向逆向的基础,用C++和易语言,你要在od中理解每一步什么意思
80386常用寄存器
一、常用寄存器
1.1 通用寄存器
EAX:累加寄存器
EBX:基址寄存器
ECX:计数寄存器
EDX:I/O指针–数据寄存器
ESI:(字符串操作源指针)源变址寄存器
EDI:(字符串操作目的指针)目的变址寄存器、
ESP:堆栈指针寄存器,存放对战的栈顶地址,不可做为通用寄存器
EBP:基址指针寄存器,表示栈区域的基地址,保存ESP,函数返回时把值返回ESP
这个东西你没有必要去背他,之后我会用od跟你讲它是啥意思,我们下一节再见