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 )。
由于实现细节的原因,有时右键单击变量本身不会显示该选项;在这种情况下,请尝试右键单击伪代码行的开头。
image

举例

ole32.dll CoGetObject

image
force new variable
image
image

设置后
image

way2:使用union

创建联合体后,然后Alt+Y选择成员

posted @ 2024-07-19 09:50  DirWangK  阅读(66)  评论(0编辑  收藏  举报