Reverse Engineering

Tools: IDA

박연준 2023. 7. 2. 15:20
  • The Interactive Disassembler (IDA)는 Hex-Rays 사에서 제작한 디스어셈블러이다.
  • IDA의 메인 기능은 디스어셈블이지만 이 외에도 여러 환경에서의 디버깅과 다양한 아키텍처 디컴파일과 같이 여러가지 기능을 제공한다.
  • 이 때문에 바이너리를 분석해야 하는 리버스 엔지니어링 업무에는 대다수 IDA를 이용한다.
  • IDA Pro는 대략 천만원에서 이천만원 사이의 금액대를 가지지만 Hex-Rays 사는 IDA Freeware를 제공한다.
  • IDA Freeware는 x64 아키텍처에 한해 디컴파일 기능을 지원하며, 상업적 목적 이외의 교육적 목적으로는 이용 가능하다.

 

IDA 설치

파일 열기

  • IDA에 파일을 로드하기 위한 방법으로는 File → Open → 파일 선택 또는 파일을 드래그하는 방법 두 가지가 있다.
  • 파일을 로드하면 다음과 같은 창을 볼 수 있는데 어떠한 형식으로 분석을 할지 물어본다. 기본적으로 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 언어 형태로 변환하여 보여준다.

'Reverse Engineering' 카테고리의 다른 글

Exercise: Helloworld  (0) 2023.07.02
x86 Assembly: Essential Part(2)  (0) 2023.07.02
x86 Assembly: Essential Part(1)  (0) 2023.07.02
Background: Windows Memory Layout  (0) 2023.07.02
Background: Computer Architecture  (0) 2023.07.02