吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4845|回复: 23
收起左侧

[分享] 五大内存寻址公式&&计算机如何实现2+3?

  [复制链接]
niucaidi 发表于 2021-7-7 23:21
本帖最后由 niucaidi 于 2021-7-7 23:23 编辑

滴水海东第二集公开课

计算机如何实现2+3?

  • 1.首先计算机会把2和3转换称二进制,2对应0010,3对应0011。计算机在进行运算之前会将两个值存放到某个地址中去,此处假设x = 0010y = 0011

  • 2.计算机会将xy进行抑或(xor)运算,即0010^0011,结果为0001.

  • 3.计算机会将计算机会将xy进行与(and)运算,即0010&0011,结果为0010.

  • 4.计算机会将上述通过与运算得到的的结果向左移动一位,得到0100.接下来计算机会进行判断,当结果不是全部为0,即0000的时候,计算机会将第二步计算出的中间结果赋值给x,即x = 0001,将第三步得到的中间结果赋值给y,即y = 0100.

  • 5.此时继续对xy进行抑或运算,即0001^0100,结果为0101

  • 6,重复第三步,将此时的xy继续进行与运算,即0001^0100,结果为0000,计算机此时会将0000向左移动一位,并对其进行判断,当发现其结果全部为0时,运算结束,计算机会认为x+y的最终结果为第五步的运算结果,即0101.

  • PS:只要当异或运算之后的与运算结果为0,加法计算便会结束,计算机会认为抑或的结果便是两个数字相加的结果。

  • 寄存器按顺序有eaxecxedxebxespebpesiedi.

  • 32位操作系统寻址能力最大为FFFFFFFF+1,也就是可以访问2的32次方个内存地址,这也是为何32位操作系统“一般情况下”只能识别4G内存的原因

    内存的读写

  • 寻址公式1:[立即数]

    • 读取内存的值:
      • MOV EAX,DWORD PTR DS:[0X13FFC4]
      • MOV EAX,DWORD PTR DS:[0X13FFC8]
    • 向内存中写入数据
      • MOV DEORD PTR DS:[0X13FFC4],eax
      • MOV DEORD PTR DS:[0X13FFC4],ebx
    • 获取内存编号
      • LEA EAX,DWORD PTR DS:[0X13FFC4]
      • LEA EAX,DWORD PTR DS:[ESP+8]
  • 寻址公式2:[reg]_注:reg代表寄存器,可以是8个通用寄存器的任意一个

    • 读取内存的值:
      • MOV ECX,0X13FFC4
      • MOV EAX,DWORD PTR DS:[ECX]
    • 向内存中写入数据
      • MOV EDX,0X13FFC4
      • MOV DEORD PTR DS:[EDX],0X87654321
    • 获取内存编号
      • LEA EAX,DWORD PTR DS:[EDX]
      • MOV EAX,DWORD PTR DS:[EDX]
  • 寻址公式3:[reg+立即数]

    • 读取内存的值:
      • MOV ECX,0X13FFC4
      • MOV EAX,DWORD PTR DS:[ECX+4]
    • 向内存中写入数据
      • MOV EDX,0X13FFC4
      • MOV DEORD PTR DS:[EDX+0xC],0x87654321
    • 获取内存编号
      • LEA EAX,DWORD PTR DS:[EDX+4]
      • LEA EAX,DWORD PTR DS:[EDX+4]
    • 寻址公式4:[reg+reg*(1,2,4,8)]_注:只能乘1,2,4,8的任意一个,该知识涉及到硬编码

      • 读取内存的值:
      • MOV EAX,0X13FFC4
      • MOB ECX,2
      • MOV EDX,DWORD PTR DS:[EAX+ECX*4]
      • 向内存中写入数据
      • MOV EAX,0X13FFC4
      • MOV ECX,2
      • MOV DEORD PTR DS:[EAX+ECX*4],87654321
      • 获取内存编号
      • LEA EAX,DWORD PTR DS:[EAX+ECX*4]
    • 寻址公式4:[reg+reg*(1,2,4,8)+立即数]_注:只能乘1,2,4,8的任意一个,该知识涉及到硬编码

      • 读取内存的值:
      • MOV EAX,0X13FFC4
      • MOB ECX,2
      • MOV EDX,DWORD PTR DS:[EAX+ECX*4+4]
      • 向内存中写入数据
      • MOV EAX,0X13FFC4
      • MOV ECX,2
      • MOV DEORD PTR DS:[EAX+ECX*4+4],87654321
      • 获取内存编号
      • LEA EAX,DWORD PTR DS:[EAX+ECX*4+2]
  • 汇编如 mov eax,dword ptr ds:[0x00981df2] >> 其中当内存中是一个数字,用ds;如果内存中是ESP或者EBP,用SS;当内存中是EDI,就用ES。不同的符号标识着内存中内容的特征。

  • 堆栈只是一块普通的内存,EBP是栈底,ESP是栈顶。主要作用是记录函数的中间结果。

  • Push是压栈\入栈指令,该指令能将数据压入栈中,通常它会令栈顶ESP发生变化(地址变小)

  • PoP是出栈\弹栈指令,该指令可以从当前栈顶取出数据,通常它会令栈顶ESP发生变化(地址变大)

  • stos的作用是把eax的值赋给某个地址,如stos dword ptr es:[EDI]的意思便是把当前eax的值赋给edi

  • rep指令的意义是重复,如rep stos dword ptr es:[EDI]的意思便是把当前eax地址中的值赋给edi的操作重复一定次数,重复的次数由当前ECX的值决定,此时ecx寄存器承担计数器的作用

  • rep的重复操作并不是重复覆盖地址中的值,还是以如rep stos dword ptr es:[EDI]为例,edi的地址会自动加四或减四,

  • 变形的艺术:

    • push eax代码相当于:

      • lea esp,dowrd ptr ss:[esp-4]
      • mov dword ptr ss:[esp],eax
    • 或者:

      • mov dword ptr ss:[esp-4],eax
      • lea esp,dword ptr ss:[esp-4]
    • lea esp,dword ptr ss:[esp-4] == mov esp,esp-4 == sub esp,4

    • PoP ecx代码相当于:

      • mov ecx,dword ptr ss:[esp]
      • lea esp,dword ptr ss:[esp+4] == mov esp,esp+4 == add esp,4
    • 或者:

      • lea esp,dword ptr ss:[esp+4]
      • mov ecx,dword ptr ss:[esp-4]

免费评分

参与人数 13吾爱币 +13 热心值 +11 收起 理由
cansino + 1 我很赞同!
Word7 + 1 我很赞同!
kwan8888 + 1 + 1 谢谢@Thanks!
ekeen21 + 1 + 1 谢谢@Thanks!
longling + 1 + 1 用心讨论,共获提升!
li4ming + 1 + 1 知识就是力量,顶起来
爱你小吉君 + 1 热心回复!
从零学习的歪经小 + 2 + 1 把计算机运算讲的这么详细。老早就想了解这些运算
wshq + 1 + 1 我很赞同!
海天一色001 + 1 + 1 谢谢@Thanks!
woyucheng + 1 + 1 谢谢@Thanks!
吾爱支持 + 1 谢谢@Thanks!
侃遍天下无二人 + 2 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| niucaidi 发表于 2021-7-7 23:23
自学笔记分享给各位,也是做一些记录
aishangni 发表于 2021-7-8 02:54
今晚明月 发表于 2021-7-8 06:59
bobo_008 发表于 2021-7-8 07:15
学习了!!!!
头像被屏蔽
tlf 发表于 2021-7-8 07:34
提示: 作者被禁止或删除 内容自动屏蔽
龍謹 发表于 2021-7-8 07:55
谢谢大佬,这种纯干货,真的很重要。
fl025 发表于 2021-7-8 08:30
一起学习,一起进步
xzhtx 发表于 2021-7-8 08:31
学习了,虽然看不懂
cwfengs 发表于 2021-7-8 08:50
都忘光了,重温一下~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 05:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表