我目前正在学习逆向工程,因此我需要学习汇编。代码运行良好,但我在JE和JNE指令上遇到错误。更具体地说:我做了一个绕道钩子作为练习,程序崩溃了,因为它跳到了错误的地址。 我想写这段代码,但是编译器给了我一个错误(LNK2016): JE 0x123 (0x123 example address) 我通过编写以下代码解决了这个问题: JE short 0x123 完整功能代码: my_hook:
push rbp
mov rbp, rsp
mov dword [rcx + 0x18], 99
test rcx, rcx
je 0
我想编码一个64位的相对跳转到x64汇编中存储在%rax中的地址。AFAIK,没有操作码,所以我手动计算相对地址对应的绝对地址,然后进行绝对跳转到绝对地址:
# destination address, relative to end of jmp instruction, is stored in %rax
00007ffff7ff6020: 0x0000488d1505000000 lea 0x5(%rip),%rdx # load %rip+5 (rip + size of add and jmpq) into %rdx
00007ffff7ff6027: 0x00000000000