汇编笔记【滴水逆向】附带课程视频

2022年01月14日 阅读数:3
这篇文章主要向大家介绍汇编笔记【滴水逆向】附带课程视频,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

汇编笔记【滴水逆向】附带课程视频c++

第一课(课程概要)程序员

  1. 高级语言—(编译器)—>汇编语言—(编译器)—>机器语言
  2. 不是语言变得强大了,而是编译器变得强大了
  3. c和c++的关系:相比C语言,对于c++来说,编译器替咱们作的事情更多了;C语言是学好c++的基础

4.程序员的“Chain of contempt”(无恶意,仅供一乐)微信

 

4.学习汇编能够了解程序的本质数据结构

第二课(进制):函数

  1. 为何要学习进制:计算机只认识二进制,也就是0和1,为了更好地学习计算机,咱们首先要深刻理解什么是进制
  2. 学习进制的障碍:老是以十进制为依托去考虑其余进制,须要运算时也老是先转换成十进制(仅仅是由于咱们对十进熟悉,因此才转换);每一种进制都是完美的,想学好进制首先要忘掉十进制,也要忘掉进制之间的转换
  3. 进制的定义:N进制的定义:由N个符号组成,逢N进1;例如

 

第三课(进制运算):工具

  1. 八进制运算:

2+3=5         2*3=6         4+5=11         4*5=24         277+333=632         276*54=20250学习

八进制加法表:编码

 

八进制乘法表:spa

 

  1. 进制总结:每种进制都是完美的,它自身就是一个完整的体系,能够直接作运算

2.计算机为何使用二进制:计算机时须要电的,电路只有两种状态:1真(通电) 0假(未通电)操作系统

3.计算机中存储的任何文件、接收的指令都是由0和1组成的,例如咱们能够查看一个【*.exe应用程序】:

4.16进制是二进制的简写形式:

 

第四课(数据宽度):

  1.  1双字(DoubleWord)=2字(Word)=4字节(Byte)=32位(bit)  
  2. 存储范围:   字节:0--0xFF    字:0--0xFFFF 双字:0--0xFFFFFFFF

若是要存储的数据超过最大宽度,那么多余的数据将被丢弃

第5、六课(无符号数和有符号数&&原码反码和补码):

  1. 无符号数:不存在负数,直接2进制转十进制
  2. 有符号数:正数和无符号数编码规则同样,负数以补码的形式在计算机中存储
  3. 编码规则:不一样的文件有不一样的编码规则:例如给你一串二进制数:你首先要问这一串二进制数存储的是什么(数值、文本、图像、音频、视频、仍是应用程序?),若是是数字,再问是有符号仍是无符号
  4. 原码:最高位为符号位,其他各位为其数值自己的绝对值
  5. 反码:正数:反码与原码相同;负数:符号位为1,其他位对原码取反
  6. 补码:正数:反码与原码相同;负数:符号位为1,其他位对原码取反加1

第七课(计算机不会作加法):

 

  1. 逻辑运算:【与(and)】{1+1=1}、【或(or)】{1+0=1}、【非(not)】{~1=0}、【异或(xor)】{两数不一样时为1,同时为0}
  2. 左移运算[shl(<<)]:各二进制位所有左移若干位,高位丢弃,低位补零
  3. 右移[A:shr(>>)或B:sar(>>)]:各二进制位所有由移若干位,低位丢弃,高位A:(补零)或B:(补符号位)

第八课(通用寄存器):

  1. 计算机如何作加法:

 

第九课(汇编环境搭建):

  1. 学汇编不是为了写代码,而是为了理解程序的本质
  2. 利用工具:Olldbg或x64dbg

第十课(通用寄存器):

  1. 存读数据速度:CPU>内存>硬盘
  2. 32位通用寄存器:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI
  3. MOV指令:mov 当即数,寄存器   或      mov 寄存器,当即数

4.

 

第十一课(内存):

 

  1. 内存地址:内存太大无法起名字,因此只能用编号,这个编号又称为内存地址
  2. 内存地址的5种形式

PTR DS:[当即数]

PTR DS:[reg]

PTR DS:[当即数+reg]

PTR DS:[reg+reg*{1,2,4,8}]

PTR DS:[reg+reg*{1,2,4,8}+当即数]

第十二课(数据的存储模式):

1.

 

第十三课(经常使用汇编指令):

 

 

 

 

EFL:标志寄存器:其中第十位(DF)为0时,ESI和EDI运算完成后加1/2/4;第十位(DF)为1时,ESI和EDI运算完成后减1/2/4;

 

 

 

 

第十四课(堆栈):

  1. 什么是堆栈:就是一块内存,操做系统在程序启动的时候已经分配好的,供程序执行时使用;和数据结构中的堆栈无关
  2. 堆栈使用时先从大地址开始用,当使用完,若是再继续使用时,会发生堆栈溢出
  3. 结合ollydbg查看堆栈
  4. ESP:栈指针寄存器
  5. 修改EIP的值:JMP,CALL;CALL与JNP区别:call在修改EIP值的同时,还把CALL指令下一行的地址存到堆栈中
  6. RET指令:栈顶指针加4,把原来栈顶指针中的值取出来放到EIP中

第十五课(拓展篇:反调试之Fake8):

  1. 单步步入(F7)和单步步过(F8)

 

第十六课(汇编中的函数):

  1. 函数就是一系列指令的集合,为了完成某个会重复使用的特定功能
  2. 如何执行一个函数:JMP  或  CALL

通常来说,返回值存到EAX中

第十七课(堆栈平衡):

  1. 若是要返回父程序,则当咱们在堆栈中进行堆栈操做的时候,必定要保证在RET这条指令以前,ESP指向的是咱们压入栈中的地址
  2. 若是经过堆栈传递参数了,那么在函数执行完毕后,要平衡参数变化致使的堆栈变化

 

 

第十八课(ESP寻址):

1.使用寄存器传递参数

2.使用堆栈来传递参数

 

 

第十九课(EBP寻址、JCC指令):

1.

 

2.

 

 

声明:

  1. 笔记上的课程号和视频可能有所不一样,可是笔记内容是依照课程视频写的
  2. 课程资源:【百度网盘】

连接: https://pan.baidu.com/s/11YdweHrIap_79NE4CYvLJw

提取码: e7k7

  1. 若须要word文档笔记,请加微信获取(备注:汇编笔记):