zoukankan      html  css  js  c++  java
  • 汇编操作内存地址、堆栈

    1. 32位  16位  8位通用寄存器

      EAX ECX EDX EBX ESP EBP ESI EDI

      AX CX DX BX SP BP SI DI

      AL CL DL BL AH CH DH BH 

    2.寄存器的结构:EAX-AX-AH-AL的对应关系

      EAX-AX-AH-AL是一个寄存器的不同位

    3.  操作内存的时候,影响的可能不是一个数据。

      比如   mov word ptr ds:[0x0012FFDC],0xAA      影响的不仅仅是 0x12FFDC这一个内存编号的数据,也附带影响了下一个内存编          号的数据

    4.寻址方式:

      方式一:[立即数]     

     

         a.读取内存的值   

                  MOV EAX,DWORD PTR DS:[0X13FFC4]

                  MOV EAX,DWORD PTR DS:[0X13FFC8]     

        

        b.内存中写数据  

                  mov dword ptr ds:[0x13ffc4],eax            

                     mov dword ptr ds:[0x13ffc8],ebx 

        

        c.获取内存编号  

                  lea eax,dword ptr ds:[0x13ffc4]

                       lea eax,dword ptr ds:[esp+8]

      方式二:[reg]  reg代表寄存器,可以是8个通用寄存器中的任意一个

        a.读取内存的值   

                  MOV ECX,0x13FFD0

                  MOV EAX,DWORD PTR DS:[ECX]

        b.向内存中写数据  

                  MOV ECX,0x13FFD0

                  MOV DWORD PTR DS:[ECX],0x23232345

        c.获取内存编号:  

                  LEA EAX,DWORD PTR DS:[EDX]

                  MOV EAX,DWORD PTR DS:[EDX]

      方式三:[reg+立即数]

        a.读取内存值 

                MOV ECX,DWORD PTR DS:[EAX+0X13FFC4] 

                MOV EDX,DWORD PTR DS:[ECX+0X13FFC8]

        b.向内存中写值

                MOV DWORD PTR DS:[ECX+0X13FFC4],0X13FF45

        c.获取内存编号

                LEA EAX,DWORD PTR DS:[ECX+0X13FFC4]

      方式四:[reg+reg*{1,2,4,8}] 

        a.读取内存值

                MOV EAX,13FFC4

                MOV ECX,2

                MOV EDX,DWORD PTR DS:[EAX+ECX*4] 

        b.向内存中写数据

                  MOV EAX,13FFC4

                  MOV ECX,2

                  MOV DWORD PTR DS:[EAX+ECX*4],43332223

        c.获取内存编号

                  LEA EAX,DWORD PTR DS:[EAX+ECX*4]  

    方式五:[reg+reg*{1,2,4,8}+立即数]

        a.读取内存值

                MOV EAX,13FFC4

                MOV ECX,2

                MOV EDX,DWORD PTR DS:[EAX+ECX*4+0xFF]  

        b.向内存中写值

                MOV EAX,13FFC4

                MOV ECX,2

                MOV DWORD PTR DS:[EAX+ECX*4+0xFF34],0x3453

        c.获取内存编号

                LEA EAX,DWORD PTR DS:[EAX+ECX*4+0x8984]

  • 相关阅读:
    6.Go-错误,defer,panic和recover
    5.Go-封装、继承、接口、多态和断言
    php 实现店铺装修2
    php 实现店铺装修1
    安装lnmp1.5到最后出现Error: MySQL install failed的解决方法
    wdcp升级php5.8到php7.1.12后安装gitlab
    支付密码设置和登录密码设置
    什么样的女孩适合做老婆
    用邮箱做网页
    生源地助学贷款
  • 原文地址:https://www.cnblogs.com/heyhx/p/14158268.html
Copyright © 2011-2022 走看看