逆向-beginners之字符串二维数组

#include
#include

const char month2[12][10] = {
    {'J', 'a', 'n', 'u', 'a', 'r', 'y', 0, 0, 0,},
    {'F', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'M', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'A', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'M', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'J', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'J', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'A', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'S', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'O', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'N', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ',},
    {'D', 'e', 'c', 'e', 'm', 'b', 'e', 'r', 0, 0,},
};

const char * get_month(int month)
{
    return &month2[month][0];
}

void main()
{

}

#if 0
/*
 * intel
 */
0000000000001129 :
    1129:    f3 0f 1e fa              endbr64
    112d:    55                       push   %rbp
    112e:    48 89 e5                 mov    %rsp,%rbp
    1131:    89 7d fc                 mov    %edi,-0x4(%rbp)    // parameter
    1134:    8b 45 fc                 mov    -0x4(%rbp),%eax    // eax=parameter
    1137:    48 63 d0                 movslq %eax,%rdx    // rdx=parameter
    113a:    48 89 d0                 mov    %rdx,%rax    // rax=parameter
    113d:    48 c1 e0 02              shl    $0x2,%rax    // rax=parameter<<2
    1141:    48 01 d0                 add    %rdx,%rax    // rax=(parameter<<2)+(parameter<<2)
    1144:    48 01 c0                 add    %rax,%rax    // rax=((parameter<<2)+(parameter<<2))+((parameter<<2)+(parameter<<2))
    1147:    48 8d 15 d2 0e 00 00     lea    0xed2(%rip),%rdx        # 2020     rdx=month2
    114e:    48 01 d0                 add    %rdx,%rax    // rax=month2+(((parameter<<2)+(parameter<<2))+((parameter<<2)+(parameter<<2)))
    1151:    5d                       pop    %rbp
    1152:    c3                       retq   

0000000000001153

:
    1153:    f3 0f 1e fa              endbr64
    1157:    55                       push   %rbp
    1158:    48 89 e5                 mov    %rsp,%rbp
    115b:    90                       nop
    115c:    5d                       pop    %rbp
    115d:    c3                       retq   
    115e:    66 90                    xchg   %ax,%ax

/*
 * arm
 */
000000000040051c :
  40051c:    d10043ff     sub    sp, sp, #0x10
  400520:    b9000fe0     str    w0, [sp, #12]    
  400524:    b9800fe1     ldrsw    x1, [sp, #12]    // x1=param
  400528:    aa0103e0     mov    x0, x1        // x0=param
  40052c:    d37ef400     lsl    x0, x0, #2    // x0=param<<2
  400530:    8b010000     add    x0, x0, x1    // x0=(param<<2)+param
  400534:    d37ff800     lsl    x0, x0, #1    // x0=((param<<2)+param)<<1
  400538:    90000001     adrp    x1, 400000 <_init-0x3b0>
  40053c:    91182021     add    x1, x1, #0x608    // x1=month2
  400540:    8b010000     add    x0, x0, x1    // x0=month2+(((param<<2)+param)<<1)
  400544:    910043ff     add    sp, sp, #0x10
  400548:    d65f03c0     ret

000000000040054c

:
  40054c:    d503201f     nop
  400550:    d65f03c0     ret
  400554:    00000000     .inst    0x00000000 ; undefined


#endif

你可能感兴趣的:(Assembly,汇编)