【问题标题】:Patched Binary does not open打补丁的二进制文件打不开
【发布时间】:2020-07-21 12:26:09
【问题描述】:

我是逆向工程的新手,我正在尝试使用 IDA 将 jnz 条件更改为 jz。在我修补二进制文件后,应用程序无法打开。

有原始的二进制文件:

以及修改后的:

编辑:

该问题的另一个假设是,由于从 jnz 切换到 jz,修补后的二进制文件具有不同的字节数。可以吗?如果是这样,我该如何解决这种字节差异?

【问题讨论】:

  • 你有什么错误吗?你能区分两个二进制文件吗?结果如何?
  • 你能提供补丁的二进制文件吗?
  • 从描述中听起来好像没有根本原因进行更改。您只是想将jnz 更改为jz。有时程序可能会工作,有时可能不会。您希望通过此更改实现什么目标?
  • 程序有 10 秒的延迟。这个 jnz 检查计数器是否已经达到零以启动程序。该问题的另一个假设是,由于从 jnz 切换到 jz,修补后的二进制文件具有不同的字节数。可以吗?如果是这样,我该如何解决这种字节差异?
  • 你用什么工具来修补实际的二进制文件?您应该只将一个字节更改为短跳转,即 75 (JNZ) 到 74 (JZ)。

标签: reverse-engineering ida


【解决方案1】:

JZ 和 JNZ 都有 1 或 2 字节的指令,不包括参数。也许 IDA 使用了不同大小的指令。

要查看汇编字节转到选项->常规->反汇编,在“操作码字节数”中输入 8。现在您可以看到反汇编中的字节。

现在你可以来回切换,看看每条指令有多少字节。

查看有关这些说明的更多信息here

如果 IDA 生成错误的指令,则通过编辑十六进制手动更改它。

您始终可以查看文件大小以查看大小是否已更改。如果程序继续“不运行”,请附加调试器并找出原因,我想不出任何理由,如果字节数相同,它应该可以正常工作,最坏的情况是无限循环

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2020-07-25
    相关资源
    最近更新 更多