【发布时间】:2020-09-12 19:50:05
【问题描述】:
我有一个未知地址(例如 fd010000)存储在已知位置 (00008108)。如何从未知地址中创建一个指针,以便从该地址获取值。
memory structure:
0x00008108: fb00de00
...
0xfb00de00: ????????
with fb00de00 being a placeholder
如何访问?????????
【问题讨论】:
我有一个未知地址(例如 fd010000)存储在已知位置 (00008108)。如何从未知地址中创建一个指针,以便从该地址获取值。
memory structure:
0x00008108: fb00de00
...
0xfb00de00: ????????
with fb00de00 being a placeholder
如何访问?????????
【问题讨论】:
创建一个双指针并将其设置为已知地址。
int **ptr = (int **)0x00008108;
int val = **ptr; // This will set val to ????????
请注意,整数和指针之间的转换取决于实现,但在任何合理的实现中都可能按预期工作。
【讨论】:
你有内存地址
0x00008108
您使用 * 取消引用该地址以获取该地址的值:
fb00de00
你说的是内存地址。所以你取消引用,这会给你??????你的未知价值。
例子:
int a = ??????; // (Unknown value)
int * b = &a; // fb00de00
int ** c = &b; // 0x00008108
cout << **c; // prints ?????
**c = 56; // change ????? to 56
【讨论】: