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]

  • 相关阅读:
    HTML_严格模式与混杂模式
    不要和一种编程语言厮守终生:为工作正确选择(转)
    iOS开发编码建议与编程经验(转)
    UTF-8 和 GBK 的 NSString 相互转化的方法
    UICollectionView 总结
    UIViewController的生命周期及iOS程序执行顺序
    objective-c 中随机数的用法
    clipsToBounds 与 masksToBounds 的区别与联系
    网络请求 代码 系统自带类源码
    iOS CGRectGetMaxX/Y 使用
  • 原文地址:https://www.cnblogs.com/heyhx/p/14158268.html
Copyright © 2011-2022 走看看