知道哪些字节是操作码,哪些是 IDA 中的操作数

逆向工程 艾达 拆卸 反汇编者
2021-06-14 11:40:40

我想在 IDA 中提取函数的通用签名,并且只想使用指令的操作码而不使用其操作数。

例子:

在此处输入图片说明

从第一条指令开始,我想知道告诉反汇编器它是 MOVZX 指令的字节。

从第二个和第三个开始,那些说它是 MOV 指令的(可能是 8B)。

等等..

我知道有些指令有修饰符。我只想知道转换为某些助记符的字节

1个回答

一般来说,这是无法解决的,因为操作码和操作数可能共享相同的字节(例如,某些指令将其操作码的一部分编码在 mod R/M 字节中,该字节也可以同时包含一些操作数),但是您可以通过检查函数返回Operandsinsn_t结构数组来获得一些近似值decode_insnoffb每个op_t元素成员应该是指令字节中操作数对应的字节的偏移量。

请注意,它可能为 0,因为并不总是可以在字节级别确定操作数位置,尤其是在非 x86 架构上。有关更多信息,请查看SDK 中ua.hpp标头