IDA PRO 变量重用/variable-reuse
igors-tip-of-the-week-79-handling-variable-reuse
way1:强制新变量/force new variable
一种常见的情况是,编译器出于不同的目的重用局部变量甚至传入堆栈参数的堆栈位置。例如,在这样的代码片段中:
vtbl = DiaSymbol->vtbl;
vtbl->get_symTag(DiaSymbol, (int *)&DiaSymbol);
Symbol->Tag = (int)DiaSymbol;
get_symTag调用的第二个参数显然是一个输出参数,并且与调用之前的 DiaSymbol 具有不同的含义和类型。
在这种情况下,您可以使用“强制新变量”命令(快捷键 Shift+F
)。
由于实现细节的原因,有时右键单击变量本身不会显示该选项;在这种情况下,请尝试右键单击伪代码行的开头。
举例
ole32.dll CoGetObject
force new variable
设置后
way2:使用union
创建联合体后,然后Alt+Y
选择成员