- 机械工业出版社
- 9787111793328
- 1-1
- 2026-01-26
- 641
- 工学
- 计算机类
- 计算机类
- 本科
内容简介
本书作为主教材《计算机系统:基于x86+Linux平台》配套的程序调试分析及模拟器设计实践教材,设计了基础级验证、模块级分析、系统级设计和高阶综合编程与分析4个级别的实践项目。基础级验证实践项目包括实验系统的安装和工具软件的使用、程序调试命令和指令系统基础、数据的机器级表示、数据的基本运算、程序的机器级表示等方面的实验;模块级分析实践项目包括二进制程序分析与逆向工程、缓冲区溢出攻击、程序链接与ELF目标文件等方面的实验;系统级设计实践项目通过C语言编程设计实现一个功能完备但简化的x86模拟器;高阶综合编程与分析实践项目包括堆栈的使用及堆分配器的实现、程序正确性与程序性能优化、网络编程与并发编程等方面的实验。
本书可以作为高等院校计算机专业本科或高职高专学生计算机系统基础类课程的教学辅助教材,也可以作为计算机技术人员的参考书。
本书可以作为高等院校计算机专业本科或高职高专学生计算机系统基础类课程的教学辅助教材,也可以作为计算机技术人员的参考书。
目录
目 录
出版说明
前言
第一部分 基础级验证实验
第1章 实验系统的安装和工具软件
的使用 2
实验1 实验系统的安装和配置 2
实验2 常用命令和工具软件的使用 16
第2章 程序调试命令和指令系统基础 25
实验1 程序调试命令 25
实验2 IA-32指令系统基础 30
*实验3 在C程序中嵌入汇编指令 37
第3章 数据的机器级表示实验 45
实验1 整型数据的真值与机器数 45
实验2 浮点型数据的真值与机器数 50
实验3 数据的宽度与存放顺序 57
实验4 不同整型数据之间的转换 62
实验5 整型数据与浮点型数据之间
的转换 70
第4章 数据的基本运算实验 76
实验1 整数加减运算 76
实验2 整数乘运算 85
实验3 整数除运算 92
实验4 浮点数运算 101
第5章 程序的机器级表示实验 109
实验1 过程调用的实现和栈帧结构 109
实验2 流程控制语句的实现 119
实验3 复杂数据类型的分配和访问 127
*实验4 缓冲区溢出攻击 133
*实验5 x86-64架构中程序的机器级表示 150
第二部分 模块级分析实验
第6章 二进制程序分析与逆向工程 160
实验1 字符串比较 161
实验2 浮点数的表示 164
实验3 循环控制语句 167
实验4 选择–分支控制语句 171
实验5 过程的递归调用 175
实验6 数组类型变量的处理 180
实验7 指针类型变量的处理 186
实验8 结构体类型变量与链表的处理 194
第7章 缓冲区溢出攻击 202
实验1 获得对程序的控制 206
实验2 植入攻击代码 211
实验3 模拟过程调用 217
实验4 应对栈地址随机化 224
实验5 ROP攻击 232
第8章 程序链接与ELF目标文件 241
实验1 数据与ELF数据节 243
实验2 指令与ELF代码节 248
实验3 符号解析 256
实验4 switch语句与链接 260
实验5 重定位 269
实验6 位置无关代码 286
第三部分 系统级设计实验
第9章 实验工具和实验环境设置 302
9.1 方案1:下载并运行Docker镜像 302
9.2 方案2:导入虚拟机 303
9.3 方案3:安装并配置虚拟机 303
9.4 浏览框架代码 305
9.5 线上资源 306
第10章 数据表示和运算的模拟 307
10.1 PA1–1通用寄存器和主存的模拟 307
10.2 PA1–2整数的表示和运算 310
10.3 PA1–3浮点数的表示和运算 313
第11章 程序加载执行的模拟 319
11.1 PA2–1指令解码与执行 319
11.2 PA2–2 Kernel加载ELF文件 333
第12章 存储系统的模拟 338
12.1 PA3–1高速缓存的模拟 338
12.2 PA3–2实现分段机制 340
12.3 PA3–3实现分页机制 346
第13章 异常/中断与I/O子系统
的模拟 351
13.1 PA4–1异常和中断的处理 351
13.2 PA4–2外设与I/O处理 356
*13.3 PA4–3可选任务:游戏移植 361
第四部分 高阶综合编程与分析实验
第14章 堆栈的使用及堆分配器
的实现 366
*实验1 堆空间的使用 366
*实验2 堆分配器的实现 372
*实验3 运行时栈的使用 379
第15章 程序正确性与程序性能优化 390
*实验1 大整数的乘及取模运算 390
*实验2 x86-64内联汇编 393
*实验3 程序性能调优 398
第16章 网络编程与并发编程 404
*实验1 基于客户–服务器模式的远程
计算器 404
*实验2 基于并发编程的远程计算器 408
*实验3 基于线程池的远程计算器性能
优化 411
出版说明
前言
第一部分 基础级验证实验
第1章 实验系统的安装和工具软件
的使用 2
实验1 实验系统的安装和配置 2
实验2 常用命令和工具软件的使用 16
第2章 程序调试命令和指令系统基础 25
实验1 程序调试命令 25
实验2 IA-32指令系统基础 30
*实验3 在C程序中嵌入汇编指令 37
第3章 数据的机器级表示实验 45
实验1 整型数据的真值与机器数 45
实验2 浮点型数据的真值与机器数 50
实验3 数据的宽度与存放顺序 57
实验4 不同整型数据之间的转换 62
实验5 整型数据与浮点型数据之间
的转换 70
第4章 数据的基本运算实验 76
实验1 整数加减运算 76
实验2 整数乘运算 85
实验3 整数除运算 92
实验4 浮点数运算 101
第5章 程序的机器级表示实验 109
实验1 过程调用的实现和栈帧结构 109
实验2 流程控制语句的实现 119
实验3 复杂数据类型的分配和访问 127
*实验4 缓冲区溢出攻击 133
*实验5 x86-64架构中程序的机器级表示 150
第二部分 模块级分析实验
第6章 二进制程序分析与逆向工程 160
实验1 字符串比较 161
实验2 浮点数的表示 164
实验3 循环控制语句 167
实验4 选择–分支控制语句 171
实验5 过程的递归调用 175
实验6 数组类型变量的处理 180
实验7 指针类型变量的处理 186
实验8 结构体类型变量与链表的处理 194
第7章 缓冲区溢出攻击 202
实验1 获得对程序的控制 206
实验2 植入攻击代码 211
实验3 模拟过程调用 217
实验4 应对栈地址随机化 224
实验5 ROP攻击 232
第8章 程序链接与ELF目标文件 241
实验1 数据与ELF数据节 243
实验2 指令与ELF代码节 248
实验3 符号解析 256
实验4 switch语句与链接 260
实验5 重定位 269
实验6 位置无关代码 286
第三部分 系统级设计实验
第9章 实验工具和实验环境设置 302
9.1 方案1:下载并运行Docker镜像 302
9.2 方案2:导入虚拟机 303
9.3 方案3:安装并配置虚拟机 303
9.4 浏览框架代码 305
9.5 线上资源 306
第10章 数据表示和运算的模拟 307
10.1 PA1–1通用寄存器和主存的模拟 307
10.2 PA1–2整数的表示和运算 310
10.3 PA1–3浮点数的表示和运算 313
第11章 程序加载执行的模拟 319
11.1 PA2–1指令解码与执行 319
11.2 PA2–2 Kernel加载ELF文件 333
第12章 存储系统的模拟 338
12.1 PA3–1高速缓存的模拟 338
12.2 PA3–2实现分段机制 340
12.3 PA3–3实现分页机制 346
第13章 异常/中断与I/O子系统
的模拟 351
13.1 PA4–1异常和中断的处理 351
13.2 PA4–2外设与I/O处理 356
*13.3 PA4–3可选任务:游戏移植 361
第四部分 高阶综合编程与分析实验
第14章 堆栈的使用及堆分配器
的实现 366
*实验1 堆空间的使用 366
*实验2 堆分配器的实现 372
*实验3 运行时栈的使用 379
第15章 程序正确性与程序性能优化 390
*实验1 大整数的乘及取模运算 390
*实验2 x86-64内联汇编 393
*实验3 程序性能调优 398
第16章 网络编程与并发编程 404
*实验1 基于客户–服务器模式的远程
计算器 404
*实验2 基于并发编程的远程计算器 408
*实验3 基于线程池的远程计算器性能
优化 411












