APP Bomb Lab"/>
The CS:APP Bomb Lab
The CS:APP Bomb Lab
- insorker
- 2021/11/16
Hello
电赛寄了,所以滚回来做bomblab了
Introduction
这个 Lab 一样让人摸不着头脑,上手的话还是属于完全不知道干什么,但是一旦上手做出第一题就好像穿了三天的内裤终于被换掉一样脑袋要高兴地从天上飞到地下,所以为了防止接下来的初上手的萌新大佬不知道从何下手,我先写一个简短的上手入门来帮助大家。
How to get start
无剧透,放心食用
which to blow yourself up. Have a nice day!
-
第一件事是学会如何使用gdb,我给出学校官方的简洁教程,希望大家能完整的跟一遍,帮助确实很大
/
-
如果是第一次学会 gdb 的使用,可能还有点使不上劲,不建议直接用书上的
disas
,推荐使用layout
,可以上网百度,或者 help 一下,或者使用以下简单的指令layout 用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src:显示源代码窗口
layout asm:显示汇编窗口
layout regs:显示源代码/汇编和寄存器窗口
layout split:显示源代码和汇编窗口
layout next:显示下一个layout
layout prev:显示上一个layout
Ctrl + L:刷新窗口
Ctrl + x,再按1:单窗口模式,显示一个窗口
Ctrl + x,再按2:双窗口模式,显示两个窗口 Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
-
学习一些输出的小诀窍,比如搜索 gdb x,还有如下
print *(char *)$rax
然后就没什么好说的了,动手试试吧
Problem
1. phase_1
Hmm… Six phases must be more secure than one phase!
开解
很简单的题目,专门坑不熟悉 gdb 使用的新手
-
在
input = read_line();
前敲下断点
-
执行后发现值被存入了寄存器 %rdi
-
然后单步进入 phase_1 发现 esi 被存值
更多推荐
The CS:APP Bomb Lab
发布评论