我试图了解C程序(二进制炸弹)仅使用其目标文件做什么。我在函数中间有jmp命令,它似乎不会导致任何地方:
8048c4b: cmp $0x1,%eax
8048c4e: jg 8048c55 <phase_3+0x31>
8048c50: call 804937c <explode_bomb>
31:8048c55: cmpl $0x7,0x18(%esp)
8048c5a: ja 8048cc2 <phase_3+0x9e>
8048c5c: mov 0x18(%esp),%eax
8048c60: jmp *0x804a4bc(,%eax,4) //here is the weird jmp
8048c67: mov $0x0,%eax
8048c6c: jmp 8048c73 <phase_3+0x4f>
8048c6e: mov $0x1a1,%eax
4f:8048c73: sub $0x19b,%eax
8048c78: jmp 8048c7f <phase_3+0x5b>
同时反汇编中的最高地址是0x804a315。有谁知道这可能是什么? 编辑:该函数需要2个用户输入数字,如果它们是正确的,则炸弹的一个阶段会被解除。
答案 0 :(得分:2)
这是跳转表的间接跳转(注意前导*
)。跳转表只包含一些地址,它不在代码部分,你不能反汇编它。但是,您可以查看其内容。