pwn之偏移量offset

0x01:偏移量

0x7fffffffdd00: 0x4141414141414141 0x4141414141414141 0x7fffffffdd10: 0x4141414141414141 0x4141414141414141 0x7fffffffdd20: 0x4141414141414141 0x00007fffffffe1cd 'A'*40 + 'xcdxe1xffxffxffx7f' 经常在payload中看到如上的形式,很是纳闷,现在来说明一下。 先明确一下字节(byte)为8位,为了减少信息的长度,用十六进制表示,学过C语言的朋友都知道'A'的ASLL码为65,转化为十六进制为41 数据在内存中的存放方式: 举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78

2)小端模式:

低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12

0x02:区别

EBP存储着当前栈帧的栈底的地址,通常作为基址,通过ebp和偏移相加减来获取变量地址。而esp始终指向栈顶,随栈内数据增加或减少而变化。而IDA是静态调试,计算出来的偏移跟动态调试是有区别的。

原文地址:https://www.cnblogs.com/zuoanfengxi/p/12258662.html