본문 바로가기
IT Tech/Tip

IDA 사용법

by _><- 2021. 8. 14.
반응형

# IDA 툴 개념

- 멀티 아키텍처 디스어셈블 지원

- 멀티플랫폼 간 원격 디버깅 지원

- 4개 아키텍처(x86, ARM, MIPS, PowerPC) 디컴파일 지원

 

#! download : https://www.hex-rays.com/products/ida/support/download_freeware.shtml

 

#! IDA 5.0 is freeware : static analysis tool, help to understand program structure

- dynamic debugging tool : GDB in Linux

 

#! 분기문
cmp 이후에 Jxx 구문을 만족하면 녹색(오른쪽), 만족하지 않으면 빨강색(왼쪽)으로 진행됨

 

#! 그래픽 모드와 어셈코드 화면 전환은 SPACE 이용

 

#! 더블클릭으로 함수를 쫓아가다가 원래위치로 가고 싶을 때는 ESC 키 이용

   만약 갈 수 없다면 g 키를 누르고 main을 찾아가면 됨

 

#! 특정 단어를 클릭하면 동일한 단어 또는 변수의 색깔이 노란색으로 변경됨

 

#! 바이너리 분석 시 먼저 체크할 부분

1. loop 확인
 - 카운터를 확인, 초기화값 확인
 - 반복하는 횟수와 loop에서 확인하는 값 체크 

2. 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
 - 리턴값은 eax에 저장  

 

#! 노트기능 

- 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장이 나타나며, 주석을 달 수 있다.

 

#! 그래픽 모드에서 주소값 보기 설정

options -> Gerneral

Disassembly에 line prefixes 선택

 

 

#! Color setting

왼쪽 상단의 네모를 클릭하면 박스에 색깔을 설정할 수 있음

 

#! Debugger function key

F2 : BreakPoing

F4 : Run to Cursor

F7 : Step into

F8 : Step over

F9 : Run

Ctrl + F7 : Run until return

 

#! ida 사용방법

- 분기문
만족하면 녹색, 만족하지 않으면 빨강색
- 그래픽, 코드 화면전환은 SPACE 이용

함수클릭 시 동적오픈 소스로만 이동
- 다시 원래로 가려면 ESC 이용

- call을 클릭하면 노란색으로 변경

- 그래프에서 loop 확인
- 카운터를 확인, 초기화값 확인
   반복하는 횟수와 loop에서 확인하는 값 체크
- 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
- 노트기능 활용 - 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장

file *fp;
int a
fp = fopen("/dev/urandom", "rb");
for (a=1; a<3;a++) {
 fgets(buf, 2, fp);
 sprintf(xxx);
}

c언어 함수구조는 linux에서 man 이용
man (함수이름)

모르는 명령어 파악은 IDA로 보고 gdb로 보면서 레지스터가 어떻게 변했는지 확인

 

 #! download : https://www.hex-rays.com/products/ida/support/download_freeware.shtml

 

#! IDA 5.0 is freeware : static analysis tool, help to understand program structure

- dynamic debugging tool : GDB in Linux

 

#! 분기문
cmp 이후에 Jxx 구문을 만족하면 녹색(오른쪽), 만족하지 않으면 빨강색(왼쪽)으로 진행됨

 

#! 그래픽 모드와 어셈코드 화면 전환은 SPACE 이용

 

#! 더블클릭으로 함수를 쫓아가다가 원래위치로 가고 싶을 때는 ESC 키 이용

   만약 갈 수 없다면 g 키를 누르고 main을 찾아가면 됨

 

#! 특정 단어를 클릭하면 동일한 단어 또는 변수의 색깔이 노란색으로 변경됨

 

#! 바이너리 분석 시 먼저 체크할 부분

1. loop 확인
 - 카운터를 확인, 초기화값 확인
 - 반복하는 횟수와 loop에서 확인하는 값 체크 

2. 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
 - 리턴값은 eax에 저장  

 

#! 노트기능 

- 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장이 나타나며, 주석을 달 수 있다.

 

#! 그래픽 모드에서 주소값 보기 설정

options -> Gerneral

Disassembly에 line prefixes 선택

 

#! Color setting

왼쪽 상단의 네모를 클릭하면 박스에 색깔을 설정할 수 있음

 

#! Debugger function key

F2 : BreakPoing

F4 : Run to Cursor

F7 : Step into

F8 : Step over

F9 : Run

Ctrl + F7 : Run until return

 

#! ida 사용방법

- 분기문
만족하면 녹색, 만족하지 않으면 빨강색
- 그래픽, 코드 화면전환은 SPACE 이용

함수클릭 시 동적오픈 소스로만 이동
- 다시 원래로 가려면 ESC 이용

- call을 클릭하면 노란색으로 변경

- 그래프에서 loop 확인
- 카운터를 확인, 초기화값 확인
   반복하는 횟수와 loop에서 확인하는 값 체크
- 함수의 구조 및 파라미터를 확인하여 어떤 값이 어떤 인자인지 유추
- 리턴값은 eax에 저장
- 노트기능 활용 - 그래픽에서 원하는 곳 클릭 후 ; 버튼을 누르면 메모장

file *fp;
int a
fp = fopen("/dev/urandom", "rb");
for (a=1; a<3;a++) {
 fgets(buf, 2, fp);
 sprintf(xxx);
}

c언어 함수구조는 linux에서 man 이용
man (함수이름)

모르는 명령어 파악은 IDA로 보고 gdb로 보면서 레지스터가 어떻게 변했는지 확인

 

 

반응형