zoukankan      html  css  js  c++  java
  • 2.3.1测试

    2.3.1测试

    作者:20191322wyl

    本次实验在OpenEuler系统进行,安装教程参考我的博客

    任务详情

    1. 推荐在OpenEuler系统中实现
    2. 编辑并运行2.3.1中的代码,要求在不修改t2.c 和 t1.c中main函数中的代码的情况下,程序运行结果是你的后四位学号。提交代码和运行结果截图
    3. 网上学习objdump命令,提交不少于5篇博客链接和微信读书上的图书链接,并给出你认为最好的讲解资源的链接或图书名及章节
    4. 用objdump分析第1步中的可执行文件和目标文件,提交你的分析截图以及如何和教材讲解内容对应的,比如obj文件的文件头,代码段,数据段等,可执行文件如何链接mysum的

    代码实现

    1322 - 1 - 2 = 1319

    所以只用把g的值改为1319即可

    objdump命令学习

    博客1

    博客2

    博客3

    博客4

    博客5

    我认为最好的一篇博客是第5篇,排版工整,讲解清晰,并且提供了一个附带源代码的程序做演示,让人一目了然。

    objdump命令实践

    实践

    1. 首先使用objdimp -f a.out显示文件头信息

    可以看到,在Linux系统中默认的可执行文件格式为ELF,并且程序的起始地址不是0x00。

    1. 使用objdump -h a.out查看a.out文件的各个section的头部摘要信息,可以看到每节的大小

      !

    2. 使用objdump -S a.out 反汇编源代码

      发现了.init段和.plt等其他段,在书上没有发现对应内容

      百度找到了答案:

      • .init段:程序初始化段,动态库的构建函数
      • .plt段:动态库链接的跳转表
    3. 根据命令objdump -t a.out查看a.out符号表

    4. objdump -f t1.o查看目标文件的文件头

      发现.o文件起始地址是0x0,但是ELF文件起始地址不是

    5. 使用`objdump -h t1.o查看a.out文件的各个section的头部摘要信息,可以看到每节的大小

    6. objdump -S t1.o反汇编目标文件

    7. 根据命令objdump -t t1.o查看t1.o符号表

    执行文件如何链接mysum

    使用callq调用

  • 相关阅读:
    详解go语言的array和slice 【一】
    node.js 事件循环
    搭建Docker私有仓库--自签名方式
    详解JavaScript闭包
    [个人翻译]Redis 集群教程(下)
    转:CMake 使用方法
    转: Ogre实现无缝地图要改的地方 记下来 用的时候可以看
    转:ogre的编译及安装
    转:Ogre TerrainGroup地形赏析
    转:如何编译delta3d
  • 原文地址:https://www.cnblogs.com/BillGreen/p/15484942.html
Copyright © 2011-2022 走看看