• 逆向-beginners之字符串数组


    #include <stdio.h>

    const char * month[] = {
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    };

    const char * get_month(int m)
    {
        return month[m];
    }

    void main()
    {
        printf("month=%s\n", get_month(9));    // month=October
    }

    #if 0
    /*
     * intel
     */
    0000000000001149 :
        1149:    f3 0f 1e fa              endbr64
        114d:    55                       push   %rbp
        114e:    48 89 e5                 mov    %rsp,%rbp
        1151:    89 7d fc                 mov    %edi,-0x4(%rbp)
        1154:    8b 45 fc                 mov    -0x4(%rbp),%eax
        1157:    48 98                    cltq   
        1159:    48 8d 14 c5 00 00 00     lea    0x0(,%rax,8),%rdx        // rdx=rax*8+0--> 9*8, 因是64bit,所以是8.
        1160:    00
        1161:    48 8d 05 b8 2e 00 00     lea    0x2eb8(%rip),%rax        # 4020   // 指向数据区
        1168:    48 8b 04 02              mov    (%rdx,%rax,1),%rax
        116c:    5d                       pop    %rbp
        116d:    c3                       retq   

    000000000000116e

    :
        116e:    f3 0f 1e fa              endbr64
        1172:    55                       push   %rbp
        1173:    48 89 e5                 mov    %rsp,%rbp
        1176:    bf 09 00 00 00           mov    $0x9,%edi
        117b:    e8 c9 ff ff ff           callq  1149
        1180:    48 89 c6                 mov    %rax,%rsi
        1183:    48 8d 3d d0 0e 00 00     lea    0xed0(%rip),%rdi        # 205a <_IO_stdin_used+0x5a>
        118a:    b8 00 00 00 00           mov    $0x0,%eax
        118f:    e8 bc fe ff ff           callq  1050
        1194:    90                       nop
        1195:    5d                       pop    %rbp
        1196:    c3                       retq   
        1197:    66 0f 1f 84 00 00 00     nopw   0x0(%rax,%rax,1)
        119e:    00 00

    /*
     * arm
     */
    000000000040055c :
      40055c:    d10043ff     sub    sp, sp, #0x10
      400560:    b9000fe0     str    w0, [sp, #12]
      400564:    b0000080     adrp    x0, 411000 <__libc_start_main@GLIBC_2.17>
      400568:    9100c000     add    x0, x0, #0x30                 // 指向数据区
      40056c:    b9800fe1     ldrsw    x1, [sp, #12]
      400570:    f8617800     ldr    x0, [x0, x1, lsl #3]
      400574:    910043ff     add    sp, sp, #0x10
      400578:    d65f03c0     ret

    000000000040057c

    :
      40057c:    a9bf7bfd     stp    x29, x30, [sp, #-16]!
      400580:    910003fd     mov    x29, sp
      400584:    52800120     mov    w0, #0x9                       // #9
      400588:    97fffff5     bl    40055c
      40058c:    aa0003e1     mov    x1, x0
      400590:    90000000     adrp    x0, 400000 <_init-0x3e8>
      400594:    911b6000     add    x0, x0, #0x6d8
      400598:    97ffffae     bl    400450
      40059c:    d503201f     nop
      4005a0:    a8c17bfd     ldp    x29, x30, [sp], #16
      4005a4:    d65f03c0     ret


    #endif

  • 相关阅读:
    【组件攻击链】一文看懂 Spring 全家桶各类 RCE 漏洞
    四足步行机器人的结构设计及仿真
    CentOS 7 安装 MySQL5.7
    Redis缓存穿透问题的解决思路
    【Web3 系列开发教程——创建你的第一个 NFT(2)】NFT 历史回溯
    【机器学习并行计算】2 parameter server参数服务器
    【UR #7 C】水题走四方(DP)
    制作一个简单HTML西安旅游网页(HTML+CSS)
    声呐直线阵正交混频实验(HEU信息与信号处理创新实践项目一)
    智慧园区信息化管理系统发展现状及难题
  • 原文地址:https://blog.csdn.net/xiaozhiwise/article/details/133157769