我刚接触逆向工程,我正在尝试更改
__text:001C2BE4 jz loc_1C3180
跳转到
__text:001C3180 loc_1C3180:
跳转到另一个子程序。 (__text:00128DC0 sub_128DC0:
)
但是,我还不知道该怎么做。我可以通过编辑十六进制值来更改程序集,但由于loc_*
只是IDA为子程序指定的名称,我不知道如何执行此操作。
有人可以解释如何更改jz
的目的地吗?
感谢。
答案 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
指令的长度包括偏移量。