bomb lab 리포트
- 최초 등록일
- 2014.12.20
- 최종 저작일
- 2014.10
- 35페이지/ 한컴오피스
- 가격 3,000원
목차
1. 개 요
2. 문제 풀이
2-1 phase_1
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-2. phase_2
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-3. phase_3
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-4. phase_4
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-5. phase_5
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-6. phase_6
1) 해결방법
2) Flow Chart(순서도)
3) 정답
2-7. secret_phase
1) 해결방법
2) Flow Chart(순서도)
3) 정답
3. 고찰 및 느낀점
본문내용
1. 개 요
- Binary Bomb
Binary Bomb는 순차적인 여러 단계로 이루어진 하나의 프로그램이다. 각 단계마다 화면에 문자열을 입력하게 되어 있다. 만약 정확한 문장(암호)을 입력하게 되면, 해당 구문의 폭탄은 해체되고 다음 단계로 넘어가게 된다. 반면에 틀린 문자열을 입력하게 되면, 폭탄이 폭발하여 "BOOM!!!" 이라는 문장을 출력한 뒤 종료될 것이다. 각 단계에 설치된 폭탄을 모두 해체해야 Binary Bomb는 해체될 것이다.
- 사용할 명령어
(1) GDB
- GNU의 debugger로서, 모든 플랫폼(platform)에서 실제적으로 사용가능한 command line debugger이다. debugger를 통해서 단계별로 실행해가면서 어떤 방식으로 실행되는 지 확인이 가능하다.
(2) Objdump
- 라이브러리, 컴파일된 오브젝트 모듈, 공유 오브젝트 파일, 독립 실행파일등의 바이너리 파일들의 정보를 보여주는 프로그램이다. objdump는 ELF 파일을 어셈블리어로 보여주는 디스어셈블러로 사용될 수 있다
- Bomb Lab 동작 구조
2. 문 제 풀 이
2-1 phase_1
1) 해결방법
먼저 gdb를 사용하여 bomb을 실행했고 첫 번째 단계인 phase_1함수의 어셈블리 코드를 출력해주기 위해 disas phase_1을 입력하였다.
• disassemble[함수 명] : 함수의 어셈블리 코드를 출력한다.
phase 1의 구조를 보면 string_not_equal 함수를 호출하는 것을 볼 수 있다. 이를 통해 어떠한 문자열을 입력 받아서 비교를 한 뒤, 오답일 경우 explode_bomb을 호출한다는 것을 추측할 수 있다.
우선 가장 먼저 어셈블리어 코드를 분석해서 오답이 입력될 경우 폭탄을 터트리는 부분을 찾아야 한다. 각 단계마다 어떤 값을 비교하는 부분과 explode_bomb으로 점프하는 모습을 볼 수 있다. 이를 통해서 오답인 경우 explode_bomb로 이동하는 것이라 예측 할 수 있다.
참고 자료
없음