首页 > 其他分享 >《信息安全系统设计与实现》第一周学习笔记

《信息安全系统设计与实现》第一周学习笔记

时间:2023-09-10 18:25:53浏览次数:35  
标签:文件 编程 第一周 信息安全 GDB 笔记 Unix Linux out

《信息安全系统设计与实现》第一周学习笔记


第一章

  • 摘要

    • 本章介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本以及其他版本。此外,还介绍了Linux的开发及其各种发行版本,列出了适用于Linux的开发的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到Microsoft Windows中的VirtualBox虚拟机和VMware虚拟机上。本章还解释了Linux的启动过程(从Linux内核启动到用户登录和命令执行),描述了Unix/Linux文件系统组织、文件类型和常用的Unix/Linux命令。最后,本章介绍了用户管理和维护 Linux系统需执行的一些系统管理任务。
  • 关于本书

    • 涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统,并着重探讨了编程实践。
  • 本书目标

    • 强化学生的编程背景知识
    • 动态数据结构的应用
    • 进程概念和进程管理
    • 并发编程
    • 定时器和定时共嗯
    • 信号、信号处理和进程间通信
    • 文件系统
    • TCP/IP和网络编程
  • 关于Unix

    • Unix是一种通用型操作系统,采用PDP-11微型计算机开发,有许多个版本
      • AT&T Unix
      • Berkeley Unix
      • HP Unix
      • IBM Unix
      • Sun Unix
  • 关于Linux

    • Linux是一个类Unix系统,包含其他Unix系统的许多特性,拥有许多版本
      • Debian Linux
      • Ubuntu Linux
      • Linux Mint
      • 基于RPM的Linux
      • Slackware Linux
  • 虚拟机上的Liunx

    • VirtualBox

    • VMware(目前正在使用)

    • Parallels Desktop

  • Unix/Linux 命令

    • ls:Is dirname:列出CWD或目录的内容。
    • cd dirname:更改目录。
    • pwd:打印CWD的绝对路径名。
    • touch filename:更改文件名时间戳(如果文件不存在,则创建文件)。
    • cat filename:显示文件内容。
    • cp src dest:复制文件。
    • mv src dest:移动或重命名文件。
    • omkdir dirname:创建目录。
    • rmdir dirname:移除(空)目录。
    • rm filename:移除或删除文件。
    • In oldfile newfile:在文件之间创建链接。
    • find:搜索文件。
    • grep:搜索文件中包含模式的行。
    • ssh:登录到远程主机。
    • gzip filename:将文件压缩为gz文件。
    • gunzip filegz:解压.gz文件。
    • tar-zcvffiletgz:从当前目录创建压缩tar文件。
    • tar-zxvffiletgz:从tgz文件中解压文件。 man:显示在线手册页。
    • zip file.zip filenames:将文件压缩为zip文件。
    • unzip filezip:解压zip文件
  • 用户账户
    输入vi /etc/passwd

    创建用户

  • sudo命令

    • 允许用户以超级用户的身份执行命令

第二章

  • Linux中的文件编辑器
    • vim编辑器
      vim有3种不同的操作模式
      命令模式:用于输入命令
      插入模式:用于输入和编辑文本
      末行模式:用于保存文件并退出
      要退出插入模式,按ESC。命令模式下,输入“:”进入末行模式,将文本保存为文件或退出vim

      • i:插入模式,插入文本
      • a:插入模式,追加文本
      • w:写入(保存文件)
      • q:退出vim
      • wq:保存并退出
      • q!:不保存更改,强制退出
    • gedit编辑器

      gedit是Ubuntu及其他使用GNOME GUI用户界面的Linux的默认编辑器,包含用于编辑源代码和结构化文本的工具

    • emacs编辑器

      emacs是一款强大的文本编辑器,可在多个不同的平台上运行,最受欢迎的版本是GNU Emacs。

以上三款编辑器都支持直接输入和全屏模式下的文本编辑,还支持关键词搜索,可用新文本替换字符串。

  • 使用emacs
  • 程序开发
    (1)创建源文件
    全局变量
    局部变量
    自动变量
    静态变量
    寄存器变量
    (2)gcc把源文件转成二进制可执行文件
    将C源文件转换为汇编代码文件
    将汇编代码转换成目标代码
    将目标代码转换成二进制可执行文件(链接)
  • 静态和动态链接
    • 动态链接
      可以减小每个a.out文件大小
      许多执行程序可以在内存中共享相同库函数
      修改库函数不需要重新编译源文件
  • 可执行文件
    • 二进制可执行平面文件
    • a.out可执行文件
    • ELF可执行文件
  • a.out文件的内容
    • 文件头
    • 代码段
    • 数据段
    • 符号表
  • 程序执行过程
    • 读取a.out文件头
    • sh从总大小中分配一个内存区给执行映像。
    • sh放弃旧映像,开始执行新映像。
    • 执行从crt0.o开始,调用main(),将argc和argv作为参数传递给main()
  • 程序终止
    • 正常终止
      如果程序执行成功,main()最终会返回到crt0.out,调用库函数exit(0)(系统调用)来终止进程
    • 异常终止
      遇到错误,如无效地址,非法指令,越权等
      按下ctrl+C可以产生硬件中断
      kill -s signal_number pid #signal_number=1 to 31向通过pid识别的目标进程发送信号
  • C语言中的函数调用
    • long jump
    • 32位GCC中的运行时堆栈使用情况
    • 64位GCC中的运行时堆栈使用情况
  • C语言程序与汇编代码的链接
    • gcc生成的汇编代码
    • 入口代码
    • 函数体代码
    • 退出代码
  • 链接库
    (1) 静态链接库
    -L.指定链接库路径 -l指定链接库
    () gcc -c -fPIC mysum.c gcc -shared -o libmylib.so mysum.o gcc t.c -L. -lmylib a.out ()
    (2)动态链接库
    () gcc -c mysum.c ar rcs libmylib.a mysum.o gcc -static t.c -L. -lmylib a.out ()
  • makefile
    • make工具是一个程序,它按照顺序读取makefile,以自动有选择的执行编译链接。
      一个make文件由一系列目标项、依赖项和规则组成
    • 当make程序读取makefile时,通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项
  • GDB调试工具
    • 在emacs IDE中使用GDB
      (1)源代码
      (2)编译源代码
      (3)启动GDB
      (4)多窗口GDB
      GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。与Window下的IDE不同,GDB是纯命令行执行的,并没有图形界面方法。
    • GDB的常规应用
      • 自定义程序的启动方式(指定影响程序运行的参数)
      • 设置条件断点(在条件满足时暂停程序的执行)
      • 回溯检查导致程序异常结束的原因(Core Dump)
      • 动态改变程序执行流(定位问题的辅助方式)
    • GDB的启动方式
      1.gdb
      2.gdb test.out
      3.gdb test.out core

收获

学习Unix/Linux系统编程第一章对我了解Unix和Linux系统的相关历史和演变的过程有很大的帮助。这让我对于Linux的有了更加深入的理解,确立了我未来Linux学习的目标。
在第二章,我认为最有收获的内容是对编程背景的深入了解。通过第二章我学习了mkdir、rmdir、cd、ls、mv、rm、ln、find、file/stat、cat等常见命令的用法,我了解到这些命令在日常系统编程中的具体作用,是必不可缺的工具。这些知识对于编写系统级程序和系统工具非常重要。


苏格拉底挑战过程截图:

1.系统管理知识点:






2.文本编辑器知识点:





遇到的问题

  • 问题:在练习使用文本编辑器vim时对于命令q和命令!q有点疑惑,它们的功能都是退出vim,那么有什么区别吗
  • 解决思路:询问GPT
  • GPT回答:
  • 问题:虚拟机报错
  • 解决思路:询问GPT并与同学合作,解决问题
  • GPT回答:

    最终确认是缺少了镜像文件

实践

  • 截图:


标签:文件,编程,第一周,信息安全,GDB,笔记,Unix,Linux,out
From: https://www.cnblogs.com/fanchaoming/p/17691327.html

相关文章

  • 学习笔记1
    学习笔记1第一章本书目标强化编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能信号、信号处理和进程间的通信文件系统TCP/IP和网络编程关于UnixAT&TUnixBerkeleyUnixHPUnixIBMUnixSunUnix关于LinuxDebainLinuxUbuntu......
  • 第1、2章学习笔记
    教材第一、二章读书笔记主要内容第一章主要学习了Unix的历史、开发及其各种发行版,列出了适用于Linux的各种硬件平台和虚拟机,揭示了常用的命令和文件系统组织、文件类型。第二章主要学习了基于GUI的编辑器,展示了如何在命令和GUI模式下使用EMACS编辑器来边集、编译和执行C语言......
  • 学习笔记1
    1.知识点归纳①Ubuntu②如何安装虚拟机③如何下载VMwareWorkstation④Unix/Linux命令2.问题与解决过程......
  • 经典接雨水-刷题笔记
    leetcode42按行求(测试用例通过,但超时)classSolution{publicinttrap(int[]height){intres=0;intn=height.length;intmaxh=0;for(inti=0;i<n;i++){maxh=Math.max(maxh,height[i]);}for(intr......
  • 20211421《信息安全系统设计与实现》第一周学习笔记
    知识点总结第一章关于本书研究Unix/Linux系统编程的专著,涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统。本书目标强化学生编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能......
  • 学习笔记1
    ChatGpt的苏格拉底挑战:有关内核:linux系统的核心是内核。内核控制着计算机系统的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下4种功能。·系统内存管理·软件程序管理·硬件设备管理·文件系统管理  有关GCC:GNUCompilerCollection,编译器集合......
  • Node.js+Express+Koa2开发接口学习笔记(二)
    搭建开发环境从0开始搭建,不适用任何框架使用nodemon监测文件变化,自动重启node使用cross-env设置环境变量,兼容maxlinux和windows创建项目文件夹blog-1,在终端输入命令npminit-y在根目录下创建bin=>www.js文件,将初次运行的文件www.js存放在bin目录下。同时需要修改pack......
  • 20211314王艺达信息安全系统设计与实现学习笔记(1)
    作业要求链接https://www.mosoteach.cn/web/index.php?c=interaction_homework&m=s_write&clazz_course_id=97072AE7-2C45-11EE-8539-1C34DA7B3F7C&id=F3080EAA-E3B7-414E-B311-938F0B8988F0&order_item=group&status=IN_PRGRS第一章学习总结及自测知识点归纳什么是Unix/Linux......
  • 【学习笔记】折半搜索 Meet In The Middle
    点击查看目录目录算法实现杂题乱写[CEOI2015Day2]世界冰球锦标赛题单oi-wiki算法实现我们正常的搜索应该是一个指数级的:\(2^n\)。然而我们可以把这个搜索拆成两半,设小于整张图的限制\(limit\)为合法:对于上半搜索,我们有若干符合限制的答案\(sum_1\),对于下半搜索,我......
  • swift5笔记(五):字典
    swift5笔记(五):字典Harry__Li关注IP属地:陕西2022.10.3115:48:06字数31阅读176初始化swift中需要指出字典中的类型//初始化字典varmdict:[String:Any]=[:]varmdict1=[String:Any]()letdict:[String:Any]=["name":"lhr","age":"100"]增加......