内存的寻址方式

内存的寻址方式

寻址公式一:【立即数】

读取内存的值:

​ mov eax,dword ptr(pointer) ds:[0x13ffc4]

向内存中写入数据

​ mov dword ptr ds:[0x13ffc4],eax

获取内存编号

​ lea eax,dword ptr ds:[0x13ffc4]

寻址公式二:【reg】

reg代表寄存器 可以是8个通用寄存器中的任意一个

读取内存的值:

mov ecx,0x13ffd0

mov eax,dword ptr ds:[ecx]

向内存中写入数据:

mov edx,0x13ffd8

mov dword ptr ds:[edx],0x12345678

获取内存编号:

lea eax,dword ptr ds:[edx]

mov eax,dword ptr ds:[edx]

寻址公式三:[reg+立即数]

读取内存的值:

mov ecx,0x13ffd0

mov eax,dword ptr ds:[ecx+4]

向内存中写入数据:

mov edx,0x13ffd8

mov dword ptr ds:[edx+0xc],0x12345678

获取内存编号:

lea eax,dword ptr ds:[edx+4]

mov eax,dword pte ds:[dex+4]

寻址方式四:[reg+reg*(1,2,4,8)]

读取内存的值:

mov eax,13ffc4

mov ecx,2

mov edx,dword ptr ds:[eax+ecx*4]

向内存中写入数据:

mov eax,13ffc4

mov ecx,2

mov dword ptr ds:[eax+eax*4],0x12345678

获取内存编号:

lea eax,dword ptr ds:[eax+ecx*4]

寻址方式五:[reg+reg*(1,2,4,8)+立即数]

读取内存的值:

mov eax,13ffc4

mov ecx,2

mov edx,dword ptr ds:[eax+ecx*2+4]

向内存中写入数据

mov eax,13ffc4

mov ecx,2

mov dword ptr ds:[eax+ecx*4+2],0x12345678

获取内存编码

lea eax,dword ptr ds:[eax+ecx*4+4]

堆栈

堆栈的优点:临时存储大量的数据,便于查找

入栈

方法一:

mov dword ptr ds:[edx-4],0XAAAAAAAA

sub edx,4

方法二:

sub edx,4

mov dword ptr ds:[edx],0xbbbbbbbb

方法三:

mov dowrd ptr ds:[edx-4],0xsssssssss

lea edx,dword ptr ds:[edx-4]

方法四:

lea edx,dword ptr ds:[edx-4]

mov dword ptr ds:[edx],0xeeeeeeee

出栈

出栈跟入栈类似,出栈是栈顶的指针内存地址加四而入栈是减四

push和pop指令

push是入栈指令(上面方法二合一)

pop是出栈指令(也是两步命令二合一)

这两个命令也会改变内存(EIP)

mov esp,ebp

pop ebp

在这里插入图片描述

局部变量是从ebp-4开始 参数是ebp+8 返回地址(eip)是ebp+4

局部变量(ebp-4)
ebp
返回地址(ebp+4)
参数(ebp+8)

图片借鉴:滴水逆向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值