# مفكك تفاعلي أيدا (برمجية)

المُفكك التفاعلي ( IDA ) هو مُفكك لبرامج الكمبيوتر والذي يقوم بإنشاء كود مصدر لغة التجميع من كود قابل للتنفيذ بواسطة الجهاز . يدعم مجموعة متنوعة من التنسيقات القابلة للتنفيذ للمعالجات وأنظمة التشغيل المختلفة. يمكن أيضًا استخدامه كمصحح أخطاء (Debugger) لأنظمة التشغيل مثل Windows PE وMac OS X Mach-O وملفات Linux ELF القابلة للتنفيذ. كما يتوفر مكون إضافي لدعم فك التجميع (Disassembly).، والذي يقوم بإنشاء تمثيل عالي المستوى يشبه كود المصدر C للبرنامج الذي تم تحليله، مقابل تكلفة إضافية.
تُستخدم IDA على نطاق واسع في الهندسة العكسية للبرمجيات، بما في ذلك تحليل البرامج الضارة وأبحاث نقاط ضعف البرمجيات . يشار إلى IDA باسم "مفكك المعايير الصناعية الفعلية".

## تاريخ

بدأ *إلفاك جيلفانوف* تطوير IDA في عام 1990، ووزّعه في البداية كتطبيق مشترك (Shareware). وفي عام 1996، تولت شركة *DataRescue* البلجيكية تطوير البرنامج وطرحه كمنتج تجاري تحت اسم *IDA Pro*.
لم تكن الإصدارات الأولية من IDA تحتوي على واجهة مستخدم رسومية (GUI) ، وتم تشغيلها كتطبيق وحدة تحكم ممتد لنظام DOS أو OS/2 أو Windows. في عام 1999، أصدرت DataRescue الإصدار الأول من IDA Pro مع واجهة المستخدم الرسومية، IDA Pro 4.0.
في عام 2005، أسس جيلفانوف شركة Hex-Rays لمتابعة تطوير ملحق Hex-Rays Decompiler IDA. في يناير 2008، تولت شركة Hex-Rays تطوير ودعم برنامج IDA Pro الخاص بـ DataRescue.
في عام 2022، استحوذت شركة Smartfin، وهي شركة أوروبية لرأس المال الاستثماري والأسهم الخاصة، على شركة Hex-Rays.

## سمات

يقوم *IDA* بتحويل البرامج المترجمة إلى تمثيل بلغة التجميع (Assembly). وإلى جانب التفكيك الأساسي، يضيف *IDA* تلقائيًا شروحات إلى البرامج المفككة، متضمنة معلومات حول:
* المراجع المتبادلة بين الكود والبيانات في البرنامج
* مواقع الوظائف، وإطارات مكدس الوظائف، واتفاقيات استدعاء الوظائف
* أنواع البيانات المعاد بناؤها
ومع ذلك، فإن طبيعة التفكيك تحول دون تحقيق الدقة الكاملة، مما يستلزم تدخلًا بشريًا كبيرًا. يوفر IDA وظيفة تفاعلية لدعم تحسين عملية التفكيك. يبدأ المستخدم عادةً بقائمة تفكيك تُنشأ تلقائيًا، ثم يقوم بتحويل الأقسام بين الكود والبيانات والعكس، إضافة إلى إعادة التسمية، والتعليق، وإدخال معلومات إضافية، حتى تتضح وظائف البرنامج بشكل كامل.

### البرمجة النصية

تتيح "نصوص IDC" توسيع نطاق تشغيل المفكك، حيث توفر نصوصًا جاهزة يمكن استخدامها كأساس لإنشاء نصوص مخصصة من قبل المستخدم. غالبًا ما تُستخدم هذه النصوص لإجراء تعديلات إضافية على الكود الناتج. على سبيل المثال، يمكن استخدامها لتحميل جداول الرموز الخارجية مع تعيين أسماء الوظائف كما وردت في الكود الأصلي.
قام المستخدمون بإنشاء مكونات إضافية تسمح باستخدام لغات برمجة نصية شائعة أخرى بدلاً من IDC أو بالإضافة إليها. يدعم IdaRUB لغة Ruby ويضيف IDAPython دعمًا لـ Python . اعتبارًا من الإصدار 5.4، يأتي IDAPython (المعتمد على Python 2.5) مثبتًا مسبقًا مع IDA Pro.

### مصحح الأخطاء

يدعم *IDA Pro* مجموعة من أدوات تصحيح الأخطاء (Debugging tools)، بما في ذلك:
* تتيح تطبيقات Windows وLinux وMac البعيدة (التي توفرها Hex-Rays) تشغيل ملف قابل للتنفيذ في بيئته الأصلية (من المفترض باستخدام جهاز افتراضي للبرامج الضارة)
* يتم دعم GNU Debugger (gdb) على Linux وOS X، بالإضافة إلى مصحح أخطاء Windows الأصلي
* يتم توفير مكون إضافي لـ Bochs لتصحيح أخطاء التطبيقات البسيطة (على سبيل المثال، ملفات UPX التالفة أو الملفات المضغوطة المضغوطة mpress)
* مصحح أخطاء يعتمد على PIN من Intel
* إعادة تشغيل التتبع
الإصدار الأحدث من IDA Pro هو إصدار تجاري (الإصدار 8.4 اعتبارًا من يونيو 2024)، بينما يتوفر إصدار محدود القدرات، يُعرف باسم IDA Free، للتنزيل مجانًا.

## الأنظمة/المعالجات/المُجمِّعات المدعومة

* System hosts
** Windows x86 and ARM
** Linux x86
** Mac OS X 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
** Xenon PowerPC Family
** SGS-Thomson ST20/ST20c4/ST7
** SPARC Family
** Samsung SAM8
** Siemens C166
** TMS320Cxxx series
* Compiler/libraries (for automatic library function recognition)
** Borland C++ 5.x for DOS/Windows
** Borland C++ 3.1
** Borland C Builder v4 for DOS/Windows
** GNU C++ for Cygwin
** Microsoft C
** Microsoft QuickC
** Microsoft Visual C++
** Watcom C/C++ (16/32 bit) for DOS/OS2
** ARM C v1.2
** GNU C++ for Unix/common

## الشعار

شعار IDA Pro هو صورة مقصوصة لفرانسواز دوبيني، ماركيز دي ماينتنون . صورة الشعار تشبه لوحة مصغرة لفرانسواز دوبيني التي تم توثيقها لرسام في دائرة بيير مينارد .
تم تقديم النسخة الأصلية ذات اللون الرمادي من الشعار في سبتمبر 1999، مع إصدار IDA 4.0. صرح إلفاك جيلفانوف أن الشعار ليس تصويرًا للقديسة إيدا من لوفين .

## انظر أيضا

* النينجا الثنائية
* محرك الغش
* غيدرا
* جيب
* رادار2

## مراجع

* ↑ "Hex-rays Home". مؤرشف من الأصل في 2024-05-26. اطلع عليه بتاريخ 2008-03-31.
* ↑ Czokow, Geoffrey (20 May 2021). "IDA: celebrating 30 years of binary analysis innovation". Hex-Rays (بالإنجليزية). Retrieved 2023-03-19.
* ↑ "IDA 8.4.240527 (8.4sp2)". مؤرشف من الأصل في 2024-06-02. اطلع عليه بتاريخ 2024-06-28.
* ↑ Eagle، Chris (2011). "Chapter 23: Real-World IDA Plug-ins". The IDA Pro Book : the Unoffical Guide to the World's Most Popular Disassembler (ط. 2nd). San Francisco: No Starch Press. ص. 500–502. ISBN:978-1-59327-395-8. OCLC:830164382.
* ↑ "Hex-Rays Decompiler". hex-rays.com. مؤرشف من الأصل في 2022-05-20. اطلع عليه بتاريخ 2023-03-18.
* ↑ Staff, S. C. (11 Sep 2017). "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 (22 مايو 2016). "SOK: (State of) the Art of War: Offensive Techniques in Binary Analysis". 2016 IEEE Symposium on Security and Privacy (SP). ص. 138–157. DOI:10.1109/SP.2016.17. hdl:11311/1161277. ISBN:978-1-5090-0824-7. S2CID:3337994. مؤرشف من الأصل في 2022-12-08. اطلع عليه بتاريخ 2023-03-17.
* ↑ Ben Khadra، M. Ammar؛ Stoffel، Dominik؛ Kunz، Wolfgang (1 أكتوبر 2016). "Speculative disassembly of binary code". Proceedings of the International Conference on Compilers, Architectures and Synthesis for Embedded Systems. CASES '16. New York, NY, USA: Association for Computing Machinery. ص. 1–10. DOI:10.1145/2968455.2968505. ISBN:978-1-4503-4482-1. S2CID:16206393. It outperforms IDA Pro, the de-facto industry standard disassembler, in terms of disassembly correctness.
* ↑ Di Federico، Alessandro؛ Payer، Mathias؛ Agosta، Giovanni (5 فبراير 2017). "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. ص. 131–141. DOI:10.1145/3033019.3033028. ISBN:978-1-4503-5233-8. S2CID:15830760. We evaluate our prototype implementation against the de-facto industry standard for static binary analysis, IDA Pro,
* ↑ Garcia Prado، Carlos؛ Erickson، Jon (10 أبريل 2018). "Solving Ad-hoc Problems with Hex-Rays API". FireEye Threat Research Blog. مؤرشف من الأصل في 2022-06-02. اطلع عليه بتاريخ 2023-03-12. 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. ISBN:978-1-59327-913-4. OCLC:1050453850. This [IDA Pro] is the de facto industry-standard recursive disassembler.{{استشهاد بكتاب}}: صيانة الاستشهاد: مكان بدون ناشر (link)
* ↑ "DataRescue IDA Page : download an evaluation version". DataRescue. مؤرشف من الأصل في 1997-02-14.
* ↑ "DataRescue IDA Pro What's new Page". DataRescue. مؤرشف من الأصل في 1999-10-10.
* ↑ "Gegevens van de geregistreerde entiteit | KBO Public Search". kbopub.economie.fgov.be. اطلع عليه بتاريخ 2023-03-13.
* ↑ "Hex-Rays Decompiler". Hex-Rays. مؤرشف من الأصل في 2007-10-11.
* ↑ "DataRescue Home Page : home of the IDA Pro Disassembler and of PhotoRescue". DataRescue. مؤرشف من الأصل في 2008-02-21. News 07/01/2008: IDA Pro moves to Hex-Rays.
* ↑ "Hex-Rays Home Page". Hex-Rays. مؤرشف من الأصل في 2008-02-12.
* ↑ "A consortium of investors acquires Hex-Rays – Hex Rays" (بالإنجليزية). 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 (بالإنجليزية الأمريكية). 20 Oct 2022. Archived from the original on 2023-07-21. Retrieved 2023-07-21.
* ↑ "Spoonm/Idarub". غيت هاب. مؤرشف من الأصل في 2016-01-08. اطلع عليه بتاريخ 2011-12-05.
* ↑ "Idapython [d-dome.net]". مؤرشف من الأصل في 2006-01-16.
* ↑ "FLIRT Compiler Support". Hex-Rays. مؤرشف من الأصل في 2011-10-03. اطلع عليه بتاريخ 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 (بالألمانية). Archived from the original on 2023-08-14. Retrieved 2024-07-08.
* ↑ Czokow, Geoffrey (20 May 2021). "IDA: celebrating 30 years of binary analysis innovation". Hex-Rays (بالإنجليزية). Retrieved 2023-03-19.
* ↑ Guilfanov، Ilfak (13 أبريل 2006). "Sainte Ida | Hex Blog". Hex Blog. مؤرشف من الأصل في 2011-06-17. اطلع عليه بتاريخ 2024-07-08.
* بوابة برمجة الحاسوب
* بوابة برمجيات
* بوابة علم الحاسوب