리버싱

Reversing

Public Class 2020. 2. 15. 03:56

다시.. 리버싱 핵심원리 라는 책으로 공부를 진행중입니다.

 

EP(Entry Point) : 위도우 실행파일의 코드 시작점을 의미합니다. 프로그램이 실행 될때 CPU에 의해 가장 먼저 실행되는 코드 시작위치입니다.

Visual C++ Stub Code : Visual C++에서 프로그램을 실행 시키기 위해 추가시킨 코드

유니코드는 알파벳 한글자당 2byte 가 필요하다 또한 문자열은 2byte 크기의 NULL 로끝나야 한다 (0x00)

VA(Virtual Address) : 프로세스의 가상 메모리

 

올리디버거의 기본 명령어:
Restart : Ctrl + F2 //재시작

Step Into : F7  //명령어 한줄 실행 Call 명령어 만나면 코드내부로 들어감
Step Over : F8 //명령어 한줄실행, Call 명령어 만나면 함수만 실행후 넘어감

Execute till Return : Ctrl + F9 //함수 코드 내부에서 Retn 명령어까지 실행(함수 탈출 목적)

Go to : Ctrl + G //원하는 주소로 이동 실행되는 것은 아님

Execute till Cursor : F4 //cursor 위치까지 실행

Comment : ' ; ' //주석 추가

Label : ' : ' //Label 추가

Set/Reset Break Point : F2 //BP 설정/해제

Run : F9 //실행 (BP있는 곳까지만 됩니다.)

Current Eip : ' * ' //현재 EIP 위치를 알려줍니다.

Previouse Cursor : ' - ' //이전 커서를 보여줍니다.

Preview Call/Jmp : Enter //커서가 Call 이나 Jmp에 있는 경우 해당 주소를 따라가 보여줌 (간단히 함수 내용 볼때 유용)

View BP : Alt + B //BP 확인

Options - Debugging Option - Show Symbolic Address Option 해제시 레이블 표시됨

All referenced text string : 프로그램 코드에서 참조되는 문자열들을 보여줍니다.

All intermodular calls : 프로그램에서 사용되는 API 함수 호출 목록이 나타납니다.

Edit 다이얼로그 : Ctrl + E //Edit 다이얼로그 띄우기

 

우선 Crack Me1 을 풀어보았는데 Call disk type 함수를 jmp 명령어로 바꾸어 점프로 바꾸어 보는 실습을 했습니다.(...)