|
经常使用IDA逆向,分析它生成的C伪代码,里面是数组下标与指针偏移同时使用,慢慢的就理解它们的关系了。
int __fastcall sub_2680(int a1)
{
__int16 v2; // r0
_BYTE v4[504]; // [sp+0h] [bp-408h] BYREF
int v5[132]; // [sp+1F8h] [bp-210h] BYREF
memset(v5, 0, 0x1F8u);
if ( sub_1EDC(16, v5, 504) >= 0 )
{
if ( v5[0] != 1437226410 )
{
memset(v4, 0, sizeof(v4));
sub_1FC0(16, v4, 504);
v5[0] = 1437226410;
}
v2 = *(_WORD *)(a1 + 4);
v5[6] = *(_DWORD *)a1;
LOWORD(v5[7]) = v2;
if ( sub_1FC0(16, v5, 504) >= 0 )
sub_1EDC(16, v5, 504);
}
return _stack_chk_guard - v5[127];
} |
|