Try Attack/Reverse Engineering[basic]

올리디버거

D4tai1 2018. 9. 16.

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

댓글