逆向-破零64位版本

news2025/7/18 9:45:15

 

 

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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 <printf@plt+0x46e>
    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 <printf@plt+0x451>*/

    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 <printf@plt+0x4cf>
    150a:    c7 45 f8 00 00 00 00     movl   $0x0,-0x8(%rbp)            // k = 0
    1511:    eb 22                    jmp    1535 <printf@plt+0x4c5>
    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 <printf@plt+0x4a3>
    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 <printf@plt+0x49a>*/

    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 <printf@plt+0x432>
    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 <printf@plt+0x47b>
    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 <printf@plt+0x432>
    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 <printf@plt+0xf94>
    1455:    b8 00 00 00 00           mov    $0x0,%eax
    145a:    e8 11 fc ff ff           callq  1070 <printf@plt>*/
    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 <printf@plt+0xfa1>
    146b:    b8 00 00 00 00           mov    $0x0,%eax
    1470:    e8 fb fb ff ff           callq  1070 <printf@plt>*/
    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 <printf@plt+0xfae>
    1481:    b8 00 00 00 00           mov    $0x0,%eax
    1486:    e8 e5 fb ff ff           callq  1070 <printf@plt>*/
    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 <printf@plt+0x430>
    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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计基于Web的美食网站的设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【背景渐变】 —— 就算没接触过也能 一遍学会哦

前期回顾 ​回顾 前期 把你喜欢css动画嵌入到浏览器中 —— css动画 项目_0.活在风浪里的博客-CSDN博客常用酷炫动画999合集&#xff0c;代码直接复制可用&#xff0c;总用你想找的&#xff0c;快来抱走吧&#xff0c;三连&#xff0c;停&#xff01;听鹅说&#xff0c;下…

2009年408大题总结

2009年408大题第41题第42题第43题第44题第45题第46题第47题第41题 这个最容易想到的方法就是举反例&#xff0c;但是我们可以分析一下&#xff0c;每一次都取最短的路径&#xff0c;实际上就是贪心策略的应用——每次都是最优&#xff0c;但是最终的结果却一般不是最优&#xf…

第十一节:抽象类和接口【java】

目录 &#x1f947;1. 抽象类 &#x1f4d8;1.1 抽象类概念 &#x1f4d2;1.2 抽象类语法 &#x1f4d7; 1.3 抽象类特性 &#x1f3f9;2. 接口 &#x1f4d9;2.1 接口的概念 &#x1f4d5;2.2 语法规则 &#x1f4d2;2.3 接口使用 &#x1f50e;2.3.1USB接口例子 &a…

【Google Colab】使用手册、教程;使用 Google Colab 免费使用 python 服务器

Colaboratory 是一个 Google 研究项目&#xff0c;旨在帮助传播机器学习培训和研究成果。它是一个 Jupyter 笔记本环境&#xff0c;不需要进行任何设置就可以使用&#xff0c;并且完全在云端运行。Colaboratory 笔记本存储在 Google 云端硬盘中&#xff0c;并且可以共享&#x…

超详细图解kafka生产消费流程

目录&#xff1a; 一条消息在kafka是如何生产的&#xff1f; 一条消息在kafka是如何存储的&#xff1f; 一条消息在kafka是如何消费的&#xff1f; Kafka为什么高性能&#xff1f; Kafka为什么高可用&#xff1f; 一&#xff0e;一条消息在kafka是如何存储的&#xff1f; …

【前端】Vue+Element UI案例:通用后台管理系统-登陆不同用户显示不同菜单、动态添加路由

文章目录目标代码0.动态地显示菜单&#xff1a;store1.动态注册路由2.解决刷新后摆平问题总代码本篇修改的代码文件tab.js参考视频&#xff1a; VUE项目&#xff0c;VUE项目实战&#xff0c;vue后台管理系统&#xff0c;前端面试&#xff0c;前端面试项目案例链接【前端】VueEl…

spring-IOC理论推导P3

1.新建一个项目。名字叫做spring-study 2.导包 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.23</version></dependency></dependencies&…

solr-7.7.3 搭建

solr-7.7.3 搭建 solr-7.7.3 搭建 文章目录solr-7.7.3 搭建一、前期准备安裝规划(一)资料下载(二)上传文件二、安裝(一)创建新用户(二)安装solr1.solr安装包解压到/opt/module2.将解压文件名修改为solr3.修改配置文件(三)分发文件&#xff08;四&#xff09;开启solr&#xff…

YOLOv5量化调优

目录 一、背景 二、模型调优 2.1 基准选取 2.1.1 官方精度数据 2.1.2 fp32bmodel的精度 2.1.3 int8bmodel精度数据 2.2 多图量化 2.3 预处理对齐&lmdb 2.4 网络图优化 2.4.1 per_channel优化 2.4.2 accuracy_opt优化 2.4.3 conv_group优化 2.4.4 总结 2.5 混…

python中使用xlrd、xlwt操作excel表格详解

最近遇到一个情景&#xff0c;就是定期生成并发送服务器使用情况报表&#xff0c;按照不同维度统计&#xff0c;涉及python对excel的操作&#xff0c;上网搜罗了一番&#xff0c;大多大同小异&#xff0c;而且不太能满足需求&#xff0c;不过经过一番对源码的"研究"&…

移动电源出口美国和欧盟需要做什么?

手机的普遍使用也带动了充电宝的发展&#xff0c;现在是智能的时代&#xff0c;手机现在是我们每个人永远不会忘记带的东西&#xff0c;当然耗电量也是很大的。所以充电宝在这时就有很大的用处了。移动电源是一种集供电和充电功能于一体的便携式充电器&#xff0c;一般由锂离子…

杰理的蓝牙芯片的key是什么?以及该如何添加key?杰理key文件原理

目录 一、简介 关于杰理芯片的key文件&#xff0c;实际上 杰理芯片特有的一种机制&#xff0c;而这种机制就是存在于杰理芯片特有的架构&#xff0c;也是杰理公司延续将近10年的特点&#xff0c;估计以后也会是这种机制。具体为什么&#xff0c;请听我娓娓道来&#xff0c;这里…

测试大咖漫谈如何搞定软件质量?

关于质量保障&#xff0c;好像已经说过太多&#xff0c;但这里还是抽象的唠叨几句。 多年的软件测试和质量保障工作让我越来越清晰的认识到&#xff1a;质量绝对不是一个环节&#xff0c;一个工种可以搞定的。比如&#xff1a; 从对语言的误用&#xff0c;到对第三方组件的误用…

第4关: 网页排序——PageRank算法

要求&#xff1a;编写实现网页数据集PageRank算法的程序&#xff0c;对网页数据集进行处理得到网页权重排序。 ####相关知识 ######PageRank算法原理 1.基本思想&#xff1a; 如果网页T存在一个指向网页A的连接&#xff0c;则表明T的所有者认为A比较重要&#xff0c;从而把T的一…

【Shell】入门Shell(基本变量、环境变量、特殊变量)

Shell脚本一、Shell脚本的执行方式1.脚本格式要求2. 编写第一个Shell脚本3.Shell脚本的常用执行方式二、Shell的变量1.Shell变量介绍2. Shell变量的定义a. 基本语法b. 快速入门(三案例)2. Shell变量的定义a. 定义变量的规则b. 将命令的返回值赋给变量三、Shell多行注释1. 用 :&…

成本优化之使用P2P的方案的需要了解的本地SDK的背后的原理

文章目录一. P2P的SDK到底做了什么二. P2P原理1. 同流分享思路2. 目前方案三. 使用P2P后产生的问题1. 有概率出现loading转菊花2. 首次打开速度明显慢于正常的通道1-2秒参考文章一. P2P的SDK到底做了什么 P2P的SDK在我们App启动后其实是开启了一个服务&#xff0c;固定端口去监…

刷题日记【第十一篇】-笔试必刷题【小易的升级之路+找出字符串中第一个只出现一次的字符+微信红包+计算字符串的编辑距离】

1.计算字符串的编辑距离【动态规划编程题】 import java.util.Scanner; import java.io.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String args[]) throws Exception{BufferedReader reader new BufferedReader(n…

【RuoYi-Vue-Plus】扩展笔记 07 - CentOS 7 集成 Prometheus + Grafana 监控初体验

文章目录前言参考目录官方文档博客参考相关书目操作步骤1、Prometheus1.1、安装 Prometheus1.2、配置 Prometheus1.3、访问控制台2、Grafana2.1、安装 Grafana2.2、访问控制台3、Grafana 大屏配置3.1、添加 Prometheus 数据源3.2、导入 dashboards 仪表板3.3、配置 node_export…

你安全吗?丨沉默的“复仇”到底是什么东西?

作者&#xff1a;黑蛋 在电视剧《你安全吗&#xff1f;》第七集中&#xff0c;因为周游的死缠烂打&#xff0c;秦淮第一次提起了他和陈默以前的事情&#xff0c;也给出了之前虎迫公司开除陈默的原因&#xff1a;陈默妈妈被诈骗团伙骗掉所有积蓄&#xff0c;又因为此事走神出了…