Ollydby命令

使用OD进行mov、xchg、lea、and、or、not、xor、add、sub、inc、dec、push、pop等汇编指令操作,并仔细观察每个指令执行后CPU寄存器(EAX、EBX、ECX、EDX、EDL、ESL、EBP、ESP、EIP及Eflags状态)、内存以及堆栈的变化。

  • 实验环境

操作环境:windows10

实验工具:Ollydby

  • 实验过程与分析

    • Mov指令

把mov dword ptr ds:[403020],eax指令写入反汇编窗口中执行

 前四位65 72 20 56变成了CC FF 19 00,Eax寄存器向内存地址[403020]传递了一个DWORD宽度的数据。数据以小尾方式存储,00403020地址连续占用了四个字节的地址

把mov word ptr ds:[403028],ax指令写入反汇编窗口中执行

前两位65 73变成了CC FF,ax寄存器向内存地址[403028]传递了一个WORD宽度的数据。数据以小尾方式存储,00403028地址连续占用了两个字节的地址

把mov byte ptr ds:[403030],al指令写入反汇编窗口中执行

前一位6F变成了CC,al寄存器向内存地址[403028]传递了一个BYTE宽度的数据。数据以小尾方式存储,00403030地址占用了一个字节的地址

  • Xchg指令

xhcg ax,bx ;交换16位寄存器的值

xchg ah,al ;交换8位寄存器的内容

xchg var1,bx;交换16位内存操作数和BX寄存器的内容

xchg eax,ebx ;交换32位寄存器内容

输入指令xchg eax,ebx,执行交换寄存器eax与寄存器ebx的数据

      输入指令xchg dword ptr ds:[403020],ebx,执行交换地址403020与寄存器ebx的数据,地址403020的数据以小尾方式存储,只交换了前四个数

输入指令xchg word ptr ds:[403028],cx,执行交换寄存器cx与地址[403028]的数据,只交换了前两个数据

 

  • Lea指令 

将内存单位的地址送至指定的寄存器

执行mov eax,dword ptr ds:[403000],cx指令,寄存器eax得到地址403000中的前四位数据48 65 6C 6C

 

 执行lea ebx,dword ptr ds:[403000]指令,寄存器得到地址403000的编号403000

  • And指令

执行·mov eax,0b指令

寄存器eax的值变成0b

执行and eax,9指令进行与操作,eax的值变为9(转换二进制后运算)

  • Or指令

执行mov eax,1100011b使eax的值为1100011b,再执行or eax,0000100b,进行或运算(只有同为0才为0),eax的值变为1100111b 

  • Not指令(逻辑取反)

1变0,0变1(二进制)

  • Xor指令(化为二进制进行按位异或,00得0,11得0,01得1)

执行xor eax,eax使eax值为00000000

将eax值改为12345678

执行两次xor eax,87654321后eax的值变为原来的12345678(第一次与自己异或得到0,第二次异或得到本身)

 

  •  Add指令

执行加法

 将bl的值加到al

  • Sub指令

执行减法,al值原为0019FF03,减去bl(0019FF02)后,al值为(0019FF01)

  • Adc指令(带进位加法)

  •  Sbb指令(带借位减法)

 Bl-Al,即0019FF03-0019FF02

  •  Inc指令

执行加一运算,al值由0019FF01变为0019FF02

  • Dec指令

执行减一

 原来的49变成48

 

  • Push指令

入栈顺序是先入栈序号低的寄存器到最低地址Push指令分别将12345678、1234、12进行入栈,esp的值依次减4

​​​​​​​

  • Pop指令

出栈顺序和入栈顺序相反

两次mov指令通过esp、ebp来获取上面入栈的值  

 Pop指令将入栈的数据送入eax、ebx、ecx;esp依次加4 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值