zoukankan      html  css  js  c++  java
  • 20145325张梓靖 《信息安全系统设计基础》第5周学习总结

    20145325张梓靖 《信息安全系统设计基础》第5周学习总结

    教材学习内容总结

    • gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编; 注意函数前两条和后两条汇编代码,所有函数都有,建立函数调用栈帧

    • 二进制文件可以用od 命令查看,也可以用gdb的x命令查看。 有些输出内容过多,我们可以使用 more或less命令结合管道查看,也可以使用输出重定向来查看
      od code.o | more
      od code.o > code.txt

    • Linux和Windows的汇编格式有点区别:ATT格式和Intel格式

    • esi edi可以用来操纵数组,esp ebp用来操作栈帧。 对于寄存器,特别是通用寄存器中的eax,ebx,ecx,edx,32位的eax,16位的ax,8位的ah,al都是独立的

    • 不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下。能区分MOV,MOVS,MOVZ,掌握push,pop,栈顶元素的地址是所有栈中元素地址中最低的

    • 局部变量保存在寄存器中

    • 有条件跳转的条件看状态寄存器(教材上叫条件码寄存器) ,leal不改变条件码寄存器

    • CMP用在不改变原数,只需要知道数据之间的关系;SUB用在需要得到两个数据进行相减后的结果; SET指令根据t=a-b的结果设置条件码

    • 函数返回值存在%eax中

    • 使用GDB的堆栈跟踪功能(GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令)

    1.在栈帧之间切换

    frame args 将当前栈帧设置为args(编号或Address)指定的栈帧,并打印该栈帧的简要信息。

    up n 向上回退n个栈帧(更外层),n默认为1.

    down n 向下前进n个栈帧(更内层),n默认为1.

    2.打印栈帧信息(不移动栈帧)

    frame 打印当前栈帧的简要信息。

    info frame 打印当前栈帧的详细信息。

    info frame args 打印指定栈帧的详细信息。

    info args 打印函数参数信息。

    info locals 打印当前可访问的局部变量的信息。

    3.打印调用堆栈

    backtrace 打印全部栈帧的简要信息,按Ctrl-c可终止打印。

    backtrace n 打印最内层的n个栈帧的简要信息。

    backtrace -n 打印最外层的n个栈帧的简要信息。

    backtrace full 打印全部栈帧的详细信息。

    backtrace full n 打印最内层的n个栈帧的详细信息。

    backtrace full -n 打印最外层的n个栈帧的详细信息。

    课后作业中的问题和解决过程

    对源代码进行汇编查看

    相应栈帧的表示(到g1函数准备返回的时候)

    问题 在用GDB进行栈帧追踪时,输入bt竟然显示的是no stack

    是因为代码没运行?输入run,运行程序,结果12 显示出来,说明代码没问题,继续输入bt,显示的还是no stack

    再试试info registers,显示的没有使用寄存器,这是什么原因?
    决定换用CGDB对照着代码进行下栈帧的调试,还是同样的结果,并且上半部分代码窗口没有显示出代码

    用以前的代码试了试用CGDB调试,发现同样的,代码窗口都没有显示代码
    解决过程 找到为什么用GDB不能调试了,因为在GCC编译的时候,没有输 -g ,所以才不能在GDB中调试,同样的,CGDB也可以正常使用了
    但bt命令显示出来的东西是该代码的栈帧吗?

    本周代码托管

    代码托管

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 3500行 25篇 300小时
    第一周 70/70 2/2 22/22
    第二周 150/220 1/3 23/45
    第三周 160/380 1/4 25/70
    第四周 250/630 1/5 30/100

    参考资料

  • 相关阅读:
    梯度下降法-4.向量化和数据标准化
    梯度下降法-3.实现线性回归中的梯度下降法
    梯度下降法-2.线性回归中的梯度下降法
    梯度下降法-1.原理及简单实现
    线性回归算法-5.更多思考
    TCP/IP协议
    TFTP 服务器
    python3 系统编程进程
    python3 私有化 属性property
    python3 面向对象
  • 原文地址:https://www.cnblogs.com/zzjzzjzzj/p/5962885.html
Copyright © 2011-2022 走看看