발자취

[Reverse Engineering] #06-1. Tools: IDA 이론 본문

Dreamhack Study/Reverse Engineering

[Reverse Engineering] #06-1. Tools: IDA 이론

해린 2024. 6. 25. 01:31

본 게시물은 Dreamhack의 Reverse Engineering 로드맵 과정을 학습한 기록이다.

 

 

#01. IDA란?

Hex-Rays 사에서 제작한 디스어셈블러.

메인 기능은 디스어셈블러이나, 이 외에도 여러 환경에서의 디버깅과 다양한 아키텍처 디컴파일과 같이 여러 기능을 제공

 

https://hex-rays.com/ida-free/

설치 링크이다!

 

1. 파일 열기

파일을 로딩하면 IDA에서 분석하려는 프로그램의 구조를 파악하여 알려주고, 어떤 형식으로 분석할지 물어본다.

 

 

#02. IDA 창

1. Functions window

IDA에서 분석한 프로그램의 함수를 보여준다. [Ctrl + F] 키로 원하는 함색을 찾을 수 있다.

 

 

2. Graph overview

함수를 그래프화하여 보여준다. 함수의 흐름을 파악할 수 있다.

 

 

3. Output window

분석 과정을 메시지로 출력한다.

 

 

4. View

디컴파일 결과, Hex-View, 구조체 목록 등의 화면을 표시한다.

 

 

#03. IDA 기능

1. 임의 주소 및 레이블 이동 - [단축키 G]

임의 주소 또는 레이블로 이동할 수 있다. Jump to Address!

 

 

2. 함수 및 변수 이름 재설정 - [단축키 N]

함수 및 변수 이름을 재설정할 수 있다.

기본적으로 나와있는 함수 및 변수의 이름은 IDA에서 지정된 것이기 때문에, 한눈에 알아보기가 쉽지 않다. 따라서 이렇게 이름을 재설정해주면 각 함수와 변수의 기능 및 역할을 한눈에 파악하기 좋고, 분석 속도가 빨라진다.

 

 

3. Cross reference (Xref) - [단축키 X]

해당 함수 및 변수가 사용되는 영역을 재참조할 수 있다.

임의의 함수 또는 변수를 클릭하고 단축키 X를 사용하면 된다.

 

 

4. 함수 및 변수 타입 변경 - [단축키 Y]

함수 및 변수의 타입을 지정할 수 있다. 함수의 경우엔 전달되는 매개변수를 추가하거나 타입을 변경할 수 있다.

임의의 함수 또는 변수를 클릭하고 단축키 Y를 사용하면 된다.

 

 

5. Strings - [단축키 Shift + F12]

바이너리에서 사용하는 모든 문자열을 조회할 수 있다.

함수의 심볼이 존재하지 않거나 복잡한 경우에 사용하면 문자열을 통해 분석 시간을 크게 단축할 수 있다.

 

 

6. Decompile - [단축키 F5]

어셈블리를 C언어 형태로 변환하여 보여준다. IDA에서 제공하는 가장 강력한 기능!