IDA

The Interactive Disassembler (IDA) : Hex-Rays 사에서 제작한 디스어셈블러이다.
IDA의 메인 기능은 디스어셈블이지만 이 외에도 여러 환경에서의 디버깅과 다양한 아키텍처 디컴파일과 같이 여러가지 기능을 제공한다.
이 때문에 바이너리를 분석해야 하는 리버스 엔지니어링 업무에는 대다수 IDA를 이용한다.
IDA에는 다양한 라이센스가 존재하는데 기업에서 보편적으로 사용하는 IDA Pro는 대략 천만원에서 이천만원 사이의 금액대를 갖는다.
리버스 엔지니어링을 처음 공부하는 개인 이용자가 지불하기에는 부담이 큰 금액이기 때문에 Hex-Rays 사는 IDA Freeware를 제공한다.
IDA Freeware는 x64 아키텍처에 한해 디컴파일 기능을 지원하며, 상업적 목적 이외의 교육적 목적으로만 이용 가능하다.
IDA 설치
IDA Freeware 는 https://hex-rays.com/ida-free/ 에서 다운로드할 수 있다.

Windows OS 기준 설치 파일을 다운로드 받아 실행하면 위의 사진과 같은 창이 나타나며, Next 버튼을 클릭해 설치할 수 있다.

설치를 성공적으로 마쳤다면 설치된 IDA 를 실행했을 때 위와 같은 창이 나타난다.
파일 열기

IDA에 파일을 로드하기 위한 방법으로는, File->Open->파일 선택 또는 파일을 드래그하는 방법 두 가지가 있다.
파일을 로드하면 위와 같은 창을 볼 수 있다.
위의 창을 살펴보면, 분석하려는 프로그램을 IDA에서 미리 알아내고, 어떠한 형식으로 분석을 할지 물어본다.
기본적으로 IDA가 올바르게 프로그램의 구조를 파악해주기 때문에 OK를 클릭한다.

파일을 정상적으로 로드했다면 위와 같은 창이 나타난다.
IDA 둘러보기
Functions window

IDA에서 분석한 프로그램의 함수를 나열한다.
해당 창에서 Ctrl + F 단축키를 통해 원하는 함수를 찾을 수 있다.
Graph overview

함수를 그래프화하여 사용자에게 보여준다.
해당 창을 통해 함수의 흐름을 파악할 수 있다.
Output window

분석 과정을 메시지로 출력한다.
해당 창을 통해 IDA의 분석 과정을 알 수 있다.
View

디컴파일 결과, Hex-View, 구조체 목록 등의 화면을 표시한다.
IDA 기능
임의 주소 및 레이블 이동

단축키 G를 사용해 임의 주소 또는 레이블로 이동할 수 있다.
함수 및 변수 이름 재설정

단축키 N을 사용해 함수 및 변수 이름을 재설정할 수 있다.
정의되지 않은 함수 및 변수의 경우 해당 기능을 통해 이름을 설정하여 분석 속도를 향상시킬 수 있다.
Cross reference (Xref)

임의의 함수 또는 변수를 클릭하고, 단축키 X를 사용하면 해당 함수 및 변수가 사용되는 영역을 재참조할 수 있다.
함수 및 변수 타입 변경

임의의 함수 또는 변수를 클릭하고, 단축키 Y를 사용하면 해당 함수 및 변수의 타입을 지정할 수 있다.
함수의 경우, 전달되는 매개 변수를 추가하거나, 타입을 변경할 수 있다.
Strings

단축키 Shift + F12를 사용해 바이너리에서 사용하는 모든 문자열을 조회할 수 있다.
함수의 심볼이 존재하지 않거나, 복잡할 경우 문자열을 통해 분석 시간을 크게 단축할 수 있다.
Decompile

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