我试图从 IDA Pro 获取给定指令中所有操作数的字节大小。起初我尝试使用GetOperandValue(ea,n)
查看值有多大并计算存储该值所需的字节数,但它不返回前导零,这意味着它不起作用。
现在我试图用它OpHex(ea,n)
来获得答案,但它只是返回True
(就像OpDecimal
、OpBinary
、 和OpOctal
)。
如何找到用于特定指令的操作数的字节数以及为什么OpHex
返回 true?
编辑:我当前的解决方案有效,但我仍然想要一个技术上更正确且防弹的解决方案。现在我只是GetOperandValue(ea, op)
用来获取所有指令的两个操作数(即使它们没有或只有一个),然后检查以确保操作数值大于FF
. 如果它大于FF
我只是假设它是一个地址,在这种情况下是四个字节。如果两个操作数都满足这个条件,我将大小分配为 8 个字节。
这暂时有效,但在最终迁移到其他架构时会遇到困难(现在我只是在使用 x86-64)。