zoukankan      html  css  js  c++  java
  • 20155336 2017-2018 1 《信息安全系统设计基础》2017-9-27课堂实践

    20155336 2017-2018 1 《信息安全系统设计基础》2017-9-27课堂实践

    第一题:vi

    1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号

    2. 用Vi输入图中代码,并用gcc编译通过

    3. 在Vi中使用K查找printf的帮助文档

    4. 提交vi编辑过程截图,要全屏,包含自己的学号信息

      说起来很惭愧,第一次接触虚拟机,对很多地方都陌生,正好趁学习这门课程掌握一下虚拟机的基本操作。
      首先创建一个文件夹,命名为text1。然后将第一道题的要求都录入进去。录入完毕后,输入gcc *.c,
      发现了错误,然后vi进入到.c的文件中,修改了错误再次编译一遍,没有错误,然后就输出./a.out

    代码链接

    第二题:gcc测试

    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码

    2. 生成的可执行文件中要有自己的学号

    3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息

      第二题,按照第一节课课上记得笔记,在课下自己实践。虽然中间粗心代码出现错误,但是问题不大

    代码链接

    第三题:gdb测试

    1. 用gcc -g编译vi输入的代码
    2. 在main函数中设置一个行断点
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    这道题出现了很多问题,首先下载GDB,然后在设置了条件断点之后,程序调试的时候没有在断点处停下。在空循环中加个打印空行再设置条件断点然后运行就可以了。(中间由于很多次自己都忘记了编译~~~~~导致每次都会显示自己定义的n没有定义。)
    

    代码链接

    第四题:静态库测试

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?

    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

      这道题将自己的代码编译为以下形式:
      gcc -c add.c -o add.o
      gcc -c sub.c -o sub.o
      gcc -c mul.c -o mul.o
      gcc -c div.c -o div.o
      然后使用ar创建一个存档文件:ar rcs mymath.a add.o sub.o mul.o div.o
      编译的时候再将程序和mymath.a链接起来:gcc -static -o link1 main.o mymath.a
      接着运行就可以了!
      

    第五题:共享库

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?

    2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

      创建一个共享文件
      gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c
      创建一个可执行的目标文件
      gcc -o link2 main.c ./mymath.so
      运行即可
      

    代码链接

    Makefile:

    1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

    2 提交Make过程截图,要全屏,包含自己的学号信息

    首先上网百度了一下makefile 到底是用来做什么的
    答:makefile是规则,是编译,连接等的规则,是对整个工程进行编译、连接的规则。
    自我理解就是在执行make之前,需要命名一个Makefile的特殊文件,告诉它需要完成什么任务,该怎么做,在文件里输入自己想要偷懒的地方,然后设置完之后,
    make一下就可以了!
    

    代码链接

    Myod:

    1 复习c文件处理内容

    2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能

    1. main与其他分开,制作静态库和动态库

    2. 编写Makefile

    5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

    	od -tx -tc的功能:就是在十六进制输出其ascii值的同时,显示对应的文件内容
    

    代码:

    #include"head.h"
    void main(int argc,char *argv[])
    {
    char ch[16];
    int a,j,i,x = 0; 
    int in=open(argv[1],O_RDONLY,0); 
    
    
    printf("%07o",0);
    printf(" ");
    
    while((a=read(in,ch,16))!=0)
    {x++;  
    
    
    for(i=0;i<a;i++)
    if(!iscntrl(ch[i]))
    printf("%4x",ch[i]);
    printf("
    ");
    printf("        "); 
    
    for(j=0;j<a;j++)
    if(!iscntrl(ch[j]))
    printf("%4c",ch[j]);
    printf("%07o",16*(x-1)+a);
    printf(" ");
    }
    close(in);
    }
    

    补充(参考结对同伴的博客 理解了老师的意思!)

    通过这次的课堂实践我认识到我实现的是od -tc -tx的功能,而od -tc -tx1实现的功能是将内容以十六进制显示,并以一个字节为单位,两者的区别是多了一个1,如果tx后面没有参数,默认的是四字节为一组,如有参数SIZE,以SIZE字节为一组输出。修改代码后,实现od -tc -tx1功能。

  • 相关阅读:
    centos vps 安装socks5服务
    C#解析Json的类
    C# MD5 SHA1 SHA256 SHA384 SHA512 示例 标准版 专业版 旗舰版
    SunOS 4上MySQL详尽事变
    Solaris 2.7上MySQL 属意事故
    MySQL字符串
    MySQL安设布局
    运用PerlDBI/DBD接口的成绩
    MySQL 支撑的利用体系
    使用MySQL哪个版本
  • 原文地址:https://www.cnblogs.com/hxl681207/p/7988764.html
Copyright © 2011-2022 走看看