一段汇编代码搞不懂

发布于 2022-09-04 01:05:06 字数 5189 浏览 45 评论 0

1.CSAPP BOMB_LAB中的phase_3函数里面有一个汇编指令的操作数搞不懂

2.弄不懂的一段汇编代码

 8048bd3:    8b 45 f4                 mov    -0xc(%ebp),%eax
 8048bd6:    ff 24 85 e8 97 04 08     jmp    *0x80497e8(,%eax,4)

jmp 后的0x80497e8为什么要加一个星号,jmp是不是会跳转到 ( -0xc(%ebp) )4 + 0x80497e8这里去?

3.完整代码

08048b98 <phase_3>:
 8048b98:    55                       push   %ebp
 8048b99:    89 e5                    mov    %esp,%ebp
 8048b9b:    83 ec 14                 sub    $0x14,%esp
 8048b9e:    53                       push   %ebx
 8048b9f:    8b 55 08                 mov    0x8(%ebp),%edx
 8048ba2:    83 c4 f4                 add    $0xfffffff4,%esp
 8048ba5:    8d 45 fc                 lea    -0x4(%ebp),%eax
 8048ba8:    50                       push   %eax
 8048ba9:    8d 45 fb                 lea    -0x5(%ebp),%eax
 8048bac:    50                       push   %eax
 8048bad:    8d 45 f4                 lea    -0xc(%ebp),%eax
 8048bb0:    50                       push   %eax
 8048bb1:    68 de 97 04 08           push   $0x80497de
 8048bb6:    52                       push   %edx
 8048bb7:    e8 a4 fc ff ff           call   8048860 <sscanf@plt>
 8048bbc:    83 c4 20                 add    $0x20,%esp
 8048bbf:    83 f8 02                 cmp    $0x2,%eax
 8048bc2:    7f 05                    jg     8048bc9 <phase_3+0x31>
 8048bc4:    e8 33 09 00 00           call   80494fc <explode_bomb>
 8048bc9:    83 7d f4 07              cmpl   $0x7,-0xc(%ebp)
 8048bcd:    0f 87 b5 00 00 00        ja     8048c88 <phase_3+0xf0>
 8048bd3:    8b 45 f4                 mov    -0xc(%ebp),%eax
 8048bd6:    ff 24 85 e8 97 04 08     jmp    *0x80497e8(,%eax,4)
 8048bdd:    8d 76 00                 lea    0x0(%esi),%esi
 8048be0:    b3 71                    mov    $0x71,%bl
 8048be2:    81 7d fc 09 03 00 00     cmpl   $0x309,-0x4(%ebp)
 8048be9:    0f 84 a0 00 00 00        je     8048c8f <phase_3+0xf7>
 8048bef:    e8 08 09 00 00           call   80494fc <explode_bomb>
 8048bf4:    e9 96 00 00 00           jmp    8048c8f <phase_3+0xf7>
 8048bf9:    8d b4 26 00 00 00 00     lea    0x0(%esi,%eiz,1),%esi
 8048c00:    b3 62                    mov    $0x62,%bl
 8048c02:    81 7d fc d6 00 00 00     cmpl   $0xd6,-0x4(%ebp)
 8048c09:    0f 84 80 00 00 00        je     8048c8f <phase_3+0xf7>
 8048c0f:    e8 e8 08 00 00           call   80494fc <explode_bomb>
 8048c14:    eb 79                    jmp    8048c8f <phase_3+0xf7>
 8048c16:    b3 62                    mov    $0x62,%bl
 8048c18:    81 7d fc f3 02 00 00     cmpl   $0x2f3,-0x4(%ebp)
 8048c1f:    74 6e                    je     8048c8f <phase_3+0xf7>
 8048c21:    e8 d6 08 00 00           call   80494fc <explode_bomb>
 8048c26:    eb 67                    jmp    8048c8f <phase_3+0xf7>
 8048c28:    b3 6b                    mov    $0x6b,%bl
 8048c2a:    81 7d fc fb 00 00 00     cmpl   $0xfb,-0x4(%ebp)
 8048c31:    74 5c                    je     8048c8f <phase_3+0xf7>
 8048c33:    e8 c4 08 00 00           call   80494fc <explode_bomb>
 8048c38:    eb 55                    jmp    8048c8f <phase_3+0xf7>
 8048c3a:    8d b6 00 00 00 00        lea    0x0(%esi),%esi
 8048c40:    b3 6f                    mov    $0x6f,%bl
 8048c42:    81 7d fc a0 00 00 00     cmpl   $0xa0,-0x4(%ebp)
 8048c49:    74 44                    je     8048c8f <phase_3+0xf7>
 8048c4b:    e8 ac 08 00 00           call   80494fc <explode_bomb>
 8048c50:    eb 3d                    jmp    8048c8f <phase_3+0xf7>
 8048c52:    b3 74                    mov    $0x74,%bl
 8048c54:    81 7d fc ca 01 00 00     cmpl   $0x1ca,-0x4(%ebp)
 8048c5b:    74 32                    je     8048c8f <phase_3+0xf7>
 8048c5d:    e8 9a 08 00 00           call   80494fc <explode_bomb>
 8048c62:    eb 2b                    jmp    8048c8f <phase_3+0xf7>
 8048c64:    b3 76                    mov    $0x76,%bl
 8048c66:    81 7d fc 0c 03 00 00     cmpl   $0x30c,-0x4(%ebp)
 8048c6d:    74 20                    je     8048c8f <phase_3+0xf7>
 8048c6f:    e8 88 08 00 00           call   80494fc <explode_bomb>
 8048c74:    eb 19                    jmp    8048c8f <phase_3+0xf7>
 8048c76:    b3 62                    mov    $0x62,%bl
 8048c78:    81 7d fc 0c 02 00 00     cmpl   $0x20c,-0x4(%ebp)
 8048c7f:    74 0e                    je     8048c8f <phase_3+0xf7>
 8048c81:    e8 76 08 00 00           call   80494fc <explode_bomb>
 8048c86:    eb 07                    jmp    8048c8f <phase_3+0xf7>
 8048c88:    b3 78                    mov    $0x78,%bl
 8048c8a:    e8 6d 08 00 00           call   80494fc <explode_bomb>
 8048c8f:    3a 5d fb                 cmp    -0x5(%ebp),%bl
 8048c92:    74 05                    je     8048c99 <phase_3+0x101>
 8048c94:    e8 63 08 00 00           call   80494fc <explode_bomb>
 8048c99:    8b 5d e8                 mov    -0x18(%ebp),%ebx
 8048c9c:    89 ec                    mov    %ebp,%esp
 8048c9e:    5d                       pop    %ebp
 8048c9f:    c3                       ret    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

宁愿没拥抱 2022-09-11 01:05:06

加星号是取内容,表示要跳转到一个地址,而这个地址存储在 (0x80497e8 + 4 * (%eax))里。
展开来就是:

要跳转到的一个地址,而这个地址存储在以 0x80497e8 + 4 * ( %ebp - 0xc ) 为地址的单元中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文