如何在 IDA 中使用 JMP?
How to use JMP in IDA?
.text:004430FE jz short loc_44311B
.text:00443100 push 30h ; uType
.text:00443102 push offset Athingy; "Hello"
.text:00443107 push offset AnotherThingy; "Works"
.text:0044310C call sub_438090
.text:00443111 add esp, 0Ch
.text:00443114 push 0
.text:00443116 call sub_44C424
.text:0044311B
.text:0044311B loc_44311B: ; CODE XREF: sub_442C70+48Ej
.text:0044311B mov ecx, 0FAh
.text:00443120 mov esi, offset buf
.text:00443125 lea edi, [ebp+var_3FC]
.text:0044312B rep movsd
.text:0044312D push offset aTest; "test"
.text:00443132 lea eax, [ebp+var_3FC]
.text:00443138 push eax
.text:00443139 call sub_465450
.text:0044313E add esp, 8
如果我想将 jz(在顶部)更改为 jmp 并将其设置为 add esp, 8
。我怎样才能这样做?
我知道如何给程序打补丁并转到 assemble,但是关于 jmp 我会输入什么?
您可以在英特尔的手册中查找短jmp 的操作码。我手边没有它,但如果没记错的话,它是 0xEB。
用于计算跳转偏移量的公式为(目标地址 - 跳转指令地址 - 2)。 (2 是因为这是短跳转指令的长度,包括它的参数 - CPU 将偏移量添加到跳转指令之后的指令指针值)。
.text:004430FE jz short loc_44311B
.text:00443100 push 30h ; uType
.text:00443102 push offset Athingy; "Hello"
.text:00443107 push offset AnotherThingy; "Works"
.text:0044310C call sub_438090
.text:00443111 add esp, 0Ch
.text:00443114 push 0
.text:00443116 call sub_44C424
.text:0044311B
.text:0044311B loc_44311B: ; CODE XREF: sub_442C70+48Ej
.text:0044311B mov ecx, 0FAh
.text:00443120 mov esi, offset buf
.text:00443125 lea edi, [ebp+var_3FC]
.text:0044312B rep movsd
.text:0044312D push offset aTest; "test"
.text:00443132 lea eax, [ebp+var_3FC]
.text:00443138 push eax
.text:00443139 call sub_465450
.text:0044313E add esp, 8
如果我想将 jz(在顶部)更改为 jmp 并将其设置为 add esp, 8
。我怎样才能这样做?
我知道如何给程序打补丁并转到 assemble,但是关于 jmp 我会输入什么?
您可以在英特尔的手册中查找短jmp 的操作码。我手边没有它,但如果没记错的话,它是 0xEB。
用于计算跳转偏移量的公式为(目标地址 - 跳转指令地址 - 2)。 (2 是因为这是短跳转指令的长度,包括它的参数 - CPU 将偏移量添加到跳转指令之后的指令指针值)。