Recent from talks
Nothing was collected or created yet.
Interactive Disassembler
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| Interactive Disassembler | |
|---|---|
Portrait of Françoise d'Aubigné, whose image is used as the IDA logo | |
| Original author | Ilfak Guilfanov |
| Developer | Hex-Rays |
| Initial release | May 21, 1991[1] |
| Stable release | 9.1[2]
/ February 28, 2025 |
| Written in | C++[3] |
| Operating system | Microsoft Windows, Mac OS X, and Linux |
| Available in | English, Russian |
| Type | Disassembler, Decompiler |
| License | Proprietary |
| Website | hex-rays |
The Interactive Disassembler (IDA) is a disassembler for computer software which generates assembly language source code from machine-executable code. It supports a variety of executable formats for different processors and operating systems. It can also be used as a debugger for Windows PE, Mac OS X Mach-O, and Linux ELF executables. A decompiler plug-in, which generates a high level, C source code-like representation of the analysed program, is available at extra cost.[4][5]
IDA is used widely in software reverse engineering, including for malware analysis[6][7] and software vulnerability research.[8][9] IDA's decompiler is one of the most popular and widely used decompilation frameworks,[10][11][12] and IDA has been called the "de-facto industry standard" for program disassembly and static binary analysis.[13][14][15]
History
[edit]Ilfak Guilfanov began working on IDA in 1990,[16][17][18][19] and initially distributed it as a shareware application. In 1996, the Belgian company DataRescue took over the development of IDA and began to sell it as a commercial product, under the name IDA Pro.[20][21]
Initial versions of IDA did not have a graphical user interface (GUI), and ran as an extended DOS, OS/2, or Windows console application.[22] In 1999, DataRescue released the first version of IDA Pro with a GUI, IDA Pro 4.0.[23]
In 2005, Guilfanov founded Hex-Rays to pursue the development of the Hex-Rays Decompiler IDA extension.[24][25] In January 2008, Hex-Rays assumed the development and support of DataRescue's IDA Pro.[26][27]
In 2022, Hex-Rays was acquired by a group of investors led by Smartfin, a European venture capital and private equity investor. Co-investors in the acquisition included the Belgian public holding company The Federal Holding & Investment Company (SFPIM), and the Walloon public investment firm Regional Investment Company of Wallonia (SRIW).[28][29]
Features
[edit]IDA disassembles a compiled program back into an assembly language representation. In addition to performing basic disassembly, IDA also automatically annotates disassembled programs with information about:[30]
- cross-references between code and data in the program
- function locations, function stack frames, and function calling conventions
- reconstructed data types
However, the nature of disassembly precludes total accuracy, and a great deal of human intervention is necessarily required; IDA has interactive functionality to aid in improving the disassembly. A typical IDA user will begin with an automatically generated disassembly listing and then convert sections from code to data and vice versa, rename, annotate, and otherwise add information to the listing, until its functionality becomes clear.
Scripting
[edit]"IDC scripts" make it possible to extend the operation of the disassembler. Some helpful scripts are provided, which can serve as the basis for user written scripts. Most frequently scripts are used for extra modification of the generated code. For example, external symbol tables can be loaded thereby using the function names of the original source code.
Users have created plugins that allow other common scripting languages to be used instead of, or in addition to, IDC. IdaRUB[31] supports Ruby and IDAPython[32] adds support for Python. As of version 5.4, IDAPython (dependent on Python 2.5) comes preinstalled with IDA Pro.
Debugging
[edit]IDA Pro supports a number of debuggers,[33] including:
- Remote Windows, Linux, and Mac applications (provided by Hex-Rays) allow running an executable in its native environment (presumably using a virtual machine for malware)
- GNU Debugger (gdb) is supported on Linux and OS X, as well as the native Windows debugger
- A Bochs plugin is provided for debugging simple applications (i.e., damaged UPX or mpress compacted executables)
- An Intel PIN-based debugger
- A trace replayer
Versions
[edit]The latest full version of IDA Pro is available via paid annual subscription (version 9.0sp1 as of December 2024), while a less capable version (limited to x86), named IDA Free, is available for download free of cost.[34]
Supported systems/processors/compilers
[edit]- System hosts
- Windows x86 and ARM
- Linux x86
- macOS x86
- Recognized executable file formats
- COFF and derivatives, including Win32/64/generic PE
- ELF and derivatives (generic)
- Mach-O (Mach)
- NLM (NetWare)
- LC/LE/LX (OS/2 2.x+ and various DOS extenders)
- NE (OS/2 1.x, Win16, and various DOS extenders)
- MZ (MS-DOS)
- OMF and derivatives (generic)
- AIM (generic)
- raw binary, such as a ROM image or a COM file
- Instruction sets
- Intel 80x86 family
- ARM architecture
- Motorola 68k and H8
- Zilog Z80
- MOS 6502
- Intel i860
- DEC Alpha
- Analog Devices ADSP218x
- Angstrem KR1878
- Atmel AVR series
- DEC series PDP11
- Fujitsu F2MC16L/F2MC16LX
- Fujitsu FR 32-bit Family
- Hitachi SH3/SH3B/SH4/SH4B
- Hitachi H8: h8300/h8300a/h8s300/h8500
- Intel 196 series: 80196/80196NP
- Intel 51 series: 8051/80251b/80251s/80930b/80930s
- Intel i960 series
- Intel Itanium (ia64) series
- Java virtual machine
- MIPS: mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l
- Microchip PIC: PIC12Cxx/PIC16Cxx/PIC18Cxx
- MSIL
- Mitsubishi 7700 Family: m7700/m7750
- Mitsubishi m32/m32rx
- Mitsubishi m740
- Mitsubishi m7900
- Motorola DSP 5600x Family: dsp561xx/dsp5663xx/dsp566xx/dsp56k
- Motorola ColdFire
- Motorola HCS12
- NEC 78K0/78K0S
- PA-RISC
- PowerPC
- RISC-V
- Xenon PowerPC family
- SGS-Thomson ST20/ST20c4/ST7
- SPARC family
- Samsung SAM8
- Siemens C166
- TMS320Cxxx series
- Compiler/libraries (for automatic library function recognition)[35]
- Borland C++ 5.x for DOS/Windows
- Borland C++ 3.1
- Borland C Builder v4 for DOS/Windows
- GNU C++ for Cygwin
- Microsoft C
- QuickC
- Visual C++
- Watcom C/C++ (16/32 bit) for DOS & OS/2
- ARM C v1.2
- GNU C++ for Unix/common
Logo
[edit]IDA Pro's logo is a cropped image of Françoise d'Aubigné, Marquise de Maintenon. The logo image is similar to a miniature painting of Françoise d'Aubigné attested to a painter in the circle of Pierre Mignard.[36]
The original greyscale version of the logo was introduced in September 1999, with the release of IDA 4.0.[18] Ilfak Guilfanov has stated that the logo is not a depiction of Saint Ida of Louvain.[37]
See also
[edit]References
[edit]- ^ Czokow, Geoffrey (2021-05-20). "IDA: celebrating 30 years of binary analysis innovation". Hex-Rays. Retrieved 2023-03-19.
- ^ "IDA 9.1". Retrieved March 29, 2024.
- ^ "Hex-rays Home". Archived from the original on 2024-05-26. Retrieved 2008-03-31.
- ^ Eagle, Chris (2011). "Chapter 23: Real-World IDA Plug-ins". The IDA Pro Book: the Unofficial Guide to the World's Most Popular Disassembler (2nd ed.). San Francisco: No Starch Press. pp. 500–502. ISBN 978-1-59327-395-8. OCLC 830164382.
- ^ "Hex-Rays Decompiler". hex-rays.com. Retrieved 2023-03-18.
- ^ Staff, S. C. (2017-09-11). "Hex-Rays IDA Pro". SC Media. Retrieved 2023-03-13.
- ^ Sikorski, Michael (2012). "Chapter 5. IDA Pro". Practical Malware Analysis: a Hands-On Guide to Dissecting Malicious Software. Andrew Honig. San Francisco: No Starch Press. ISBN 978-1-59327-430-6. OCLC 830164262.
- ^ Shoshitaishvili, Yan; Wang, Ruoyu; Salls, Christopher; Stephens, Nick; Polino, Mario; Dutcher, Andrew; Grosen, John; Feng, Siji; Hauser, Christophe; Kruegel, Christopher; Vigna, Giovanni (2016-05-22). "SOK: (State of) the Art of War: Offensive Techniques in Binary Analysis". 2016 IEEE Symposium on Security and Privacy (SP). pp. 138–157. doi:10.1109/SP.2016.17. hdl:11311/1161277. ISBN 978-1-5090-0824-7.
- ^ Guo, Wei; Wei, Qiang; Wu, Qianqiong; Guo, Zhimin (2022-04-01). "CSChecker: A binary taint-based vulnerability detection method based on static taint analysis". Journal of Physics: Conference Series. 2258 (1) 012069. Bibcode:2022JPhCS2258a2069G. doi:10.1088/1742-6596/2258/1/012069. ISSN 1742-6588.
- ^ Yakdan, Khaled; Eschweiler, Sebastian; Gerhards-Padilla, Elmar; Smith, Matthew (2015). No More Gotos: Decompilation Using Pattern-Independent Control-Flow Structuring and Semantics-Preserving Transformations. doi:10.14722/ndss.2015.23185. ISBN 978-1-891562-38-9. Retrieved 2023-03-18.
{{cite book}}:|website=ignored (help) - ^ Schulte, Eric; Ruchti, Jason; Noonan, Matt; Ciarletta, David; Loginov, Alexey (2018). "Evolving Exact Decompilation". Proceedings 2018 Workshop on Binary Analysis Research. Reston, VA: Internet Society. doi:10.14722/bar.2018.23008. ISBN 978-1-891562-50-1.
- ^ Liu, Zhibo; Wang, Shuai (2020-07-18). "How far we have come: Testing decompilation correctness of C decompilers". Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis. ISSTA 2020. New York, NY, USA: Association for Computing Machinery. pp. 475–487. doi:10.1145/3395363.3397370. ISBN 978-1-4503-8008-9.
- ^ Di Federico, Alessandro; Payer, Mathias; Agosta, Giovanni (2017-02-05). "Rev.ng: A unified binary analysis framework to recover CFGS and function boundaries". Proceedings of the 26th International Conference on Compiler Construction. CC 2017. New York, NY, USA: Association for Computing Machinery. pp. 131–141. doi:10.1145/3033019.3033028. ISBN 978-1-4503-5233-8.
In an extensive evaluation, we test our [binary analysis] tool on binaries compiled for MIPS, ARM, and x86-64 using GCC and clang and compare them to the industry's state of the art tool, IDA Pro, and two well-known academic tools, BAP/ByteWeight and angr.
- ^ Garcia Prado, Carlos; Erickson, Jon (April 10, 2018). "Solving Ad-hoc Problems with Hex-Rays API". FireEye Threat Research Blog. Archived from the original on June 2, 2022. Retrieved March 12, 2023.
IDA Pro is the de facto standard when it comes to binary reverse engineering.
- ^ Andriesse, Dennis (2019). "Appendix C: List of Binary Analysis Tools". Practical binary analysis: build your own Linux tools for binary instrumentation, analysis, and disassembly. San Francisco, CA: No Starch Press, Inc. ISBN 978-1-59327-913-4. OCLC 1050453850.
This [IDA Pro] is the de facto industry-standard recursive disassembler.
- ^ Гильфанов, Ильфак (22 May 2003). "IDA Pro - samyj moshhnyj dizassembler v mire" IDA Pro - самый мощный дизассемблер в мире [IDA Pro - the most powerful disassembler in the world] (Interview) (in Russian). Interviewed by Доля, Алексей. Компания "Ф-Центр". sec. 2.30. Archived from the original on May 15, 2021. Retrieved 14 March 2023.
Он начался как хобби в далеком 1991 году, просто увлечением для себя и для друзей.
- ^ "IDA Pro - Часто задаваемые вопросы". Archived from the original on December 19, 2003.
Первые строки для IDA были написаны в декабре 1990.
- ^ a b Czokow, Geoffrey (2021-05-20). "IDA: celebrating 30 years of binary analysis innovation". Hex-Rays. Retrieved 2023-03-19.
- ^ "Hex Rays - State-of-the-art binary code analysis solutions". hex-rays.com. Archived from the original on 2023-05-31. Retrieved 2023-07-21.
- ^ Guilfanov, Ilfak (22 June 2015), CODE BLUE 2014 : Ilfak Guilfanov - Keynote: The story of IDA Pro, retrieved 2023-03-16,
Datarescue converted my hobby project into a commercial program in 1996.
- ^ "DataRescue IDA Pro Page". DataRescue. Archived from the original on 1997-02-14.
- ^ "DataRescue IDA Page: download an evaluation version". DataRescue. Archived from the original on 1997-02-14.
- ^ "DataRescue IDA Pro What's new Page". DataRescue. Archived from the original on 1999-10-10.
- ^ "Gegevens van de geregistreerde entiteit | KBO Public Search". kbopub.economie.fgov.be. Retrieved 2023-03-13.
- ^ "Hex-Rays Decompiler". Hex-Rays. Archived from the original on 2007-10-11.
- ^ "DataRescue Home Page: home of the IDA Pro Disassembler and of PhotoRescue". DataRescue. Archived from the original on 2008-02-21.
News 07/01/2008: IDA Pro moves to Hex-Rays.
- ^ "Hex-Rays Home Page". Hex-Rays. Archived from the original on 2008-02-12.
- ^ "A consortium of investors acquires Hex-Rays – Hex Rays". 19 October 2022. Archived from the original on 2023-07-21. Retrieved 2023-07-21.
- ^ "News Industry | Smartfin led consortium acquires Hex-Rays to accelerate product innovation efforts". Help Net Security. 2022-10-20. Archived from the original on 2023-07-21. Retrieved 2023-07-21.
- ^ Eagle, Chris (2011). "Part II. Basic IDA Usage". The IDA Pro Book: the Unofficial Guide to the World's Most Popular Disassembler (2nd ed.). San Francisco: No Starch Press. ISBN 978-1-59327-395-8. OCLC 830164382.
- ^ "Spoonm/Idarub". GitHub. Archived from the original on 2016-01-08. Retrieved 2011-12-05.
- ^ "Idapython [d-dome.net]". Archived from the original on 2006-01-16.
- ^ 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.
- ^ "IDA Pro Freeware version download". Archived from the original on 2008-08-08. Retrieved 2008-03-31.
- ^ "FLIRT Compiler Support". Hex-Rays. Archived from the original on 2011-10-03. Retrieved 2010-04-13.
- ^ "Französische Schule, Nachfolge Pierre Mignard - Osterauktion 17.04.2019 - Schätzwert: EUR 1.500 bis EUR 2.600 - Dorotheum". www.dorotheum.com (in Austrian German). Archived from the original on 2023-08-14. Retrieved 2024-07-08.
- ^ Guilfanov, Ilfak (2006-04-13). "Sainte Ida | Hex Blog". Hex Blog. Archived from the original on 2011-06-17. Retrieved 2024-07-08.
Further reading
[edit]- Eilam, Eldad (2005). Reversing: Secrets of Reverse Engineering. Wiley Publishing. p. 595. ISBN 0-7645-7481-7.
External links
[edit]- Official website
- "IDA Pro on Internet Archive" (in Russian). Archived from the original on 2015-01-16.
- "IDA plug-ins and scripts". Open Reverse Code Engineering (OpenRCE).
Interactive Disassembler
View on GrokipediaHistory
Origins and Early Development
The Interactive Disassembler (IDA) originated as a personal project initiated by Ilfak Guilfanov, a software developer with experience in Soviet-era computing, who sought to create a tool for analyzing proprietary software binaries without access to their source code.[3] Guilfanov's motivation stemmed from the challenges of reverse engineering closed-source programs during the early 1990s, a period when such analysis was essential for understanding and modifying software in resource-constrained environments.[3] The first idea for IDA emerged in the fall of 1990, with the initial lines of code written in January 1991.[3] By April 1991, the tool achieved its first complete disassembly of a program, marking a key milestone in its development.[3] The first release, version 0.1, occurred on May 21, 1991.[3] Unlike contemporary batch-oriented disassemblers that processed entire files at once, IDA emphasized an interactive, user-driven approach, allowing analysts to load and explore code fragments on demand while enabling features like renaming variables and adding comments in real time.[3] From the outset, it supported multiple processor architectures, including x86 and 6502, to facilitate cross-platform binary analysis.[3] Prior to 1994, IDA was distributed non-commercially through networks like FidoNet, bulletin board systems (BBS), and limited FTP sites. In 1994, version 2.0 introduced shareware distribution along with IDC scripting and expanded processor support.[3] IDA evolved from a basic disassembler into a foundational reverse engineering tool with capabilities such as incremental database saving for persistent analysis sessions.[3] This grassroots sharing model allowed early adopters in the reverse engineering community to refine and expand its use before full commercialization efforts.Commercialization and Growth
Version 3.0, released around 1997 as part of the mid-1990s transition to commercial shareware, introduced enhanced extensibility through scripting capabilities and support for multiple processor architectures to broaden its appeal to software engineers.[3] Improvements to the tool's database format during this period enabled persistent storage of analysis results for incremental work and more efficient memory usage.[3] In 1999, IDA Pro 4.0 introduced a graphical user interface for Windows, significantly enhancing usability with visual representations such as disassembly graphs and cross-reference views that facilitated navigation through complex binaries.[3] These updates contributed to rapid growth in the user base, particularly among malware analysts and software engineers, with early adoption in antivirus research for dissecting malicious code.[3] In 2003, the Belgian company DataRescue began distributing and supporting IDA, with Guilfanov joining DataRescue to continue development in Belgium.[3]Modern Developments and Acquisitions
In 2005, Ilfak Guilfanov co-founded Hex-Rays to advance binary analysis tools, building on his earlier work developing multi-architecture disassemblers in the 1990s.[4] The company focused initially on creating plugins for IDA Pro, culminating in the release of the Hex-Rays Decompiler in 2007, which generates C-like pseudocode from disassembled binaries to aid reverse engineers.[3] In 2008, Hex-Rays assumed full development and support responsibilities for IDA Pro from DataRescue, streamlining the tool's evolution under a unified entity. This transition marked a pivotal corporate shift, enabling integrated advancements in disassembly and decompilation. Key version milestones followed, with IDA 7.0 launched in September 2017 as a native 64-bit application, allowing it to utilize the full memory capacity of modern systems and improving performance for large binaries.[6] IDA 8.0 arrived on July 29, 2022, introducing enhancements such as improved IDAPython support with Python 3.10 compatibility and expanded processor modules, alongside better integration for collaborative workflows through features like shared databases.[7] In October 2022, Hex-Rays itself was acquired by a consortium of investors led by Smartfin, providing resources for accelerated innovation in binary analysis tools amid growing demand in cybersecurity.[8] Subsequent releases emphasized emerging architectures and accessibility. IDA 9.0, released on September 30, 2024, unified 32-bit and 64-bit handling in a single binary, added a decompiler for RISC-V, and enhanced support for C++ exceptions in pseudocode output.[9] IDA 9.2 followed on September 8, 2025, with refinements to the debugger including a redesigned register widget for auto-dereferencing and color-coded views, alongside improved remote debugging capabilities for distributed analysis scenarios.[10] To broaden adoption, Hex-Rays introduced IDA Free in May 2021, offering a no-cost version suitable for beginners, students, or personal non-commercial learning with core disassembly features for x86/x64, a cloud-based decompiler, and the ability to save analysis results, but with limitations such as no local advanced debugging, no SDK access, and strict prohibition of commercial use.[5][11] Ongoing developments incorporate machine learning techniques for tasks like function recognition, as seen in plugins such as Thumbs Up, which uses classifiers to refine IDA's static analysis by identifying code patterns more accurately.[12] These innovations extend to cybersecurity integrations, including plugins like hrtng from Kaspersky for malware flow untangling and LLM-based tools via the Model Context Protocol (MCP) for AI-assisted reverse engineering workflows.[13][14]Core Features
Disassembly Engine
The disassembly engine in IDA Pro employs a recursive traversal algorithm to analyze binary executables, starting from entry points and known code locations to follow control flow paths such as jumps and calls, thereby identifying valid instructions while distinguishing code from data through automated pattern recognition and flow analysis.[15][16] This approach, part of the core autoanalysis engine, enables comprehensive coverage of program structures by iteratively exploring branches, reducing the risk of misinterpreting data as code compared to linear sweep methods.[17] The engine's options allow users to toggle recursive analysis for fine-tuned control, ensuring accurate disassembly even in complex binaries.[16] IDA Pro presents disassembled output through interactive linear and graph-based views, facilitating navigation and structural understanding of the code. The linear view displays instructions sequentially by address, ideal for scanning raw assembly listings, while the graph view organizes code into nodes representing basic blocks connected by edges for control flow, allowing users to visualize branches, loops, and function layouts with zoom, pan, and node grouping capabilities.[18][19] Users can manually rename functions, labels, and variables—via right-click or theN key—to enhance readability, with changes propagating across views and integrating seamlessly with higher-level decompiler outputs for consistent naming.[18] Additionally, the cross-references (xrefs) system tracks and displays relationships such as code jumps, calls, data reads/writes, and offsets, accessible via the X key or graph edges, enabling quick navigation to callers or usages throughout the binary.[20]
For obfuscated or packed binaries, the engine supports manual intervention to redefine code/data boundaries, apply type libraries for precise operand interpretation (e.g., resolving structures and enums), and handle anti-disassembly techniques through user-guided reanalysis.[21] The FLOSS integration, via an importable Python script, aids in deobfuscating hidden strings and constants by emulating execution paths to reveal encrypted or runtime-built data, enhancing static analysis without dynamic tracing.[22] Output options include assembly listings (ASM or LST files for selected ranges), hexadecimal dumps via the synchronized hex view, and exportable databases in formats like MAP or INC for external processing, preserving annotations and structures.[23]
