滴水逆向学习

一.寻址公式 [立即数]

1.读取内存的值

MOV EAX,DWORD PTR DS:[0x13FFC4]

读DWORD 即读取内存地址为 0x13DDC4 0x13FFC5 0x13FFC6 0x13FFC7  的内存下存的值

2.向内存中写入值

MOV DWORD PTR DS:[0x13FFC4],EAX

即将EAX中的值 写入地址为0x13DDC4 0x13FFC5 0x13FFC6 0x13FFC7  的内存下

3.获取内存编号

LEA EAX,DWORD PTR DS:[0x12FFC4]

作用:将一地址下的内存编号在EAX中展示出来

二.寻址公式2

1.读取内存的值

MOV EAX,0x123456

MOV ECX,DWORD PTR DS:[EAX]

含义:将EAX下存的内存编号下的内容展示在ECX中

2.获取内存编号

MOV ECX,DWORD PTR DS:[EAX]

LEA ECX,DWORD PTR DS:[EAX]

含义:将EAX下存的内存编号展示在ECX中

三.寻址公式3

1.读取内存的值

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

即读取的是ECX 下地址往后移4的地址下所存的值展示在EAX中

2.获取内存编号

LEA EAX,DWORD PTR DS:[ECX+8]

即将ECX下地址往后移8的地址下的内存编号在EAX中展示

若ECX 中展示的地址为12FFC4 则编号为12FFCC

四.寻址公式4

1.读取内存的值

MOV EAX,0x13FFC4

MOV ECX,0x2

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

EAX+ECX*4就是16进制加法 执行后EDX下存的就是运算完后得到的内存编号下存的内容

2.获取内存编号

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

这个跟上一个一样只不过是读取这个地址下的内存编号

注:

1.如果运算的结果超过的FFFFFFFF那么结果只会取FFFFFFFF而且在实际情况下是不会超过FFFFFFFF

2.乘的数只能是1 2 4 8

五.堆栈

 堆栈中数据的存入 

MOV EBP,0x12345678(栈底)

MOV ESP,0x12345678(栈顶)

方法一:

MOV DWORD PTR DS:[ESP-4],AAAAAAAA

SUB ESP,4

方法二:

LEA ESP,DWORD PTR DS:[ESP-4]

MOV DWORD PTR DS:[ESP],AAAAAAAA

   堆栈中数据的查找

栈顶查找法 

MOV EAX,DWORD PTR DS:[ESP+8]

栈底查找法

MOV EAX,DWORD PTR DS:[EBP-8]

   堆栈中数据的弹出

方法一:

MOV EAX,DWORD PTR DS:[ESP+4]

ADD ESP,4

方法二

LEA ESP,DWORD PTR DS:[ESP+4]

MOV EAX,DWORD PTR DS:[ESP-4]

另一种数据的压入弹出的方法 

CPU默认的将EBP 和ESP作为栈底和栈顶

则压入可执行为 

PUSH 12345678 

也可为 

PUSH EAX

弹出

POP 12345678

POP EAX

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值