JMP和JMP之间有什么区别*

时间:2016-06-25 18:49:22

标签: gdb elf

此代码已与GDB一起反汇编。它是一个x64可执行的32位x86目标。这一行来自PLT部分。

    0x08048320 <+0>:    jmp    *0x80497b0
    0x08048326 <+6>:    push   $0x8
    0x0804832b <+11>:   jmp    0x8048300

我不明白jmp *(第一条指令)与最后一条之间的区别:jmp,没有星号......

2 个答案:

答案 0 :(得分:3)

  

我不明白差异

与以下区别的区别相同:

int x = 42;
int p = x;

int *px = &...;
int q = *px;

jmp *0x80497b0跳转到地址存储在0x80497b0的符号。 jmp 0x8048300跳转到0x8048300

要了解此代码的作用,请阅读“程序链接表”(或整个帖子)here

答案 1 :(得分:0)

与C中的指针概念相同。如果ptr是指针,则* ptr指的是存储在ptr指向的地址处的值。 相似地 jmp 0x8048300 表示跳转到内存地址0x8048300。 和 jmp *0x80497b0 表示跳转到存储在内存位置0x80497b0的地址。