intel反汇编 之莫名奇妙

反汇编出来看到做了一堆的运算,乘、除、左右移、跳转等。其实是什么也没有做啊,逆向的时候,碰到这种代码,直接要晕掉了。

int bbb()
{
    int row = 3, col = 4;
    int ary[row][col];
    
    int array(int col, int row, int ary[col][row]);
    int arra2(int ary[col][row], int col, int row);    // not VLA
    
}

反汇编:

000000000000154c <bbb>:
    154c:    f3 0f 1e fa              endbr64
    1550:    55                       push   %rbp
    1551:    48 89 e5                 mov    %rsp,%rbp
    1554:    41 56                    push   %r14
    1556:    41 55                    push   %r13
    1558:    41 54                    push   %r12
    155a:    53                       push   %rbx
    155b:    48 83 ec 40              sub    $0x40,%rsp    // rsp=0x7fffffffe130
    155f:    64 4c 8b 34 25 28 00     mov    %fs:0x28,%r14
    1566:    00 00
    1568:    4c 89 75 d8              mov    %r14,-0x28(%rbp)
    156c:    45 31 f6                 xor    %r14d,%r14d
    156f:    49 89 e2                 mov    %rsp,%r10
    1572:    4d 89 d6                 mov    %r10,%r14        // r14=rsp=0x7fffffffe130
    1575:    c7 45 bc 03 00 00 00     movl   $0x3,-0x44(%rbp)        // (rbp-0x44)=0x3
    157c:    c7 45 b8 04 00 00 00     movl   $0x4,-0x48(%rbp)        // (rbp-0x48)=0x4
    1583:    44 8b 55 b8              mov    -0x48(%rbp),%r10d    // r10d=0x4
    1587:    44 8b 5d bc              mov    -0x44(%rbp),%r11d    // r11d=0x3
    158b:    4d 63 e2                 movslq %r10d,%r12        // r12=0x4
    158e:    49 83 ec 01              sub    $0x1,%r12        // r12=0x3
    1592:    4c 89 65 c0              mov    %r12,-0x40(%rbp)        // (rbp-0x40)=0x3
    1596:    4d 63 e2                 movslq %r10d,%r12        // r12=0x4
    1599:    4c 89 65 a0              mov    %r12,-0x60(%rbp)        // (rbp-0x60)=0x4
    159d:    48 c7 45 a8 00 00 00     movq   $0x0,-0x58(%rbp)        // (rbp-0x58)=0x0
    15a4:    00
    15a5:    4d 63 e3                 movslq %r11d,%r12        // r12=0x3
    15a8:    49 83 ec 01              sub    $0x1,%r12        // r12=0x2
    15ac:    4c 89 65 c8              mov    %r12,-0x38(%rbp)        // (rbp-0x38)=0x2
    15b0:    4d 63 e2                 movslq %r10d,%r12        // r12=0x4
    15b3:    4d 89 e0                 mov    %r12,%r8            // r8=0x4
    15b6:    41 b9 00 00 00 00        mov    $0x0,%r9d        // r9d=0x0
    15bc:    4d 63 e3                 movslq %r11d,%r12        // r12=0x3
    15bf:    4c 89 e0                 mov    %r12,%rax        // rax=0x3
    15c2:    ba 00 00 00 00           mov    $0x0,%edx        // edx=0x0
    15c7:    4d 89 cd                 mov    %r9,%r13            // r13=0x0
    15ca:    4c 0f af e8              imul   %rax,%r13        // r13=rax*r13=0x3*0x0=0x0
    15ce:    49 89 d4                 mov    %rdx,%r12        // r12=0x0
    15d1:    4d 0f af e0              imul   %r8,%r12            // r12=r8*r12=0x4*0x0=0x0
    15d5:    4d 01 ec                 add    %r13,%r12        // r12=r13+r12=0x0
    15d8:    49 f7 e0                 mul    %r8            // rax=rax*r8=0x3*0x4=0xC
    15db:    4d 8d 04 14              lea    (%r12,%rdx,1),%r8    // r8=r12+rdx*1=0+0*1=0
    15df:    4c 89 c2                 mov    %r8,%rdx            // rdx=0x0
    15e2:    49 63 c2                 movslq %r10d,%rax        // rax=0x4
    15e5:    48 89 c6                 mov    %rax,%rsi        // rsi=0x4
    15e8:    bf 00 00 00 00           mov    $0x0,%edi        // edi=0x0
    15ed:    49 63 c3                 movslq %r11d,%rax        // rax=0x3
    15f0:    48 89 c1                 mov    %rax,%rcx        // rcx=0x3
    15f3:    bb 00 00 00 00           mov    $0x0,%ebx        // ebx=0x0
    15f8:    48 89 fa                 mov    %rdi,%rdx        // rdx=0x0
    15fb:    48 0f af d1              imul   %rcx,%rdx        // rdx=rdx*rcx=0x0*0x3=0x0
    15ff:    48 89 d8                 mov    %rbx,%rax        // rax=0x0
    1602:    48 0f af c6              imul   %rsi,%rax        // rax=rax*rsi=0x0*0x3=0x0
    1606:    4c 8d 04 02              lea    (%rdx,%rax,1),%r8    // r8=rdx+rax*1=0+0*1=0
    160a:    48 89 f0                 mov    %rsi,%rax        // rax=0x4
    160d:    48 f7 e1                 mul    %rcx            // rax=rax*rcx=0x4*0x3=0xc
    1610:    49 8d 0c 10              lea    (%r8,%rdx,1),%rcx    // rcx=r8+rdx*1=0
    1614:    48 89 ca                 mov    %rcx,%rdx        // rdx=rcx=0
    1617:    49 63 d2                 movslq %r10d,%rdx        // rdx=r10d=0x4
    161a:    49 63 c3                 movslq %r11d,%rax        // rax=r11d=0x3
    161d:    48 0f af c2              imul   %rdx,%rax        // rax=rax*rdx=0xc
    1621:    48 8d 14 85 00 00 00     lea    0x0(,%rax,4),%rdx    // rdx=(rax*4)+0x0=0xc*4+0=0x30
    1628:    00
    1629:    b8 10 00 00 00           mov    $0x10,%eax        // eax=0x10
    162e:    48 83 e8 01              sub    $0x1,%rax        // rax=0xf
    1632:    48 01 d0                 add    %rdx,%rax        // rax=0x30+0xf=0x3f
    1635:    bb 10 00 00 00           mov    $0x10,%ebx        // ebx=0x10
    163a:    ba 00 00 00 00           mov    $0x0,%edx        // edx=0
    163f:    48 f7 f3                 div    %rbx            // rax=rax/rbx=0x3f/0x10=0x3, rdx=0xf
    1642:    48 6b c0 10              imul   $0x10,%rax,%rax        // rax=rax*0x10=0x3*0x10=0x30
    1646:    48 89 c2                 mov    %rax,%rdx        // rdx=0x30
    1649:    48 81 e2 00 f0 ff ff     and    $0xfffffffffffff000,%rdx    // rdx=0x0
    1650:    48 89 e7                 mov    %rsp,%rdi        // rdi=0x7fffffffe130
    1653:    48 29 d7                 sub    %rdx,%rdi        // rdi=0x7fffffffe130
    1656:    48 89 fa                 mov    %rdi,%rdx        // rdx=0x7fffffffe130
    1659:    48 39 d4                 cmp    %rdx,%rsp
    165c:    74 12                    je     1670 <bbb+0x124>        // jump 1670
    165e:    48 81 ec 00 10 00 00     sub    $0x1000,%rsp
    1665:    48 83 8c 24 f8 0f 00     orq    $0x0,0xff8(%rsp)
    166c:    00 00
    166e:    eb e9                    jmp    1659 <bbb+0x10d>
    1670:    48 89 c2                 mov    %rax,%rdx        // rdx=0x30
    1673:    81 e2 ff 0f 00 00        and    $0xfff,%edx        // edx=0x30
    1679:    48 29 d4                 sub    %rdx,%rsp        // rsp=0x7fffffffe100
    167c:    48 89 c2                 mov    %rax,%rdx        // rdx=0x30
    167f:    81 e2 ff 0f 00 00        and    $0xfff,%edx        // edx=0x30
    1685:    48 85 d2                 test   %rdx,%rdx
    1688:    74 10                    je     169a <bbb+0x14e>        // not jump
    168a:    25 ff 0f 00 00           and    $0xfff,%eax        // eax=0x30
    168f:    48 83 e8 08              sub    $0x8,%rax        // rax=0x28
    1693:    48 01 e0                 add    %rsp,%rax        // rax=0x7fffffffe128
    1696:    48 83 08 00              orq    $0x0,(%rax)        // rax=0x7fffffffe128:0x00007fffffffe138
    169a:    48 89 e0                 mov    %rsp,%rax        // rax=0x7fffffffe100
    169d:    48 83 c0 03              add    $0x3,%rax        // rax=rax+0x3=0x7fffffffe103
    16a1:    48 c1 e8 02              shr    $0x2,%rax        // rax=rax>>2 =0x1ffffffff840
    16a5:    48 c1 e0 02              shl    $0x2,%rax        // rax=rax<<2 =0x7fffffffe110
    16a9:    48 89 45 d0              mov    %rax,-0x30(%rbp)        // 0x7fffffffe170: 0x00007fffffffe100
    16ad:    4c 89 f4                 mov    %r14,%rsp        // rsp=0x7fffffffe130
    16b0:    90                       nop
    16b1:    48 8b 5d d8              mov    -0x28(%rbp),%rbx
    16b5:    64 48 33 1c 25 28 00     xor    %fs:0x28,%rbx
    16bc:    00 00
    16be:    74 05                    je     16c5 <bbb+0x179>
    16c0:    e8 9b f9 ff ff           callq  1060 <__stack_chk_fail@plt>
    16c5:    48 8d 65 e0              lea    -0x20(%rbp),%rsp
    16c9:    5b                       pop    %rbx
    16ca:    41 5c                    pop    %r12
    16cc:    41 5d                    pop    %r13
    16ce:    41 5e                    pop    %r14
    16d0:    5d                       pop    %rbp
    16d1:    c3                       retq  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值