【问题标题】:IDA "Invalid Operand" error when patching修补时出现 IDA“无效操作数”错误
【发布时间】:2014-06-18 20:02:24
【问题描述】:

我正在尝试使用“Assemble”选项在 IDA 中修补二进制文件,每次我输入带有一些算术计算偏移量的指令时,都会收到 Invalid Operand 错误。例如:

mov [bp-4], bx       

返回Invalid Operand,而

mov ax, bx

有效。

我尝试过使用指令格式(例如包括word ptr,使用4h 等),但似乎没有任何效果。有什么办法可以解决这个错误,还是输入字节码打补丁是唯一的选择?

【问题讨论】:

  • 试试ebp,如果你在32位模式,指针必须是32位指针,如果是长模式,指针必须是64位值(rbp)。
  • 我在 16 位模式下工作

标签: assembly x86 patch disassembly ida


【解决方案1】:

根据 Hex Rays:

只有少数处理器支持汇编程序命令,只有少数指令。我们不打算扩展此功能,抱歉

跛脚,我知道。

【讨论】:

    【解决方案2】:

    有点晚了,但是尽管 Assemble 对话框显示“无效操作数”,但如果您知道字节码,您可以使用 Change byte... 菜单选项来代替。您可以使用 OllyDbg 组装成字节码(选择任意位置并点击空格),然后将其复制到 IDA 的更改字节对话框中作为解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      相关资源
      最近更新 更多