好的,所以我想用 IDA SDK 解析 x86 指令。但是我无法理解输出,我有这个代码(decode_insn在每个存在的操作数(type不是 0)之后执行):
//op is an operand op_t of some insn_t
//ea1 is current address
if(has_displ(op)) {
msg("%x\n", ea1);
msg("%d\n", x86_base_reg(instr, op));
msg("%d\n", x86_index_reg(instr, op));
msg("%d\n", x86_scale(op));
msg("%d\n", op.addr);
}
这是拆卸:
.text:0040AE64 lea edx, ds:0[eax*4]
.text:0040AE6B lea edi, [eax+eax*2]
我为上述每条指令得到的输出是:
40AE64
-1
0
2
0
对于第二个,它甚至没有进入 if。我的问题是为什么?还有为什么输出中的 2 不是 4?
此外,如果您能指出一些利用 API 来完全解析 x86 指令的开源项目,以供参考,我将不胜感激。