주 메뉴 열기

IDA(Interactive DisAssembler)는 컴퓨터 소프트웨어 용 디스어셈블러이다. 디스어셈블러는 기계어 코드로부터 어셈블리어 소스 코드를 생성한다. 이것은 다양한 실행 파일과 중앙 처리 장치 그리고 운영 체제를 지원한다. 또한 Windows PE, Mac OS X Mach-O, 그리고 리눅스 ELF 실행 파일에 대해서는 디버거로 사용할 수 있다. C/C++ 컴파일러로 컴파일된 프로그램은 디컴파일러 플러그인은 추가 요금을 통해 사용할 수 있다. 최신 버전의 IDA Pro는 상업용이지만, 기능이 조금 부족한 옛날 버전은 무료로 다운로드할 수 있다(2015년 12월의 경우 버전 5.0).

IDA 프로
Interactive Disassembler
원저자Ilfak Guilfanov
안정화 버전
7.1[1] / 2018년 2월 27일 (20달 전)(2018-02-27)
프로그래밍 언어C++[2]
운영 체제마이크로소프트 윈도우, OS X, 리눅스
언어영어, 러시아어
종류역어셈블러
라이선스사유
웹사이트www.hex-rays.com/products/ida/index.shtml

IDA는 코드 섹션들 사이의 상호 참조와 API 호출 시의 파라미터, 그리고 다른 정보를 통해 자동 코드 분석을 수행한다. 디스어셈블의 특성상 정확한 분석이 어렵고, 사람의 많은 도움을 필요로 하지만 IDA는 디스어셈블을 향상시키기 위한 대화형 기능을 가지고 있다. 보편적인 IDA 사용자는 자동으로 생성된 디스어셈블 목록과 함께 시작하게 되며 코드에서 데이터로 또는 데이터에서 코드로 섹션을 바꾸고, 리네이밍, 주석 달기, 정보 추가 등을 할 수 있다.

Ilfak Guilfanov에 의해 셰어웨어로 개발된 IDA는 나중에 벨기에 회사인 DataRescue에 의해 상용 제품으로 팔리게 된다. 이 회사는 제품을 개선시키고 IDA Pro라는 이름으로 판매한다. 2005년에는 Guilfanov가 Hex-Rays 디컴파일러 IDA extention을 위해 Hex-Rays를 만들고, 2008년 1월에는 Hex-Rays가 DataRescue의 IDA Pro에 대한 개발과 지원을 맡게 된다.[4]

스크립팅편집

"IDC 스크립트"는 디스어셈블러의 기능을 확장할 수 있게 만들어 준다. 유저의 스크립트 작성을 위한 기준으로 몇몇 도움이 되는 스크립트들이 제공된다. 대부분의 빈번한 스크립트들은 생성된 코드의 추가적인 변경을 위해 사용된다. 예를 들면 외부 기호 테이블(external symbol table)들은 원본 소스 코드의 함수 이름을 사용함으로써 로드될 수 있다. IDA 스크립트와 발생한 문제들에 대한 지원을 위한 웹사이트가 있다.

사용자들은 IDC에 추가하거나 대신할 수 있는 용도로 사용되는 다른 스크립트 언어들을 통해 플러그인들을 개발하였다. IdaRUB 는 루비를, IDAPython은 파이썬을 지원한다.

지원되는 시스템/프로세서/컴파일러편집

  • 시스템 호스트
    • 윈도우 x86와 ARM
    • 리눅스 x86
    • Mac OS X x86
  • 인식되는 실행 파일 포맷
    • COFF와 여기서 파생된 Win32/64/generic PE 포맷
    • ELF와 여기서 파생된 것들
    • Mach-O (Mach)
    • NLM (넷웨어)
    • LC/LE/LX (OS/2 3.x와 다양한 도스 익스텐더들)
    • NE (OS/2 2.x, Win16와 다양한 도스 익스텐더들)
    • MZ (MS-DOS)
    • OMF와 여기서 파생된 것들
    • AIM (포괄적으로)
    • ROM 이미지나 COM 파일 같은 바이너리
  • 명령어 집합
    • 인텔 80x86 Family
    • ARM 아키텍처
    • Motorola 68k와 H8
    • 자일로그 Z80
    • MOS 6502
    • 인텔 i860
    • DEC Alpha (알파 프로세서)
    • 아날로그 디바이스 ADSP218x
    • Angstrem KR1878
    • Atmel AVR 시리즈
    • DEC 시리즈 PDP11
    • 후지쯔 F2MC16L/F2MC16LX
    • 후지쯔 FR 32-bit Family
    • 히타치 SH3/SH3B/SH4/SH4B
    • 히타치 H8: h8300/h8300a/h8s300/h8500
    • 인텔 196 시리즈: 80196/80196NP
    • 인텔 51 시리즈: 8051/80251b/80251s/80930b/80930s
    • 인텔 i960 시리즈
    • 인텔 Itanium (ia64) 시리즈
    • 자바 가상 머신
    • MIPS: mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l
    • 마이크로칩 PIC: PIC12Cxx/PIC16Cxx/PIC18Cxx
    • MSIL (공통 중간 언어)
    • 미쓰비시 7700 Family: m7700/m7750
    • 미쓰비시 m32/m32rx
    • 미쓰비시 m740
    • 미쓰비시 m7900
    • 모토롤라 DSP 5600x Family: dsp561xx/dsp5663xx/dsp566xx/dsp56k
    • 모토롤라 ColdFire
    • 모토롤라 HCS12
    • NEC 78K0/78K0S
    • PA-RISC
    • 파워PC
    • 제논 파워PC Family
    • SGS-Thomson ST20/ST20c4/ST7
    • SPARC Family
    • 삼성 SAM8
    • 지멘스 C166 시리즈
    • TMS320Cxxx 시리즈
  • 컴파일러/라이브러리 (자동으로 라이브러리 함수를 인식하기 위해)[5]
    • 도스/윈도우용 볼랜드 C++ 5.x
    • 볼랜드 C++ 3.1
    • 도스/윈도우용 볼랜드 C 빌더 v4
    • Cygwin용 GNU C++
    • 비주얼 C++
    • 마이크로소프트 QuickC
    • 마이크로소프트 Visual C++
    • 도스/OS2용 Watcom C++ (16/32 bit)
    • ARM C v1.2
    • 유닉스용 GNU C++

디버깅편집

IDA Pro는 아래를 포함한 다양한 디버거들을 지원한다.[6]

  • 원격으로 윈도우, 리눅스 그리고 맥 응용 프로그램들을 자신의 원래 환경에서 디버깅 할 수 있게 한다. (주로 악성코드 디버깅을 위해 사용한다.)
  • GNU 디버거 (gdb)는 네이티브 윈도우 디버거처럼 리눅스와 OS X를 지원한다.
  • Bochs 플러그인은 간단한 응용 프로그램 디버깅을 위해 제공된다. (즉, 손상된 UPX 또는 mpress로 압축된 실행파일들)
  • 인텔 PIN 디버거
  • 기록 다시보기

각주편집

  1. IDA: What's new in 7.1 (February 27, 2018)
  2. Hex-rays Home
  3. IDA Pro 5.0 Freeware version download
  4. “About Us”. Hex-Rays. 2012년 2월 27일. 2013년 9월 2일에 확인함. 
  5. “FLIRT Compiler Support”. Hex-Rays. 
  6. Eagle, Chris (2008). 《The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler》. No Starch Press. ISBN 978-1-59327-178-7. 

외부 링크편집