2012-02-19 50 views
0

在下面的代码:大会 - JMP条件使用标签

Gloat: mov eax, 0 
      jmp [(ebx*4)+Tab] 
    Tab: dd F4 
      dd F3 
      dd F2 
      dd F1 
    F1: add eax, 4 
    F2: add eax, 4 
    F3: add eax, 4 
    F4: ret 

我不明白的[(ebx*4)+Tab]什么意思。例如,如果ebx包含2,我会得到什么jmp条件? jmp [8+Tab],但是什么是Tab

谢谢。

+1

这被称为“分支表”或“跳转表”。 – ninjalj 2012-02-19 09:16:43

回答

4

Tab是保持所述跳转目标(F1F2等)的地址的表,选择ebx * 4从该表中的条目(通过添加到Tab地址,然后解引用该地址),然后将其上升到。

因此,在你的榜样,如果EBX是2,我们得到JMP [Tab + 8]成为JMP F2,因为F2地址是从Tab开始8个字节。