逆向-beginners之结构体-成员地址访问

#include <stdio.h>
#include <time.h>

/*
 * 字节型数组
 */

int main()
{
    struct tm t;
    time_t unix_time;
    int i=0, j=0;

    unix_time = time(NULL);

    localtime_r(&unix_time, &t);

    for (i = 0; i < 9; i++) {
        for (j = 0; j < 4; j++)
            printf("0x%02X ", ((unsigned char *)&t)[i*4+j]);
        
        printf("\n");
    }

    return 0;
}

#if 0
/*
 * intel
 */
00000000000011c9 <main>:
    11c9:    f3 0f 1e fa              endbr64 
    11cd:    55                       push   %rbp
    11ce:    48 89 e5                 mov    %rsp,%rbp
    11d1:    48 83 ec 50              sub    $0x50,%rsp
    11d5:    64 48 8b 04 25 28 00     mov    %fs:0x28,%rax
    11dc:    00 00 
    11de:    48 89 45 f8              mov    %rax,-0x8(%rbp)
    11e2:    31 c0                    xor    %eax,%eax
    11e4:    c7 45 b0 00 00 00 00     movl   $0x0,-0x50(%rbp)
    11eb:    c7 45 b4 00 00 00 00     movl   $0x0,-0x4c(%rbp)
    11f2:    bf 00 00 00 00           mov    $0x0,%edi
    11f7:    e8 d4 fe ff ff           callq  10d0 <time@plt>
    11fc:    48 89 45 b8              mov    %rax,-0x48(%rbp)
    1200:    48 8d 55 c0              lea    -0x40(%rbp),%rdx
    1204:    48 8d 45 b8              lea    -0x48(%rbp),%rax
    1208:    48 89 d6                 mov    %rdx,%rsi
    120b:    48 89 c7                 mov    %rax,%rdi
    120e:    e8 8d fe ff ff           callq  10a0 <localtime_r@plt>
    1213:    c7 45 b0 00 00 00 00     movl   $0x0,-0x50(%rbp)        // x=0
    121a:    eb 52                    jmp    126e <main+0xa5>        // for x
    121c:    c7 45 b4 00 00 00 00     movl   $0x0,-0x4c(%rbp)        // y=0
    1223:    eb 35                    jmp    125a <main+0x91>        // for y
    1225:    8b 45 b0                 mov    -0x50(%rbp),%eax
    1228:    8d 14 85 00 00 00 00     lea    0x0(,%rax,4),%edx    // edx=x*4+0x0
    122f:    8b 45 b4                 mov    -0x4c(%rbp),%eax        // eax=y
    1232:    01 d0                    add    %edx,%eax            
    1234:    48 98                    cltq                        // rax=y+x*4
    1236:    48 8d 55 c0              lea    -0x40(%rbp),%rdx        // rdx=rbp-0x40
    123a:    48 01 d0                 add    %rdx,%rax            // rax=rbp-0x40+x*4+y
    123d:    0f b6 00                 movzbl (%rax),%eax            // eax=(rbp-0x40+x*4+y)
    1240:    0f b6 c0                 movzbl %al,%eax                // eax=al
    1243:    89 c6                    mov    %eax,%esi
    1245:    48 8d 3d b8 0d 00 00     lea    0xdb8(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    124c:    b8 00 00 00 00           mov    $0x0,%eax
    1251:    e8 6a fe ff ff           callq  10c0 <printf@plt>    
    1256:    83 45 b4 01              addl   $0x1,-0x4c(%rbp)        // y++
    125a:    83 7d b4 03              cmpl   $0x3,-0x4c(%rbp)        // y-0x3
    125e:    7e c5                    jle    1225 <main+0x5c>        // for y
    1260:    bf 0a 00 00 00           mov    $0xa,%edi
    1265:    e8 26 fe ff ff           callq  1090 <putchar@plt>
    126a:    83 45 b0 01              addl   $0x1,-0x50(%rbp)        // x++
    126e:    83 7d b0 08              cmpl   $0x8,-0x50(%rbp)        // x-0x8
    1272:    7e a8                    jle    121c <main+0x53>        // for x
    1274:    b8 00 00 00 00           mov    $0x0,%eax
    1279:    48 8b 4d f8              mov    -0x8(%rbp),%rcx
    127d:    64 48 33 0c 25 28 00     xor    %fs:0x28,%rcx
    1284:    00 00 
    1286:    74 05                    je     128d <main+0xc4>
    1288:    e8 23 fe ff ff           callq  10b0 <__stack_chk_fail@plt>
    128d:    c9                       leaveq 
    128e:    c3                       retq   
    128f:    90                       nop

/*
 * arm
 */
000000000040064c <main>:
  40064c:    a9ba7bfd     stp    x29, x30, [sp, #-96]!
  400650:    910003fd     mov    x29, sp
  400654:    b9005fbf     str    wzr, [x29, #92]
  400658:    b9005bbf     str    wzr, [x29, #88]
  40065c:    d2800000     mov    x0, #0x0                       // #0
  400660:    97ffffa4     bl    4004f0 <time@plt>
  400664:    f9000fa0     str    x0, [x29, #24]
  400668:    910083a1     add    x1, x29, #0x20
  40066c:    910063a0     add    x0, x29, #0x18
  400670:    97ffff9c     bl    4004e0 <localtime_r@plt>
  400674:    b9005fbf     str    wzr, [x29, #92]
  400678:    1400001a     b    4006e0 <main+0x94>
  40067c:    b9005bbf     str    wzr, [x29, #88]
  400680:    14000010     b    4006c0 <main+0x74>
  400684:    b9405fa0     ldr    w0, [x29, #92]
  400688:    531e7401     lsl    w1, w0, #2
  40068c:    b9405ba0     ldr    w0, [x29, #88]
  400690:    0b000020     add    w0, w1, w0
  400694:    93407c00     sxtw    x0, w0
  400698:    910083a1     add    x1, x29, #0x20
  40069c:    8b000020     add    x0, x1, x0
  4006a0:    39400000     ldrb    w0, [x0]
  4006a4:    2a0003e1     mov    w1, w0
  4006a8:    90000000     adrp    x0, 400000 <_init-0x4a8>
  4006ac:    911ea000     add    x0, x0, #0x7a8
  4006b0:    97ffffa0     bl    400530 <printf@plt>
  4006b4:    b9405ba0     ldr    w0, [x29, #88]
  4006b8:    11000400     add    w0, w0, #0x1
  4006bc:    b9005ba0     str    w0, [x29, #88]
  4006c0:    b9405ba0     ldr    w0, [x29, #88]
  4006c4:    71000c1f     cmp    w0, #0x3
  4006c8:    54fffded     b.le    400684 <main+0x38>
  4006cc:    52800140     mov    w0, #0xa                       // #10
  4006d0:    97ffff9c     bl    400540 <putchar@plt>
  4006d4:    b9405fa0     ldr    w0, [x29, #92]
  4006d8:    11000400     add    w0, w0, #0x1
  4006dc:    b9005fa0     str    w0, [x29, #92]
  4006e0:    b9405fa0     ldr    w0, [x29, #92]
  4006e4:    7100201f     cmp    w0, #0x8
  4006e8:    54fffcad     b.le    40067c <main+0x30>
  4006ec:    52800000     mov    w0, #0x0                       // #0
  4006f0:    a8c67bfd     ldp    x29, x30, [sp], #96
  4006f4:    d65f03c0     ret

#endif

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

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

相关文章

海外代理IP是什么?如何使用?

一、海外代理IP是什么&#xff1f; 首先&#xff0c;代理服务器是在用户和互联网之间提供网关的系统或路由器。它是一个服务器&#xff0c;被称为“中介”&#xff0c;因为它位于最终用户和他们在线访问的网页之间。 海外IP代理是就是指从海外地区获取的IP地址&#xff0c;用…

Zookeeper高级_四字命令

之前使用stat命令来验证ZooKeeper服务器是否启动成功&#xff0c;这里的stat命令就是ZooKeeper 中最为典型的命令之一。ZooKeeper中有很多类似的命令&#xff0c;它们的长度通常都是4个英文字母&#xff0c;因此我们称之为“四字命令”。 添加配置 vim zoo.cfg 4lw.commands…

C++之类和函数权限访问总结(二百二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

window便捷使用技巧(LTS)

目前很乱&#xff0c;有空整理 %AppData%\Microsoft\Windows\Recent\AutomaticDestinations Windows应用程序设置快捷键 AutoHotkey组合键设置 热键重复调用 powertoy工具连接 Windows常用shell命令 2 台电脑共享键鼠最简单教程 QTTabBar 「资源管理器」该有的样子 win10电脑…

为什么网络安全缺口很大,而招聘却很少?学网络安全真的没有前途吗?

2020年我国网络空间安全人才数量缺口超过了140万&#xff0c;就业人数却只有10多万&#xff0c;缺口高达了93%。这里就有人会问了&#xff1a; 1、网络安全行业为什么这么缺人&#xff1f; 2、明明人才那么稀缺&#xff0c;为什么招聘时招安全的人员却没有那么多呢&#xff1…

设计模式再探——宏观篇

目录 一、背景介绍二、思路&方案三、过程1.宏观介绍2.目的与意义3.七大原则的定义与边界4.思路由来 四、总结五、升华 一、背景介绍 最近在做产品技术建模的过程中&#xff0c;一些地方刻意用到了设计模式&#xff0c;而一些地方也用到了但是并不是很明确。 于是乎就带着…

容器核心技术之Namespace与Cgroup

容器是一种流行的虚拟化技术&#xff0c;它允许我们在同一台计算机上与其他进程在独立环境中运行进程。那么容器是如何做到这一点的呢&#xff1f;为此&#xff0c;容器是从 Linux 内核的一些新功能构建的&#xff0c;其中两个主要功能是“namespace”和“cgroup”。 1.Namespa…

蓝桥杯 题库 简单 每日十题 day5

01 字符计数 字符计数 题目描述 给定一个单词&#xff0c;请计算这个单词中有多少个元音字母&#xff0c;多少个辅音字母。 元音字母包括a,e&#xff0c;i,o&#xff0c;u&#xff0c;共五个&#xff0c;其他均为辅音字母。 输入描述 输入格式&#xff1a; 输入一行&#xff0…

形式化验证方法研究综述

摘要&#xff1a;形式化验证是证明软件、硬件或系统正确性的一种方法&#xff0c;近年来受到了越来越多的关注。 本文对形式化验证的研究进行了综述。首先介绍了形式化验证的基本概念&#xff0c;然后重点介绍了形式化验证的三种技术&#xff0c;包括模型检测、定理证明和等价性…

华为华三40G带宽互通连接测试

郁闷了几天了&#xff0c;今天竟然做了件爽事&#xff01;慢慢说来。 今天下雨&#xff0c;下午娃上学&#xff0c;我送老婆去学校上课。之后到实验室&#xff0c;今年申请买的两台交换机正好送到&#xff1a; S5500V2-54S-EI&#xff1a;48个10/100/1000TX以太网端口&#x…

三维模型3DTile格式轻量化在数据存储的重要性分析

三维模型3DTile格式轻量化在数据存储的重要性分析 三维模型3DTile格式轻量化在数据存储中占有重要地位。随着科技的不断发展&#xff0c;尤其是空间信息科技的进步&#xff0c;人们对于三维地理空间数据的需求日益增长。然而&#xff0c;这类数据通常具有大尺度、高精度等特点&…

stdio.h

1.#include <corecrt.h> 1.1#include <vcruntime.h> 2.#include <corecrt_wstdio.h> 2.1#include <corecrt.h> 2.2#include <corecrt_stdio_config.h> 2.2.1#include <corecrt.h>

实例讲解Spring boot动态切换数据源

前言 在公司的系统里&#xff0c;由于数据量较大&#xff0c;所以配置了多个数据源&#xff0c;它会根据用户所在的地区去查询那一个数据库&#xff0c;这样就产生了动态切换数据源的场景。 今天&#xff0c;就模拟一下在主库查询订单信息查询不到的时候&#xff0c;切换数据…

nacos-api

登录 http://xx:8848/nacos/v1/auth/users/login?usernamexx&passwordxx 查询配置 http://xx:8848/nacos/v1/cs/configs?dataIdtest&grouptest&tenant5d24ca22-e3b0-4808-ba58-bbeeffa02195

[C++基础]-继承

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、模板的…

(23)认识Linq:序列与集合,延迟与缓存,链式与查询式,性能提升技巧

本文参考https://www.bilibili.com/video/BV1rx41157DS/?p6&spm_id_from333.880.my_history.page.click&vd_source2a0404a7c8f40ef37a32eed32030aa18 难度&#xff1a;中级 一、Enumerables与IEnumerable 1、什么是Enumerables? (1)Enumerabl…

LabVIEW崩溃问题解决方法

LabVIEW崩溃问题解决方法 LabVIEW在运行中出现崩溃的情况&#xff0c;确实让人很崩溃。不过按照下面的方法可以逐步排查解决。 在LabVIEW开发环境中浏览时&#xff0c;LabVIEW崩溃并显示以下错误&#xff1a; 解决方案 LabVIEW内部错误和崩溃的初步故障排除步骤&#xff1a;…

【蓝桥杯选拔赛真题62】Scratch判断小球 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch判断小球 一、题目要求 编程实现 二、案例分析 1、角色分析

bleve全文检索实现站内搜索(Go 搭建 qiucode.cn 之十)

一说到全文检索这个词时,最先蹦出在脑海中的必然是Elasticsearch,毕竟国内碗Java是多于其他编程语言的。 然而,这两者并不具有可比性,就像一个编程语言与另一个编程语言的较量,说这个编程语言优于那个编程语言。 每个编程语言的存在总是为了解决当下的问题,当然咯,一个项…

docker 操作redis

1查看容器 2进入容器 exec表示在运行的容器中执行命令it表示以终端交互的方式执行命令/bin/bash表示需要指定的命令 3进入容器后可通过redis-cli命令连接容器内的redis服务器&#xff0c;可通过set创建变量&#xff0c;get获取变量的值 4key * 查看所有key 通过ping 查看redi…