逆向-破零64位版本
创始人
2024-01-21 21:51:51

 

 

// 排版有点乱,没有图片直观。

#include
#include
#include

int f_14a2(int *va, int vb)
{
    /*14a2:    f3 0f 1e fa              endbr64
    14a6:    55                       push   %rbp
    14a7:    48 89 e5                 mov    %rsp,%rbp
    14aa:    48 89 7d e8              mov    %rdi,-0x18(%rbp) va
    14ae:    89 75 e4                 mov    %esi,-0x1c(%rbp)    vb */
    //14b1:    c7 45 fc 00 00 00 00     movl   $0x0,-0x4(%rbp)
        int i = 0;

    //14b8:    c7 45 f8 00 00 00 00     movl   $0x0,-0x8(%rbp)
        int j = 0;

    /*14bf:    eb 1d                    jmp    14de
    14c1:    8b 45 f8                 mov    -0x8(%rbp),%eax    // eax = i
    14c4:    48 98                    cltq   
    14c6:    48 8d 14 85 00 00 00     lea    0x0(,%rax,4),%rdx    // rdx = i + 4 + 0x0
    14cd:    00
    14ce:    48 8b 45 e8              mov    -0x18(%rbp),%rax        // va
    14d2:    48 01 d0                 add    %rdx,%rax            // rax = va + i + 4
    14d5:    8b 00                    mov    (%rax),%eax            // eax = va[i]
    14d7:    01 45 fc                 add    %eax,-0x4(%rbp)        // j = j + va[i]
    14da:    83 45 f8 01              addl   $0x1,-0x8(%rbp)        // i++
    14de:    8b 45 f8                 mov    -0x8(%rbp),%eax
    14e1:    3b 45 e4                 cmp    -0x1c(%rbp),%eax
    14e4:    7c db                    jl     14c1 */

    for (i = 0; i < vb; i++) {
        j += va[i];
    }

    /*14e6:    8b 45 fc                 mov    -0x4(%rbp),%eax
    14e9:    5d                       pop    %rbp
    14ea:    c3                       retq   */

    return j;
}

int f_14eb(int (*va)[4], int vb)
{
    /*14eb:    f3 0f 1e fa              endbr64
    14ef:    55                       push   %rbp
    14f0:    48 89 e5                 mov    %rsp,%rbp
    14f3:    48 89 7d e8              mov    %rdi,-0x18(%rbp)        // va
    14f7:    89 75 e4                 mov    %esi,-0x1c(%rbp)*/    // vb
    //14fa:    c7 45 fc 00 00 00 00     movl   $0x0,-0x4(%rbp)
        int i = 0;

    //1501:    c7 45 f4 00 00 00 00     movl   $0x0,-0xc(%rbp)
        int j = 0;
        int k;

    /*1508:    eb 35                    jmp    153f
    150a:    c7 45 f8 00 00 00 00     movl   $0x0,-0x8(%rbp)            // k = 0
    1511:    eb 22                    jmp    1535
    1513:    8b 45 f4                 mov    -0xc(%rbp),%eax            // eax = i
    1516:    48 98                    cltq   
    1518:    48 c1 e0 04              shl    $0x4,%rax            // rax = i << 4
    151c:    48 89 c2                 mov    %rax,%rdx            // rdx = i << 4
    151f:    48 8b 45 e8              mov    -0x18(%rbp),%rax        // rax = va
    1523:    48 01 c2                 add    %rax,%rdx            // rdx = va + i << 4
    1526:    8b 45 f8                 mov    -0x8(%rbp),%eax        // eax = j
    1529:    48 98                    cltq   
    152b:    8b 04 82                 mov    (%rdx,%rax,4),%eax    // eax = rdx + i * 4
    152e:    01 45 fc                 add    %eax,-0x4(%rbp)        // j = j+(rdx+i*4)
    1531:    83 45 f8 01              addl   $0x1,-0x8(%rbp)        // k++
    1535:    83 7d f8 03              cmpl   $0x3,-0x8(%rbp)        // k < 4
    1539:    7e d8                    jle    1513
    153b:    83 45 f4 01              addl   $0x1,-0xc(%rbp)        // i++
    153f:    8b 45 f4                 mov    -0xc(%rbp),%eax        // eax = i
    1542:    3b 45 e4                 cmp    -0x1c(%rbp),%eax
    1545:    7c c3                    jl     150a */

    for (i = 0; i < vb; i++) {
        for (k = 0; k < 4; k++) {
            j = va[i][k];
        }
    }

    /*1547:    8b 45 fc                 mov    -0x4(%rbp),%eax
    154a:    5d                       pop    %rbp
    154b:    c3                       retq   */

    return j;

}

int f_1372()
{
    /*1372:    f3 0f 1e fa              endbr64
    1376:    55                       push   %rbp
    1377:    48 89 e5                 mov    %rsp,%rbp
    137a:    48 83 c4 80              add    $0xffffffffffffff80,%rsp
    137e:    64 48 8b 04 25 28 00     mov    %fs:0x28,%rax
    1385:    00 00
    1387:    48 89 45 f8              mov    %rax,-0x8(%rbp)
    138b:    31 c0                    xor    %eax,%eax*/
    //138d:    c7 45 a8 0a 00 00 00     movl   $0xa,-0x58(%rbp)
    //1394:    c7 45 ac 14 00 00 00     movl   $0x14,-0x54(%rbp)
    int a[2] = {10, 20};

    //139b:    48 8d 45 a8              lea    -0x58(%rbp),%rax
    //139f:    48 89 45 98              mov    %rax,-0x68(%rbp)
    int *p1 = a;

    /*13a3:    c7 45 d0 01 00 00 00     movl   $0x1,-0x30(%rbp)
    13aa:    c7 45 d4 02 00 00 00     movl   $0x2,-0x2c(%rbp)
    13b1:    c7 45 d8 03 00 00 00     movl   $0x3,-0x28(%rbp)
    13b8:    c7 45 dc f7 ff ff ff     movl   $0xfffffff7,-0x24(%rbp)
    13bf:    c7 45 e0 04 00 00 00     movl   $0x4,-0x20(%rbp)
    13c6:    c7 45 e4 05 00 00 00     movl   $0x5,-0x1c(%rbp)
    13cd:    c7 45 e8 06 00 00 00     movl   $0x6,-0x18(%rbp)
    13d4:    c7 45 ec f8 ff ff ff     movl   $0xfffffff8,-0x14(%rbp)*/
    int b[2][4] = {{1, 2, 3, -9}, {4, 5, 6, -8}};

    //13db:    48 8d 45 d0              lea    -0x30(%rbp),%rax
    //13df:    48 89 45 a0              mov    %rax,-0x60(%rbp)
    int (*p2)[4] = b;

    /*13e3:    48 8b 45 98              mov    -0x68(%rbp),%rax
    13e7:    be 02 00 00 00           mov    $0x2,%esi
    13ec:    48 89 c7                 mov    %rax,%rdi
    13ef:    e8 ae 00 00 00           callq  14a2
    13f4:    89 45 8c                 mov    %eax,-0x74(%rbp)*/
    int ret1 = f_14a2(p1, 2);

    /*13f7:    48 8b 45 a0              mov    -0x60(%rbp),%rax
    13fb:    be 02 00 00 00           mov    $0x2,%esi
    1400:    48 89 c7                 mov    %rax,%rdi
    1403:    e8 e3 00 00 00           callq  14eb
    1408:    89 45 90                 mov    %eax,-0x70(%rbp)*/
    int ret2 = f_14eb(p2, 2);

    /*140b:    c7 45 b0 04 00 00 00     movl   $0x4,-0x50(%rbp)
    1412:    c7 45 b4 04 00 00 00     movl   $0x4,-0x4c(%rbp)
    1419:    c7 45 b8 04 00 00 00     movl   $0x4,-0x48(%rbp)
    1420:    c7 45 bc 05 00 00 00     movl   $0x5,-0x44(%rbp)
    1427:    c7 45 c0 05 00 00 00     movl   $0x5,-0x40(%rbp)
    142e:    c7 45 c4 05 00 00 00     movl   $0x5,-0x3c(%rbp)*/
    int c[6] = {4, 4, 4, 5, 5, 5};

    /*1435:    48 8d 45 b0              lea    -0x50(%rbp),%rax
    1439:    be 06 00 00 00           mov    $0x6,%esi
    143e:    48 89 c7                 mov    %rax,%rdi
    1441:    e8 5c 00 00 00           callq  14a2
    1446:    89 45 94                 mov    %eax,-0x6c(%rbp)*/
    int ret3 = f_14a2(c, 6);

    /*1449:    8b 45 8c                 mov    -0x74(%rbp),%eax
    144c:    89 c6                    mov    %eax,%esi
    144e:    48 8d 3d af 0b 00 00     lea    0xbaf(%rip),%rdi        # 2004
    1455:    b8 00 00 00 00           mov    $0x0,%eax
    145a:    e8 11 fc ff ff           callq  1070 */
    printf("ret1 = %d\n", ret1);

    /*145f:    8b 45 90                 mov    -0x70(%rbp),%eax
    1462:    89 c6                    mov    %eax,%esi
    1464:    48 8d 3d a6 0b 00 00     lea    0xba6(%rip),%rdi        # 2011
    146b:    b8 00 00 00 00           mov    $0x0,%eax
    1470:    e8 fb fb ff ff           callq  1070 */
    printf("ret2 = %d\n", ret2);

    /*1475:    8b 45 94                 mov    -0x6c(%rbp),%eax
    1478:    89 c6                    mov    %eax,%esi
    147a:    48 8d 3d 9d 0b 00 00     lea    0xb9d(%rip),%rdi        # 201e
    1481:    b8 00 00 00 00           mov    $0x0,%eax
    1486:    e8 e5 fb ff ff           callq  1070 */
    printf("ret3 = %d\n", ret3);

    /*148b:    90                       nop
    148c:    48 8b 55 f8              mov    -0x8(%rbp),%rdx
    1490:    64 48 33 14 25 28 00     xor    %fs:0x28,%rdx
    1497:    00 00
    1499:    74 05                    je     14a0
    149b:    e8 c0 fb ff ff           callq  1060 <__stack_chk_fail@plt>
    14a0:    c9                       leaveq
    14a1:    c3                       retq   */

    return 0;
}

int f_154c(){ return 0; }
int f_1169(){ return 0; }
int f_127a(){ return 0; }
int f_12ac(){ return 0; }
int f_1308(){ return 0; }
int f_16d2(){ return 0; }
int f_18c2(){ return 0; }

int main()
{
    f_1372();
    f_154c();
    f_1169();
    f_127a();
    f_12ac();
    f_1308();
    f_16d2();
    f_18c2();

    return 0;
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...