올리디버거
1. 단축키
1) F7 = Step Into
2) F8 = Step Over
3) F2 = Break Point
4) F9 = Break Point로 이동
5) Ctrl + F2 = 초기화 후 다시보기(처음 로더한 상태)
6) - = 이전 확인
7) + = 이후 확인
2. 디스플레이
1) Code 화면
[1] 디스어셈블 된 코드를 보여주고 주석과 라벨을 확인할 수 있다.
- 반복문과 점프문 위치를 확인이 가능하다.
2) Register 화면
[1] 레지스터 값을 실시간으로 보여주고 값을 수정할 수 있다.
3) Memory Dump 화면
[1] 원하는 메모리 주소의 위치를 16진수 및 ASCII/Unicode로 확인이 가능하며 수정할 수 있다.
4) Stack 화면
[1] 스택메모리를 실시간으로 확인하고 수정할 수 있다.
3. Debugging
1) 프로그램이 메모리에 올라갔을 때 시작주소를 CPU가 알 수 있는 방법
[1] IMAGE_NT_HEADER의 IMAGE_OPTIONAL_HEADER
- Image Base + Address of Entry Point
- 프로그램을 실행했을 때 시작주소를 말한다.
- 올리디버거는 프로세스가 올라오면 IMAGE_OPTIONAL_HEADER를 찾는다.
※ 다시생각해보면 IMAGE_OPTIONAL_HEADER에 악성코드 주소를 심어놓고 할꺼 볼일 다 보고 원래주소로 jmp문을 사용하여 이동해서 악성코드도 실행하고 문제도 없는 것처럼 보일 수 있다.
- 00401238이라는 시작주소
- IMAGE_NT_HEADER의 IMAGE_OPTIONAL_HEADER 내부의 Image Base 라는 기준주소
- IMAGE_NT_HEADER의 IMAGE_OPTIONAL_HEADER 내부의 Address of Entry Point 라는 상대주소
2) 메인함수 위치
[1] F9를 누르면 Jump jo MSVBV60.ThunRTMain() 함수로 이동한다.
[2] 위 함수가 메인함수임을 추측할 수 있다.
3) 프로그램 상태
[1] Running
[2] Paused
[3] Terminate
4) 저장파일
[1] udd
- udd파일은 올리디버거가 분석해 놓은 파일을 말한다.
- 위치를 따로 지정해 주는 것이 관리하기에 용이하다.
- 처음 킬 때는 분석하는데 오래걸리지만 분석 후 udd파일을 저장하여 다시 키더라도 살아있다.
- break point도 그대로 남아있는 것을 볼 수 있다.
4. CPU Clock
1) 1clock
[1] CPU의 심장이 한 번 뛰는 것이라고 생각하면 된다.
[2] 한 번 뛸 때마다 Instruction Point를 보고 들어있는 주소에 접근한다. (1 Instruction)
2) 1000HZ = 1KHz, 1000KHz = 1MHz, 1000MHz = 1GHz
3) 쿨러가 달려있지만 더 빨리 뛰려면 오버클럭을 하기도 하지만
부정맥 등으로 과부하가 걸려서 불규칙하게 뛰거나 멈출 수 있다.
5. 리버싱은 저작권법과 관련이 있다.
'Try Attack > Reverse Engineering[basic]' 카테고리의 다른 글
[crackme1] abex' 1th crackme 풀이 및 복원 (0) | 2018.11.07 |
---|---|
악성코드와 리버싱 (0) | 2018.10.09 |
전략 (0) | 2018.09.16 |
리버싱에 필요한 도구 (0) | 2018.09.09 |
역공학 기초 (0) | 2018.08.25 |
댓글