Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ida-pro-mcp — مساعد هندسة عكسية مدعوم بالذكاء الاصطناعي يربط بين IDA Pro ونماذج اللغة عبر MCP. | Kitploit
أدوات/GitHubGitHub/mrexodia/ida-pro-mcp
التحليل الثابتالتحليل الديناميكي (عزل)تحليل الكودالاستغلالالهندسة العكسيةمصممي الأخطاءتحليل البرمجيات الخبيثةتحليل الملفات الثنائيةالتعلم والتعليمالهندسة العكسية بمساعدة الذكاء الاصطناعيتحليل البرامج الثابتة
11.3k1.3kمنذ 4 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHub
mrexodia/ida-pro-mcp

ida-pro-mcp

مساعد هندسة عكسية مدعوم بالذكاء الاصطناعي يربط بين IDA Pro ونماذج اللغة عبر MCP.

عرض المستودعالموقع الإلكتروني

IDA Pro MCP

Simple MCP Server to allow vibe reversing in IDA Pro.

https://github.com/user-attachments/assets/6ebeaa92-a9db-43fa-b756-eececce2aca0

The binaries and prompt for the video are available in the mcp-reversing-dataset repository.

المتطلبات الأساسية

  • Python (3.11 أو أعلى)
    • استخدم idapyswitch للتبديل إلى أحدث إصدار من Python
  • IDA Pro (8.3 أو أعلى، يُوصى بـ9)، IDA Free غير مدعوم
  • عميل MCP مدعوم (اختر ما يناسبك)
    • Amazon Q Developer CLI
    • Augment Code
    • Claude
    • Claude Code
    • Cline
    • Codex
    • Copilot CLI
    • Crush
    • Cursor
    • Gemini CLI
    • Kilo Code
    • Kiro
    • LM Studio
    • Opencode
    • Qodo Gen
    • Qwen Coder
    • Roo Code
    • Trae
    • VS Code
    • VS Code Insiders
    • Warp
    • Windsurf
    • Zed
    • Kimi Code
    • عملاء MCP آخرون: شغّل ida-pro-mcp --config للحصول على إعداد JSON الخاص بعميلك.

ملاحظة: يتطلب ذلك تفعيل idalib بشكل عام وتثبيت uv:

root@kitploit:~
# windows
uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macos
uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"

التثبيت (Claude Code)

لتثبيت أحدث إصدار من IDA Pro MCP في Claude Code:

root@kitploit:~
claude plugin marketplace add mrexodia/claude-marketplace
claude plugin uninstall ida-pro-mcp@mrexodia
claude plugin install ida-pro-mcp@mrexodia

التثبيت (Codex)

لتثبيت أحدث إصدار من IDA Pro MCP في Codex:

root@kitploit:~
codex plugin marketplace add mrexodia/codex-marketplace
codex plugin remove ida-pro-mcp@mrexodia
codex plugin add ida-pro-mcp@mrexodia

التثبيت (Kimi Code)

لتثبيت أحدث إصدار من IDA Pro MCP في Kimi Code، شغّل هذا الأمر الشرطي في الدردشة:

root@kitploit:~
/plugins install https://github.com/mrexodia/ida-pro-mcp/tree/main
/reload

هذا يُثبّت خادم MCP الخاص بـ idalib ومهارة idapython. يتم نسخ الإضافات إلى $KIMI_CODE_HOME/plugins/managed/، لذا يجب أن يكون uv موجوداً في PATH. الجلسة الأولى بعد التثبيت ستكون أبطأ، لأن uv يحل التبعيات قبل أن يستجيب الخادم.

التثبيت (GUI)

ملاحظة: لم يعد يُوصى باستخدام إضافة MCP وسيتم إيقافها في النهاية. استخدم idalib-mcp بدلاً منها.

إذا كنت ترغب في تكوين خادم MCP يدوياً من واجهة IDA الرسومية:

root@kitploit:~
pip uninstall ida-pro-mcp
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip

قم بتكوين خوادم MCP وتثبيت إضافة IDA:

root@kitploit:~
ida-pro-mcp --install

مهم: تأكد من إعادة تشغيل IDA وعميل MCP بالكامل حتى يصبح التثبيت ساري المفعول. بعض العملاء (مثل Claude) تعمل في الخلفية ويجب إغلاقها من أيقونة شريط المهام.

هندسة الاستفسارات

تميل نماذج اللغة الكبيرة (LLMs) إلى الهلوسة وتحتاج إلى أن تكون محدداً في استفساراتك. بالنسبة للهندسة العكسية، يكون التحويل بين الأعداد الصحيحة والبايتات مشكلة خاصة. فيما يلي مثال مصغر على استفسار، لا تتردد في بدء نقاش أو فتح مشكلة إذا حصلت على نتائج جيدة باستفسار مختلف:

root@kitploit:~
Your task is to analyze a crackme in IDA Pro. You can use the MCP tools to retrieve information. In general use the following strategy:

- Inspect the decompilation and add comments with your findings
- Rename variables to more sensible names
- Change the variable and argument types if necessary (especially pointer and array types)
- Change function names to be more descriptive
- If more details are necessary, disassemble the function and add comments with your findings
- NEVER convert number bases yourself. Use the `int_convert` MCP tool if needed!
- Do not attempt brute forcing, derive any solutions purely from the disassembly and simple python scripts
- Create a report.md with your findings and steps taken at the end
- When you find a solution, prompt to user for feedback with the password you found

هذا الاستفسار كان مجرد تجربة أولى، يُرجى المشاركة إذا وجدت طرقاً لتحسين المخرجات!

استفسار آخر بواسطة @can1357:

root@kitploit:~
Your task is to create a complete and comprehensive reverse engineering analysis. Reference AGENTS.md to understand the project goals and ensure the analysis serves our purposes.

Use the following systematic methodology:

1. **Decompilation Analysis**
   - Thoroughly inspect the decompiler output
   - Add detailed comments documenting your findings
   - Focus on understanding the actual functionality and purpose of each component (do not rely on old, incorrect comments)

2. **Improve Readability in the Database**
   - Rename variables to sensible, descriptive names
   - Correct variable and argument types where necessary (especially pointers and array types)
   - Update function names to be descriptive of their actual purpose

3. **Deep Dive When Needed**
   - If more details are necessary, examine the disassembly and add comments with findings
   - Document any low-level behaviors that aren't clear from the decompilation alone
   - Use sub-agents to perform detailed analysis

4. **Important Constraints**
   - NEVER convert number bases yourself - use the int_convert MCP tool if needed
   - Use MCP tools to retrieve information as necessary
   - Derive all conclusions from actual analysis, not assumptions

5. **Documentation**
   - Produce comprehensive RE/*.md files with your findings
   - Document the steps taken and methodology used
   - When asked by the user, ensure accuracy over previous analysis file
   - Organize findings in a way that serves the project goals outlined in AGENTS.md or CLAUDE.md

بث مباشر يناقش الاستفسارات ويعرض تحليلاً حقيقياً لبرامج ضارة:

نصائح لتحسين دقة LLM

نماذج اللغة الكبيرة (LLMs) أدوات قوية، لكنها قد تواجه صعوبة أحياناً في الحسابات الرياضية المعقدة أو تظهر "هلوسة" (اختراع حقائق). تأكد من توجيه LLM لاستخدام أداة MCP int_convert وقد تحتاج أيضاً إلى math-mcp لبعض العمليات.

شيء آخر يجب تذكره هو أن LLMs لن تؤدي بشكل جيد مع الكود المشوش. قبل محاولة استخدام LLM لحل المشكلة، ألق نظرة حول الثنائي واقض بعض الوقت في إزالة العناصر التالية (بشكل تلقائي):

  • تشفير النصوص
  • تجزئة الاستيراد
  • تسطيح تدفق التحكم
  • تشفير الكود
  • حيل منع التفكيك

يجب أيضاً استخدام أداة مثل Lumina أو FLIRT لمحاولة حل جميع مكتبات المصادر المفتوحة و STL الخاص بـ C++، مما سيحسن الدقة أكثر.

النقل و MCP بدون واجهة

يمكنك تشغيل خادم SSE للاتصال بواجهة المستخدم على النحو التالي:

root@kitploit:~
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse

بعد تثبيت idalib يمكنك أيضاً تشغيل خادم MCP بدون واجهة. يمكنك البدء بثنائي أولي:

root@kitploit:~
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable

أو البدء بدون ثنائي وفتح ملفات عشوائية لاحقاً باستخدام idb_open(...):

root@kitploit:~
uv run idalib-mcp --host 127.0.0.1 --port 8745

بالنسبة للعملاء القائمين على stdio، استخدم:

root@kitploit:~
uv run idalib-mcp --stdio

عمال قاعدة البيانات ثابتون: كل عامل يعمل كعملية منفصلة تعيش أطول من المشرف الذي أنشأها. عندما يقوم مشرف جديد (عبر stdio أو HTTP) باستدعاء idb_open لثنائي مفتوح بالفعل تحت عامل على هذا المضيف، يتبنى المشرف ذلك العامل بشفافية — لا يوجد وضع "مشترك" منفصل لتفعيله. العمال يغلقون أنفسهم عندما لا تصيبهم أي طلبية لفترة خمول.

ملاحظة: تمت إضافة ميزة idalib بواسطة Willi Ballenthin.

نموذج جلسات idalib بدون واجهة

idalib-mcp هو مشرف يحتفظ بكل قاعدة بيانات مفتوحة في عملية عامل idalib خاصة بها. تسجل العمال أنفسهم في دليل اكتشاف محلي مضيف وتستمر أطول من المشرف الذي أنشأها؛ أي مشرف لاحق يريد نفس المسار يتبنى العامل الجاري. العامل يغلق نفسه عندما لا تصيبه أي طلبية لفترة الخمول TTL الخاصة به (الافتراضي ساعة واحدة). استدع idb_close لتحرير العامل بسرعة (تحرير فتحة تجاه --max-workers)، يتم فصل حالات GUI/عامل المتبناة بدلاً من قتلها.

idb_open يختار الخلفية عبر معامل mode الخاص به:

  • prefer_headless (الافتراضي): إنشاء عامل idalib (أو تبني عامل لديه الملف مفتوحاً بالفعل).
  • force_headless: نفس الشيء، لكن لا تتبنى أبداً GUI جاري حتى لو كان لديه الملف.
  • prefer_gui: تبني GUI جاري للملف؛ وإلا إنشاء عامل idalib.
  • force_gui: تبني GUI جاري للمملف؛ وإلا تشغيل عملية IDA GUI جديدة.

يجب أن يحمل كل استدعاء أداة معامل database صريح. لا يوجد "قاعدة بيانات حالية" ضمنية — يسمي المتصلون الجلسة التي يريدون العمل عليها.

root@kitploit:~
uv run idalib-mcp --stdio --max-workers 4

التدفق النموذجي:

root@kitploit:~
idb_open("/path/to/binary_a.exe", preferred_session_id="binary_a")
idb_open("/path/to/library.dll", preferred_session_id="library")

decompile("main", database="binary_a")
xrefs_to("ImportantExport", database="library")

database يجب أن يكون معرف الجلسة الذي أعادته idb_open (أو كما هو موضح في idb_list)؛ أسماء الملفات والمسارات غير مقبولة.

أدوات الإدارة

  • idb_open(input_path, mode="prefer_headless", run_auto_analysis=True, build_caches=True, init_hexrays=True, preferred_session_id=""): فتح ثنائي، تسخين الأنظمة الفرعية (ذاكرة التخزين المؤقت للنصوص، Hex-Rays)، وإرجاع معرف الجلسة الخاصة به. إذا كان عامل أو GUI لهذا المسار يعمل بالفعل على المضيف، يتم تبني تلك النسخة ويتجاهل preferred_session_id.
  • idb_list(): عرض الجلسات المفتوحة ونسخ IDA GUI الجارية. كل إدخال له adopted (صحيح إذا كان هذا المشرف يديرها، خطأ لنسخ GUI/عامل تم اكتشافها ولكن لم تُفتح بعد عبر idb_open) و backend (worker أو gui) و is_active ومعرفات العمليات.
  • idb_close(database, save=True): حفظ (اختياري)، إلغاء تسجيل الجلسة، وإنهاء العامل المملوك لها، تحرير فتحة تجاه --max-workers. يتم فصل نسخ GUI/عامل المتبناة بدلاً من قتلها.
  • idb_save(session_id, path=""): حفظ IDB لجلسة على القرص. يتم توجيهها كأداة عامل عادية (يتم حقن ) — نفس التوقيع في كلتا الخلفيتين.

تحكمات العامل:

  • --max-workers N: الحد الأقصى لعدد عمال قاعدة البيانات المتزامنين (0 = غير محدود، الافتراضي 4).
  • IDA_MCP_MAX_WORKERS: الإعداد الافتراضي للبيئة لـ --max-workers.

موارد MCP

الموارد تمثل حالة قابلة للتصفح (بيانات قابلة للقراءة فقط) وفقاً لفلسفة MCP.

حالة IDB الأساسية:

  • ida://idb/metadata - معلومات ملف IDB (المسار، البنية، القاعدة، الحجم، الهاشات)
  • ida://idb/segments - مقاطع الذاكرة مع الصلاحيات
  • ida://idb/entrypoints - نقاط الدخول (main، استدعاءات TLS، إلخ.)

حالة واجهة المستخدم:

  • ida://cursor - موقع المؤشر الحالي والوظيفة الحالية
  • ida://selection - نطاق التحديد الحالي

معلومات الأنواع:

  • ida://types - جميع الأنواع المحلية
  • ida://structs - جميع الهياكل/الاتحادات
  • ida://struct/{name} - تعريف الهيكل مع الحقول

عمليات البحث:

  • ida://import/{name} - تفاصيل الاستيراد بالاسم
  • ida://export/{name} - تفاصيل التصدير بالاسم
  • ida://xrefs/from/{addr} - المراجع المتقاطعة من عنوان

الوظائف الأساسية

  • lookup_funcs(queries): الحصول على وظيفة/وظائف حسب العنوان أو الاسم (يكتشف تلقائياً، يقبل قائمة أو سلسلة مفصولة بفواصل).
  • int_convert(inputs): تحويل الأرقام إلى تنسيقات مختلفة (عشري، سداسي عشري، بايتات، ASCII، ثنائي).
  • list_funcs(queries): سرد الوظائف (مقسم إلى صفحات، مصفى).
  • list_globals(queries): سرد المتغيرات العالمية (مقسم إلى صفحات، مصفى).
  • imports(offset, count): سرد جميع الرموز المستوردة مع أسماء الوحدات (مقسم إلى صفحات).
  • decompile(addr): تفكيك الوظيفة في العنوان المعطى.
  • disasm(addr): تجميع الوظيفة مع تفاصيل كاملة (الوسائط، إطار المكدس، إلخ).
  • xrefs_to(addrs): الحصول على جميع المراجع المتقاطعة إلى عنوان/عناوين.
  • xrefs_to_field(queries): الحصول على مراجع متقاطعة لحقل/حقول هيكل محدد.
  • callees(addrs): الحصول على الوظائف التي تستدعيها وظيفة/وظائف في عنوان/عناوين.

عمليات التعديل

  • add_bookmark(addr, name, prefix): إضافة أو استبدال علامة IDA في عنوان؛ اضبط prefix="" لعدم وجود بادئة.
  • set_comments(items): تعيين تعليقات في عنوان/عناوين في كل من عرض التجميع وعرض المفكك.
  • patch_asm(items): تصحيح تعليمات التجميع في عنوان/عناوين.
  • declare_type(decls): إعلان نوع/أنواع C في مكتبة الأنواع المحلية.
  • define_func(items): تعريف وظيفة/وظائف في عنوان/عناوين. يمكن تحديد end للحدود الصريحة.
  • define_code(items): تحويل البايتات إلى تعليمات كود في عنوان/عناوين.
  • undefine(items): إلغاء تعريف عنصر/عناصر في عنوان/عناوين، وتحويلها مرة أخرى إلى بايتات خام. يمكن تحديد end أو size.

عمليات قراءة الذاكرة

  • get_bytes(addrs): قراءة بايتات خام في عنوان/عناوين.
  • get_int(queries): قراءة قيم صحيحة باستخدام ty (i8/u64/i16le/i16be/إلخ).
  • get_string(addrs): قراءة سلسلة/سلاسل منتهية بـ null.
  • get_global_value(queries): قراءة قيم متغير/متغيرات عالمية حسب العنوان أو الاسم (يكتشف تلقائياً، قيم وقت التجميع).

عمليات إطار المكدس

  • stack_frame(addrs): الحصول على متغيرات إطار المكدس لوظيفة/وظائف.
  • declare_stack(items): إنشاء متغير/متغيرات مكدس في إزاحة/إزاحات محددة.
  • delete_stack(items): حذف متغير/متغيرات مكدس بالاسم.

عمليات الهياكل

  • read_struct(queries): قراءة قيم حقول الهيكل في عنوان/عناوين محددة.
  • search_structs(filter): البحث عن هياكل حسب نمط الاسم.

عمليات المصحح (الإضافة)

أدوات المصحح مخفية افتراضياً. قم بتفعيلها باستخدام معامل الاستعلام ?ext=dbg:

root@kitploit:~
http://127.0.0.1:13337/mcp?ext=dbg

التحكم:

  • dbg_start(): بدء عملية المصحح.
  • dbg_exit(): إنهاء عملية المصحح.
  • dbg_continue(): مواصلة التنفيذ.
  • dbg_run_to(addr): التشغيل حتى عنوان.
  • dbg_step_into(): الدخول إلى التعليمات.
  • dbg_step_over(): تجاوز التعليمات.

نقاط التوقف:

  • dbg_bps(): عرض جميع نقاط التوقف.
  • dbg_add_bp(addrs): إضافة نقطة/نقاط توقف.
  • dbg_delete_bp(addrs): حذف نقطة/نقاط توقف.
  • dbg_toggle_bp(items): تفعيل/تعطيل نقطة/نقاط توقف.

المسجلات:

  • dbg_regs(): جميع المسجلات، الخيط الحالي.
  • dbg_regs_all(): جميع المسجلات، جميع الخيوط.
  • dbg_regs_remote(tids): جميع المسجلات، خيط/خيوط محددة.
  • dbg_gpregs(): مسجلات الأغراض العامة، الخيط الحالي.
  • dbg_gpregs_remote(tids): مسجلات الأغراض العامة، خيط/خيوط محددة.
  • dbg_regs_named(names): مسجلات مسماة، الخيط الحالي.
  • dbg_regs_named_remote(tid, names): مسجلات مسماة، خيط محدد.

المكدس والذاكرة:

  • dbg_stacktrace(): مكدس الاستدعاء مع معلومات الوحدة/الرمز.
  • dbg_read(regions): قراءة الذاكرة من العملية المصححة.
  • dbg_write(regions): كتابة الذاكرة إلى العملية المصححة.

عمليات التحليل المتقدمة

  • py_eval(code): تنفيذ كود Python عشوائي في سياق IDA (يعيد قاموس مع result/stdout/stderr، يدعم التقييم على نمط Jupyter).
  • analyze_funcs(addrs): تحليل شامل للوظائف (تفكيك، تجميع، مراجع متقاطعة، مستدعيات، مستدعين، نصوص، ثوابت، كتل أساسية).

مطابقة الأنماط والبحث

  • find_regex(queries): البحث عن نصوص باستخدام تعبير منتظم غير حساس لحالة الأحرف (مقسم إلى صفحات).
  • find_bytes(patterns, limit=1000, offset=0): العثور على نمط/أنماط بايت في الثنائي (مثل "48 8B ?? ??"). الحد الأقصى: 10000.
  • find_insns(sequences, limit=1000, offset=0): العثور على تسلسل/تسلسلات تعليمات في الكود. الحد الأقصى: 10000.
  • find(type, targets, limit=1000, offset=0): بحث متقدم (قيم فورية، نصوص، مراجع بيانات/كود). الحد الأقصى: 10000.

تحليل تدفق التحكم

  • basic_blocks(addrs): الحصول على الكتل الأساسية مع الخلف واللاحق.

عمليات الأنواع

  • set_type(edits): تطبيق نوع/أنواع على وظائف، متغيرات عالمية، محلية، أو متغيرات مكدس.
  • infer_types(addrs): استنتاج الأنواع في عنوان/عناوين باستخدام Hex-Rays أو إرشادية.

عمليات التصدير

  • export_funcs(addrs, format): تصدير وظيفة/وظائف بالتنسيق المحدد (json, c_header, أو prototypes).

عمليات الرسم البياني

  • callgraph(roots, max_depth): بناء رسم بياني للاستدعاءات من وظيفة/وظائف جذرية مع عمق قابل للتكوين.

عمليات الدفعة

  • rename(batch): عملية إعادة تسمية دفعة موحدة للوظائف، المتغيرات العالمية، المحلية، ومتغيرات المكدس (يقبل قاموساً بمفاتيح اختيارية func, data, local, stack).
  • patch(patches): تصحيح تسلسلات بايت متعددة دفعة واحدة.
  • put_int(items): كتابة قيم صحيحة باستخدام ty (i8/u64/i16le/i16be/إلخ).

الميزات الرئيسية:

  • واجهة برمجية آمنة النوع: جميع الوظائف تستخدم معاملات مقيدة بقوة مع مخططات TypedDict لدعم أفضل لبيئة التطوير المتكاملة ومخرجات LLM المنظمة.
  • تصميم دفعة أولاً: معظم العمليات تقبل عناصر فردية وقوائم.
  • معالجة أخطاء متسقة: جميع عمليات الدفعة تعيد [{..., error: null|string}, ...].
  • التقسيم على أساس المؤشر: وظائف البحث تعيد cursor: {next: offset} أو {done: true} (الحد الافتراضي: 1000، الحد الأقصى المفروض: 10000 لمنع تجاوز الرمز).
  • الأداء: يتم تخزين النصوص مؤقتاً مع إبطال MD5 لتجنب استدعاءات build_strlist المتكررة في المشاريع الكبيرة.

التطوير

إضافة ميزات جديدة عملية سهلة ومبسطة للغاية. كل ما عليك فعله هو إضافة دالة @tool جديدة إلى ملفات API المعيارية في src/ida_pro_mcp/ida_mcp/api_*.py وستكون وظيفتك متاحة في خادم MCP دون أي كود إضافي! يوجد أدناه فيديو حيث أضفت الدالة get_metadata في أقل من دقيقتين (بما في ذلك الاختبار):

https://github.com/user-attachments/assets/951de823-88ea-4235-adcb-9257e316ae64

لاختبار خادم MCP نفسه:

root@kitploit:~
npx -y @modelcontextprotocol/inspector

سيفتح هذا واجهة ويب على http://localhost:5173 ويسمح لك بالتفاعل مع أدوات MCP للاختبار.

للاختبار، أقوم بإنشاء رابط رمزي لإضافة IDA ثم أرسل طلب JSON-RPC مباشرة إلى http://localhost:13337/mcp. بعد تفعيل الروابط الرمزية يمكنك تشغيل الأمر التالي:

root@kitploit:~
uv run ida-pro-mcp --install

توليد سجل التغييرات للالتزامات المباشرة إلى main:

root@kitploit:~
git log --first-parent --no-merges 1.2.0..main "--pretty=- %s"
تنزيل الأداة
database=<id>
  • الصحة لكل قاعدة بيانات: استدع server_health(database=<id>) (يتم توجيهها). idb_list() يبلغ عن is_active من استقصاء TCP/RPC الخاص بالمشرف.