일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pwnable
- 워게임
- hacking
- 정보보안기사
- Operating System
- 운영체제
- BOF
- Payload
- 해킹
- Spring
- System
- 네트워크
- Lord of BOF
- Spring Framework
- 정보보안기사 실기
- Shell code
- OS
- 웹해킹
- LOB
- 정보처리기사 실기
- PWN
- webhacking.kr
- SQL
- webhacking
- wargame
- Spring MVC
- Buffer Overflow
- system hacking
- Pwnable.kr
- stack overflow
- Today
- Total
DongDD's IT
리버싱 도구 소개 - PEView, Ollydbg 본문
리버싱 도구 소개
PEView
Download : http://wjradburn.com/software/
- PEView : 윈도우 용 실행 파일인 PE(Portable Executable)의 구조를 분석할 수 있는 프로그램
- PE File Header의 내용을 볼 수 있고 여러 정보들을 얻을 수 있다.
PEView 실행 시 나오는 초기 화면으로 open할 파일을 선택하여 open하면 PE파일에 대한 정보를 볼 수 있다.
이후에 포스팅할 Reversing을 공부하기 위한 abex시리즈의 첫 번째 예제를 PEView로 열어보았다.
앞선 포스팅에서 설명 했던 PE 파일의 구조를 볼 수 있다.
PE 파일 설명 : http://dongdd.tistory.com/79
왼쪽에는 PE 파일의 구조가 있고 IMAGE_NT_HEADERS에 있는 IMAGE_OPTIONAL_HEADER를 보면 파일 실행 시에 필요한 몇 가지 정보들을 볼 수 있다.
- Size of code : 코드의 사이즈로 프로그램의 길이를 알 수 있다.
- Image Base : 메모리에 PE파일이 저장되는 주소이다.
- Address of Entry point : 메모리에 저장될 때 사용될 Entry point의 상대주소를 의미한다.
- 즉, 위 예제에서는 Image Base(0x400000)와 entry point(0x1000)를 더한 값(0x401000)이 프로그램이 실행될 때 실제 메모리에서의 entry point의 주소를 의미한다.
- PEView를 이용해 PE 파일의 Header 정보를 추가적으로 알 수 있다.
OllyDbg
Download : http://www.ollydbg.de/version2.html (2.01)
- 가장 많이 알려진 윈도우 용 Debugging tool로 Reversing등 여러 용도로 사용되고 있다.
ollydbg 실행 시 처음 화면은 위와 같이 나온다. 맨 왼쪽은 메모리 주소에 따른 어셈블리어와 같은 프로그램 실행 코드가 출력되는 창이고, 오른쪽 위에는 프로그램 코드를 한줄 실행시킬 때마다 바뀌는 Register에 대한 정보를 출력해주는 창이 있다. 왼쪽 밑은 메모리에 저장되는 값을 16진수로 보여주고 오른쪽 밑의 창에는 stack에 들어가는 값들을 보여준다.
이후에 포스팅할 Reversing을 공부하기 위한 abex시리즈의 첫 번째 예제를 ollydbg로 열어보았다.
위에서 설명한대로 왼쪽 위창에서는 프로그램 코드를 볼 수 있다. Ollydbg로 파일을 open하면 entry point가 시작점으로 잡히게 되는데 PEView로 확인했던 것처럼 0x401000에서 실행되는 것을 볼 수 있다.
Ollydbg 기능
1) F2(Break point) : Debugging할 때 유용하게 사용할 수 있는 break point 기능이다. 프로그램 실행 시 멈출 지점을 선택하고 F2를 클릭하면 Break point를 지정할 수 있다. 프로그램 실행 시 break point에서 멈춘다.
2) F9 : 프로그램 실행
3) F7(Step into) : 코드를 순차적으로 실행시키기 위해 한 줄씩 실행시킬 수 있다.
4) F8(Step over) : 코드를 순차적으로 실행시키기 위해 한 줄씩 실행시킬 수 있다.
-> F7과 F8의 차이는 step over는 함수가 있더라도 바로 다음 줄로 넘어가지만, step into는 함수안으로 들어가 함수의 내부 구조를 볼 수 있다.
5) Ctrl+b : 현재 설정해놓은 break point에 대한 정보들을 볼 수 있다.
6) Ctrl+F2 : 프로그램을 재실행시키는 기능을 수행한다.(entry point로 재위치함)
위에 쓴 기능들은 기본적으로 필요한 기능들이고 추가적으로도 여러 기능들이 있다.
'IT 보안 > Reversing' 카테고리의 다른 글
리버싱 예제 - abex crackme2 (0) | 2017.12.30 |
---|---|
Register 및 어셈블리어, Calling Convention, Endian (0) | 2017.12.29 |
리버싱 예제 - abex crackme1 (0) | 2017.12.12 |
리버싱 기초 지식 - Reversing,프로그램 실행 구조, Register, Stack, PE (0) | 2017.12.04 |