• 汇编操作内存地址、堆栈


    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]

  • 相关阅读:
    Day13
    Day12
    Day11
    Day10
    Day9
    Day8
    Day7
    mac上使用gitlab拉项目报错Permissions 0644 for ...
    vue-cli3使用svg
    js合并多个array
  • 原文地址:https://www.cnblogs.com/heyhx/p/14158268.html
Copyright © 2020-2023  润新知