三个不同版本的IDA对一段涉及结构体字节型分量的代码给出了不同的反编译结果。
IDA7.0的结果:
char v4; // [sp+18h] [bp-78h]@1
char v5; // [sp+19h] [bp-77h]@3
v4 = 39;
v5 = 0;
IDA7.5的结果:
char v3[4]; // [esp+18h] [ebp-78h] BYREF
v3[0] = 39;
v3[1] = 0;
IDA9.0的结果:
char v3[4]; // [esp+18h] [ebp-78h] BYREF
strcpy(v3, "'");
第三种结果明显不对,这促使我分析变量v3的真实类型,得到如下类型的结构体:
struct
{
unsigned char _0;
unsigned char _1;
/*以下略*/
} v3;