반응형

소프트웨어 버그 헌팅 - 2.1 (OllyDBG, IDA)

소프트웨어 버그 헌팅 - 2에 이어서 진행

 

전 포스팅에서 배웠던 어셈블리를 OllyDBG와 IDA로 간단한 프로그램을 통해 실습 진행

Hello world, 덧셈 프로그램, 계산기 프로그램 분석해볼 것

add.exe

calc.exe

findkey.exe

hello world.exe

OllyDBG 설치방법은 너무 잘 나와있는 곳이 많아서 따로 말하지 않음

IDA에서 파이썬 스크립트를 사용하기 위해 다음과 같은 방법을 진행

idapython-1.5.3_ida6.2_py2.7_win32.zip

- python 폴더를 그대로 아이다 폴더에 이동
- .cfg 파일을 아이다 cfg 폴더 안으로 이동
- plugs 폴더 안에 2개의 파일을 아이다 플러그 폴더 안으로

위의 방법으로 옮기고 실행하면 파이썬 스크립트를 사용할 수 있음

올리디버거 명령어

F7 - Step
F8 - Step over
F9 - Run
F2 - Breakpoint
CTRL+F2 - 프로그램 재실행


먼저 Hello World 파일 분석

Hello World 말고 하는 기능이 없는 프로그램이다. Main 찾는 방법이다.

바로 비슷한게 보이는 건 안 비밀

우클릭 -> Search for -> All refreenced text strings으로 들어가면 hello world가 있다 이걸로 메인을 찾을 수 있다.

 

또는 F8로 쭉쭉하다가 CALL에서 갑자기 프린트가 된다.(저기서 F8 누르면 hello world가 찍힘)

저기서 F7로 call안에 들어가본다.

 

PUSH EBP부터 함수 프롤로그가 시작되고 helloworld가 나오고 함수 에필로그가 찍히고 끝난다.


그 다음 add 파일 분석

이것도 위의 Hello world 파일과 비슷하게 찾을 수 있다.

 

추가적인 팁

오른쪽 아래 칸은 스택 영역이다. 거기서 메모리 우클릭 -> Address -> Relative to ESP, EBP으로

ESP, EBP 기준으로 스택 영역을 보여준다.

 

또 하나더 왼쪽 위 메인창에서 주소를 알 수 있는데,

왼쪽 아래에서 CTRL+G로 주솔르 찾아 갈 수 있따

CTRL+G -> 00404000 찾으면 아래와 같이 result 값이 헥사값으로 찍혀있는 것을 확인할 수 있다.


다음은 calc 분석

메인은 찾았다 치고

PUSH EBP - EBP의 값 저장 (프롤로그)

MOV EBP, ESP - EBP에 ESP값 저장

AND ESP ~ - 컨파일러가 추가한 내용으로 큰 영향없음

SUB ESP, 20 - ESP에서 20을 빼서 지역함수 크기 할당

CALL calc.00401F00 - 별거 없음

(아래에 볼때 오른쪽 아래 스택 영역에서 Relative to ESP로 보면 편함)

MOV ESP+8, 0 - ESP+8에 0 넣기

MOV ESP+4, 2 - ESP+4에 2넣기

MOV ESP,1 - ESP에 1넣기

MOV ESP+1C, EAX - EAX의 값을 ESP+1C에 넣기

MOV ESP+8, 1 ESP+8에 1 넣기

~

MOV EAX, 0 - 에필로그, return 0와 비슷한 역할

LEAVE - 에필로그

RETN - 에필로그


올리디버거를 쓰면서 아이다랑 같이 사용하면 좋다.

아이다로 흐름을 파악하고 올리디버거로 분석을 많이 한다고 한다.

왼쪽에는 함수 목록을 볼 수 있으며,

graph overview는 분기문 등을 표로 표시해줘서 흐름이 어떻게 되는 지 알 수 있다.

 

View -> Open Subviews로 여러가지를 확인할 수 있따

import - 외부 함수를 가져오는 것을 확인할 수 있다. 분석시 import는 보고 간다고 한다.

Segment에 들어가면 영역을 볼 수 있다.

String 도 확인할 수 있다.

 

처음에 Python 스크립트 환경 설정한 것을 사용할 수 있다.

대표적으로 아이다 코드에 색입히기인데, 이것으로 중요한 곳을 색칠할 수 있다.

SetColor(here(),CIC_ITEM,0xBB3737)

 


이후 Find Key 등등 풀어보면 좋을 것 같다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기