我使用 IDA Pro 反汇编了一些代码并获得了伪代码。它显示了如下所示的内容。
for ( i = 0; i < 6; ++i )
{
v7 = (int)&val_253;
for ( k = 1; k < key[i]; ++k )
v7 = *(_DWORD *)(v7 + 8);
v4[i] = v7;
}
我无法理解正在发生的事情v7 = *(_DWORD *)(v7 + 8);。执行此行后,v7 的值从0xC. 我无法理解它是如何发生的。我认为价值应该从0x8.
我认为*(_DWORD *)应该返回一个值。但相反,它返回另一个指针。这是怎么发生的(内存的两个值,0xc远离&val_253和0x8远离&val_253都是零)。