인터랙티브 디스어셈블러

인터랙티브 디스어셈블러(Interactive DisAssembler, IDA)는 컴퓨터 소프트웨어 용 디스어셈블러이다. 디스어셈블러는 기계어 코드로부터 어셈블리어 소스 코드를 생성한다. 이것은 다양한 실행 파일과 중앙 처리 장치 그리고 운영 체제를 지원한다. 또한 Windows PE, Mac OS X Mach-O, 그리고 리눅스 ELF 실행 파일에 대해서는 디버거로 사용할 수 있다. C/C++ 컴파일러로 컴파일된 프로그램은 디컴파일러 플러그인은 추가 요금을 통해 사용할 수 있다. 최신 버전의 IDA Pro는 상업용이지만, 기능이 조금 부족한 옛날 버전은 무료로 다운로드할 수 있다(2015년 12월의 경우 버전 5.0). 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에 대한 개발과 지원을 맡게 된다. "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 시리즈 컴파일러/라이브러리 (자동으로 라이브러리 함수를 인식하기 위해) 도스/윈도우용 볼랜드 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는 아래를 포함한 다양한 디버거들을 지원한다. 원격으로 윈도우, 리눅스 그리고 맥 응용 프로그램들을 자신의 원래 환경에서 디버깅 할 수 있게 한다. (주로 악성코드 디버깅을 위해 사용한다.) GNU 디버거 (gdb)는 네이티브 윈도우 디버거처럼 리눅스와 OS X를 지원한다. Bochs 플러그인은 간단한 응용 프로그램 디버깅을 위해 제공된다. (즉, 손상된 UPX 또는 mpress로 압축된 실행파일들) 인텔 PIN 디버거 기록 다시보기 기드라 Radare2 Czokow, Geoffrey (2021년 5월 20일). “IDA: celebrating 30 years of binary analysis innovation”. 《Hex-Rays》 (영어). 2023년 3월 19일에 확인함.  “IDA 8.4.240527 (8.4sp2)”. 2024년 6월 2일에 원본 문서에서 보존된 문서. 2024년 6월 28일에 확인함.  Hex-rays Home IDA Pro 5.0 Freeware version download “About Us”. Hex-Rays. 2012년 2월 27일. 2016년 2월 15일에 원본 문서에서 보존된 문서. 2013년 9월 2일에 확인함.  “FLIRT Compiler Support”. Hex-Rays.  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.  (영어) 인터랙티브 디스어셈블러 - 공식 웹사이트 (러시아어) 인터랙티브 디스어셈블러 - 공식 웹사이트