[시스템프로그래밍]BombLab (밤랩) 보고서
- 최초 등록일
- 2016.11.11
- 최종 저작일
- 2012.10
- 28페이지/ 한컴오피스
- 가격 4,000원
소개글
시스템프로그래밍 BombLab 보고서입니다. 손수 작성한 보고서이며
밤랩자체에도 여러가지 종류의 문제가있어 구매 하셨는데 문제가 다르다고해서
사기가 아닙니다. 문제가 다르더라도 풀이법은 비슷하기 때문에 많은 참고가 되실거라 생각됩니다.
[저작관 침해시 법적대응]
목차
1.개요
2.각 단계에 대한 해결 방법 (phase_1~6+secret_phase)
1) 해결 방법
2) Flow Chart
3) 정답
4) 캡처 화면
3.고찰 및 느낀 점
본문내용
1.개요
Bomb Lab이란?
디코딩된 Assembler 코드를 분석하여 6+1가지 문제의 정답을 단계별로 입력하면 된다. 단계별로 입력한 답이 맞으면 다음 단계로 진행된다. 만약 입력한 답이 틀리게 된다면 Bomb이 터지게 되는 시스템이다.
<중 략>
6)phase_6
<그 림>
우선 read_six_numbers라는 함수를 호출 하므로
입력 값은 6개의 숫자인 것을 알 수 있다.
%esi에는 0을 넣어주고 mov 0x10(%esp,%esi,4),%eax를 해주면 0x10(%esp,%esi,4)는 esi가 증가함에 따라 사용자가 입력한 숫자들이 저장된 주소인 것을 알 수 있다. 그 값을 %eax에 저장해 준다.
그 후 %eax에 0x1을 sub해 준다. 그 후 %eax와 $0x5를 비교하여 jbe 하면 0x5가 더 크거나 같을 때 phase_6+47로 jump해 준다.
이 문장으로 첫 번째 입력 값은 5보다 작거나 같다는 것을 알 수 있다.
그 후 %esi를 1증가 시키고 %esi가 6이면 phase_6+82로 점프하고 아니면 밑의 코드로 진행하여 %esi를 %ebx에 넣어 준다. 그리고 0x10(%esp,%ebx,4)는 사용자가 입력한 n+1번째 값이라는 것을 알 수 있다. 그래서 %eax는 2번째 값이 들어간다. 0xc(%esp,%esi,4)는 n번째 값인데 n번째 값과 %eax(n+1번째)값을 cmp로 비교하여 같다면 bomb이 터진다. 그러므로 연속된 숫자는 올 수 없다는 것을 알 수 있다.
그 후 %ebx의 값을 0x1만큼 add시킨다. 그 후 %ebx가 $0x5와 비교하여 jle 하는데 $0x5값이 %ebx(2)보다 크거나 같으므로 phase_6+47로 점프 하게 된다. 이 문장들을 조합 하면 n번째와 n+1번째 값들을 다 비교하여 연속된 값이 나오는지 비교하는 구문들이다. 그 후 연속된 값이 나오지 않으면 phase_6+82로 가게 된다. phase_6+82 코드에서는 0x10(%esp) 의 주소 값을 %eax에 넣어준다. 0x10(%esp)의 값은 내림 차순 정렬된 노드의 번호 중 첫 번째 숫자가 저장되어 있다.
참고 자료
없음