본문 바로가기

System Programming/CSAPP Lab

[Bomb Lab] 프로젝트 파일 다운로드 및 준비 과정 (GDB 설치)

프로젝트 파일 다운로드

프로젝트 파일은 아래 링크에서 다운로드 받을 수 있다.

 

프로젝트 다운로드 링크 : http://csapp.cs.cmu.edu/3e/labs.html

 

CS:APP3e, Bryant and O'Hallaron

Lab Assignments This page contains a complete set of turnkey labs for the CS:APP3e text. The labs all share some common features. Each lab is distributed in a self-contained tar file. You will need a CS:APP account to download the code. To untar foo.tar, t

csapp.cs.cmu.edu

 

Self-Study Handout을 클릭하면 tar 형태로 압축된 파일이 다운로드된다. Writeup은 프로젝트 설명을 적어 놓은 pdf이다. 먼저 window command 창에서 tar 압축 파일을 해제한다.

그러면 bomb 이름을 갖는 폴더에 executable 파일 bomb, c 소스 코드 bomb.c 파일이 있는 것을 볼 수 있다. bomb.c를 컴파일 후 실행 파일로 만든 것이 bomb인데, 모든 소스코드를 제공하지는 않는다. bomb.c에 있는 phase_1()과 같은 함수는 구현이 빠져있는데, 이후에 디버거와 disassembler를 이용하여 함수의 동작에 대한 추론을 하여 binary bomb를 해제하는 것이 프로젝트의 주 목표이다.

 

Windows -> Ubuntu 파일 옮기기

이제 이 파일을 Ubuntu로 옮길 것인데, 여러 가지 방법이 있지만 여기서는 아래와 같은 command를 통해 옮긴다.

ubuntu 상의 폴더가 windows 처럼 파일 탐색기에 열린 것을 볼 수 있고, 그냥 Ctrl C, V를 하여 복사 붙여넣기를 할 수 있다.

 

Executable 실행시키기

bomb.c 소스 코드를 열어보면 알 수 있듯이, 먼저 'Welcome ~'으로 시작하는 문자열을 print하게 되어 있다. 그리고 사용자 input을 기다리는데, 그냥 아무 문자열이나 'hi'라고 입력해보면 바로 폭탄이 터지면서 프로그램이 종료한다.

 

이것은 프로젝트 파일을 다운로드 받고 실행이 되는 것을 확인하기 위한 목적이긴 했는데, 프로젝트의 목적은 폭탄을 터뜨리지 않고 프로그램 종료까지 가야 하므로, 당연하게도 결과는 실패라고 볼 수 있다.

 

처음에 프로그램이 실행되지 않는다면 아래 링크를 참고해보자.

https://www.cs.cmu.edu/afs/cs/academic/class/15213-s02/www/applications/qa/lab2.html

 

15-213 Q&A For Lab #2

Thursday, February 7, 2002 Question: I got my bomb, but it won't run! gdb keeps complaining about "Permission Denied". Answer: Your bomb probably got stripped of executable permissions in the process of getting it to your home directory. You should run the

www.cs.cmu.edu

 

GDB 다운로드

이제 executable을 disassembler를 이용해 assmebly 코드로 변환하고, 적절히 끊어가며 실행시키고 뜯어보며 프로젝트를 진행해야 하는데, 그러기 위해서는 GDB (GNU Project Debugger)를 다운로드 받아야 한다.

이제 gdb로 bomb 프로그램을 실행시켜본다.

맨 아래  (gdb) 오른쪽에 gdb 명령어가 들어오기를 기다리는 것을 볼 수 있다. gdb 명령어는 이후 프로젝트를 진행하면서 하나씩 익혀볼 계획이다.