寝室原创:计算机导论CSAPP实验详解(level1-4)
需积分: 9 84 浏览量
更新于2024-07-24
收藏 168KB PDF 举报
本篇文档涉及到的是计算机导论课程中的实验作业,主要围绕着CSAPP(Computer Science Application Programming)中的Lab系列进行讲解。Lab3至Level4是逐步递增难度的挑战,每个级别都涉及到了程序逆向工程和调试技巧。
Level 0 的任务相对简单,目标是通过输入一个过长字符串使得程序的smoke地址覆盖eip(指令指针寄存器),以便控制程序流程。答案提供了一个特定的16进制字符串,即`31313131303030...10890408`。
Level 1 建立在Level 0 的基础上,增加了一个与cookie相关的参数。解答同样给出了一个16进制字符串`303030...6aeb174c`,这个阶段可能需要找到cookie的存储位置并利用它来进一步控制程序。
Level 2 的挑战在于,由于存在某种限制,不能直接运行程序,必须在GDB(GNU调试器)环境下执行。通过分析得知cookie存储在`0x804aa50`,global_value位于`0x804aa60a`。在这个级别,学生需设置断点、查看寄存器值来找出buf的地址,最终提供的输入字符串是`b86aeb174ca360aa0408c300000000000cbbffbf8c890408`。
Level 3 的难度提升,要求先设置eax和ebp的值,然后将callgetbuf指令的地址压入栈,最后ret返回到test函数。解答给出了输入字符串`b86aeb174cbd38bbffbf68ee890408c30cbbffbf`。
Level 4 是整个系列中最具挑战性的一环,因为GDB下无法多次输入字符串,并且直接运行会遇到栈内存问题。解决方法是使用catexploit5.txt文件生成5次输入,然后在GDB环境下运行。程序代码提到eax被设为`0x4c17eb9a`,而ebp的值不固定,但与esp(堆栈帧指针)有一个固定的偏移量24。提供的源码样本展示了如何构造这种复杂操作。
这些实验着重于让学生理解程序逆向工程,内存管理,以及调试工具的使用,不仅要求技术上的编程能力,还锻炼了解决实际问题的思维和技巧。
2023-07-17 上传
2022-08-03 上传
2022-02-08 上传
2021-09-30 上传
2022-08-03 上传
2021-10-11 上传
享乐主
- 粉丝: 655
- 资源: 22
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章