IDA程序集更改跳转目标

时间:2015-01-27 13:11:54

标签: assembly x86 reverse-engineering disassembly ida

我刚接触逆向工程,我正在尝试更改

__text:001C2BE4                 jz      loc_1C3180

跳转到

__text:001C3180 loc_1C3180:
跳转到另一个子程序。 (__text:00128DC0 sub_128DC0:

但是,我还不知道该怎么做。我可以通过编辑十六进制值来更改程序集,但由于loc_*只是IDA为子程序指定的名称,我不知道如何执行此操作。

有人可以解释如何更改jz的目的地吗?

感谢。

1 个答案:

答案 0 :(得分:1)

事实证明,loc_1C3180 just a name given to the subroutine by IDA - 它实际上直接来自loc的(图像相对)地址 - 被跳到的地方,在这种情况下是0x1C3180

jz之后是一个(在这种情况下)32位有符号偏移量,如果条件满足,它将被添加到指令指针。

可以使用以下公式计算要使用的带符号偏移量(注意:可以换行)

JumpOffset = Address of jump target - (Address of Jump instruction + 5)

+5进来是因为jz指令的长度包括偏移量。