시스템프로그래밍 Bomb LAB, Binary LAB (폭탄제거)
- 최초 등록일
- 2015.04.22
- 최종 저작일
- 2015.04
- 35페이지/
한컴오피스
- 가격 5,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
컴퓨터공학부 2학년 과목인 시스템프로그래밍 Bomb LAB입니다.
페이지분량은 35페이지이며, 각 단계별 및 시크릿단계(7단계)까지 상세히 적어두었습니다.
스크린샷을 이용하여 설명해두었기 때문에 차근차근 쉽게 따라하실 수 있습니다.
목차
1. Bomb LAB, Binary LAB, 폭탄제거
2. Bomb phase1 (bomb 1단계)
3. Bomb phase2 (bomb 2단계)
4. Bomb phase3 (bomb 3단계)
5. Bomb phase4 (bomb 4단계)
6. Bomb phase5 (bomb 5단계)
7. Bomb phase6 (bomb 6단계)
8. Bomb phase7 (bomb 7단계) secret phase (시크릿단계)
본문내용
1단계(phase_1)
내가 받은 bomb66의 파일을 gdb로 연다.
그 다음 실행파일에는 무조건 main함수가 있기 때문에 disas main 명령어를 이용해서 어셈블리어파일을 본다. 보면 phase_1함수가 main함수에 있다는 것을 알 수 있다.
그다음 phase_1의 함수에 break를 걸고 break지점까지 실행을 시킨다. 이때 문장이나 입력하고서 phase_1함수를 disas명령어를 입력해서 역어셈블러 해본다.
disas를 하고나서 $esi 레지스터의 값을 어떤 주소값으로 옮기는 어셈블리어를 보게 될 것이다. mov $0x402750, $esi 이부분을 조사해보았더니 $esi레지스터에는 내가 입력했었던 I love you라는 문장이 나왔다.
그러고나서 주소값 0x402750을 x/s명령어를 이용하여 출력해보니 I turned the moon into something I call a Death Star. 라는 결과가 나왔다. 그래서 입력하였더니 1단계 Clear완료.
2단계(phase_2)
1단계와 마찬가지로 시작하자마자 explode_bomb함수에 break를 걸고 phase_2함수에다가도 break를 걸었다. 그러고서 run을 실행하여 phase_2함수에 진입한다. 그러고서 disas phase_2를 하였다. 그랬더니 read_six_numbers라는 함수가 보여서 disas read_six_numbers를 했다.
그랬더니 어떤레지스터에서 주소값으로 값을 옮기는 행동을 취하는 mov $0x402ac5, %esi 어셈블리어가 보였다. 그래서 x/s를 이용하여 주소값을 출력해보았더니 정수형 숫자 6개를 입력하는 것이 나왔다. 그래서 phase_2의 답은 정수형숫자 6개를 넣는것이라는 것을 알아냈다.
그러고서 quit를 이용하여 gdb를 종료한후 다시 실행시켜서 폭탄부분과 phase_2부분을 break를 걸고 실행하고서 phase_2단계의 답을 임시로 0 1 2 3 4 5를 입력하였다. 그러고나서 disas phase_2를 이용하여 어셈블리어를 보았더니 수상한 제어문들을 보았다.
참고 자료
없음