PWN-汇编学习笔记

目录

一、汇编和PWN的关系

二、常用知识点

三、windows下搭建debug实验环境


一、汇编和PWN的关系

PWN需要对逆向了解,调试模式中会产生大量的汇编代码解读,需要对汇编有一定的基础。本文基于《汇编语言》第四版 王爽 一书进行一定知识点的提取和总结。

二、常用知识点

8086的CPU通用寄存器均为16位,可以存放两个字节,AX,BX,CX,DX四个寄存器存一般性数据。

ah:AX高位寄存器 al:AX地位寄存器

字节(byte):8位bit,存在8位寄存器中

字(word):两个字节,16位bit,存于16位通用寄存器中

段寄存器:CS/DS/SS/ES

段寄存器的由来:已知寄存器位数16,而地址总线为20位,要利用16位寄存器来访问20位的地址时,需要进行(16*段寄存器+偏移地址)=地址总线 的方式来进行寻址。

CS与IP寄存器:指示当前CPU要读取的指令地址,CS:代码段寄存器  IP:指令指针寄存器

设CS中为M,IP为N,8086CPU将从Mx16+N读取指令开始执行,也称为:CS:IP指向内容作为指令执行。

指令运行的全过程:

CS:IP通过地址加法器,经过输入输出电路、20位地址总线进入内存找到地址,提取机器指令,返回到指令缓冲器及执行控制器,执行指令后根据指令长度,IP加值长度。

jump指令:jump CS:IP 相当于执行CS:IP的命令

例子:jump 2AE3:3 执行后:CS=2AE3H,IP=0003H,CPU从2AE33H处读取信息

Jump ax 相当于:mov IP,ax,即将某一寄存器里的值赋值给IP

三、windows下搭建debug实验环境

实验工具(配合上述教科书)

SS:SP指向栈顶元素

栈的push动态过程: 

栈的pop动态过程:

 POP及PUSH指令:

 

用例:

与结束相关的指令:

类[BX]用法:

 mov ax,[bx]

将bx寄存器中值EA作为偏移量,ds寄存器中作为段地址SA,将SA:EA处数据送入ax中,即:
(ax) = ((ds)*16 + (bx))

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值