jmp *0x804a260(,%eax,4)
比方说,eax
保持2.这将需要2 * 4并将其添加到0x804a260,给你0x804a268,并且会跳转到那个位置,对吗?
答案 0 :(得分:3)
jmp * 0x804a260(,%eax,4)
上面的ATT语法与intel语法中的以下内容相同:
jmp dword ptr [eax*4 + 0x804a260]
它计算内存位置eax*4 + 0x804a260
,从该位置读取一个dword,将其视为地址并跳转到该地址。
使用您的示例,假设eax
为2.计算的地址为0x804a268
。此外,让我们说0x804a268
它包含0xbadf00d
。这意味着在执行jmp
之后,程序计数器eip
将尝试在内存位置0xbadf00d
执行下一条指令。