在下一个代码中:
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
是什么?
感谢。
答案 0 :(得分:4)
Tab
是一个包含跳转目标地址的表(F1
,F2
等),ebx * 4
从该表中选择一个条目(通过添加到地址Tab
,然后取消引用该地址),然后跳转到。
因此,在您的示例中,如果EBX
为2,则JMP [Tab + 8]
变为JMP F2
,因为F2
的地址距{{1}的起始位置为8个字节1}}。