IDA对某个exe文件生成了如下伪代码:
int (__cdecl *off_C65BA0)(int, int, int) = &sub_8D000C;// weak
这个off_C65BA0用在以下语句中:
memcpy(&unk_28629D2, &off_C65BA0, 0x28u);
根据以上语句可知,off_C65BA0是一个结构变量。
已经分析出来unk_28629D2是一个长度为40个字节的结构变量,其类型名自定义为context_types__mcdu_action_direct_40_t。
因此,off_C65BA0也是与unk_28629D2同类型的结构变量。
off_C65BA0的初值恰好与函数sub_8D000C的起始地址相同,即是0x8D000C。
这样,off_C65BA0应定义为:
context_types__mcdu_action_direct_40_t G_C65BA0 = {0xC, 0, 0x8D, 0, };
上述memcpy的调用语句可替换为:
G_28629D2 = G_C65BA0;