Gdb JMP和JMP之间的区别是什么*
此代码已使用GDB反汇编。它是用于x86目标的32位elf可执行文件。这条线来自PLT部分Gdb JMP和JMP之间的区别是什么*,gdb,elf,Gdb,Elf,此代码已使用GDB反汇编。它是用于x86目标的32位elf可执行文件。这条线来自PLT部分 0x08048320 <+0>: jmp *0x80497b0 0x08048326 <+6>: push $0x8 0x0804832b <+11>: jmp 0x8048300 0x08048320:jmp*0x80497b0 0x08048326:推送$0x8 0x0804832b:jmp 0x804830
0x08048320 <+0>: jmp *0x80497b0
0x08048326 <+6>: push $0x8
0x0804832b <+11>: jmp 0x8048300
0x08048320:jmp*0x80497b0
0x08048326:推送$0x8
0x0804832b:jmp 0x8048300
我不理解jmp*(第一条指令)和最后一条指令之间的区别:jmp,没有asterix
我不明白其中的区别
这与以下两者的区别是一样的:
int x = 42;
int p = x;
及
jmp*0x80497b0
跳转到地址存储在0x80497b0
的符号。jmp 0x8048300
跳到0x8048300
要理解这段代码的作用,请阅读“过程链接表”(或者整个post)。这与C中指针的概念相同。如果ptr是指针,*ptr指存储在ptr所指地址处的值。 同样地
jmp 0x8048300
表示跳转到内存地址0x8048300。
及
jmp*0x80497b0
表示跳转到存储在内存位置0x80497b0的地址
int *px = &...;
int q = *px;