我想在 IDA Pro 反汇编二进制文件中识别由于 switch/case 引起的跳转语句。我的最终目标是读取跳转表条目。我也对函数表/vtables 感兴趣。对于 switch/case,我将跳转语句视为:
jmp ds:off_20B280CC[ebx*4]
jmp dword ptr ds:loc_6B2A825C[ecx*4]
【问:是因为切换/跳跃吗?】
正如我从 中看到的,这些跳转的操作数类型GetOperandValue(inst.ea, 0)
是“内存引用”(类型值 2)。类似的跳转语句jb short loc_6B2A8154
具有操作数类型“立即近地址”(类型值 7)。但是,像jmp ds:__imp_memset
thunk函数中调用导入函数的跳转语句也有操作数类型“内存引用”。
有什么办法可以区分 switch/case 和 thunk 函数的跳转语句吗?