
موجه MCP IDALib متعدد الجلسات للعوامل البرمجية. تحليل ثنائيات متعددة بالتوازي مع أدوات الهندسة العكسية المتوافقة مع IDA.
نقطة نهاية MCP واحدة. جلسات IDALib معزولة متعددة.
طبقة تحكم خفيفة الوزن وموجهة للوكيل لتحليل ثنائي بدون رأس باستخدام مجموعة أدوات IDA Pro MCP.
[!IMPORTANT] Pocket Disasm هو مشروع مستقل مفتوح المصدر. لا يرتبط بـ Hex-Rays أو معتمد منه أو برعايته أو منتج رسمي له. IDA Pro و IDALib هما منتجان من Hex-Rays ويتطلبان تثبيتًا وترخيصًا منفصلين وصالحين. لا يقوم Pocket Disasm بتوزيع IDA أو IDALib أو أي برنامج من Hex-Rays.
Pocket Disasm يشغل موجه MCP عام واحد ويعطي كل ملف ثنائي عامل IDALib خاص به. يمكن لوكيلات البرمجة إنشاء وتحليل وحفظ وإغلاق جلسات التحليل دون فتح نافذة IDA تفاعلية منفصلة لكل ملف.
يستخدم المشروع إصدارًا محددًا من mrexodia/ida-pro-mcp كتطبيق أساسي لتحليل MCP وكتالوج أدواته. يبني Pocket Disasm موجهه الموحد متعدد الجلسات وعزل العمليات وتكاملات الوكيل والتشخيص ومركز التحكم الطرفي حول هذا المشروع الرئيسي.
شغّل أمرًا واحدًا في PowerShell:
irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1 | iex
ثم افتح نافذة طرفية جديدة وشغّل:
pocket
يقوم المثبّت بإنشاء بيئة Python معزولة تحت %LOCALAPPDATA%\PocketDisasm، وتثبيت التبعيات المحددة، وإضافة الأمر pocket إلى مسار المستخدم PATH، وفتح مركز التحكم الطرفي.
ida-pro-mcp المحدد.pocket.idalib.dll.نقطة النهاية الافتراضية هي:
http://127.0.0.1:13339/mcp
يمكن تغيير المنفذ من TUI. يقوم Pocket Disasm بتحديث كل ملف تكوين MCP سجّله سابقًا ويعيد تشغيل الموجه عند الحاجة.
لا تحتاج الوكيلات إلى خادم MCP مخصص لكل ملف ثنائي. فهي تنشئ وتوجّه الجلسات عبر نقطة النهاية المشتركة:
idb_open(input_path="C:\\samples\\first.exe", session_id="first", wait=true)
idb_open(input_path="C:\\samples\\second.dll", session_id="second", wait=true)
decompile(addr="main", database="first")
survey_binary(database="second")
يمكن أيضًا تحديد النطاق لعميل MCP الحالي:
idb_select(database="first")
decompile(addr="main")
يتيح ذلك لنموذج واحد إدارة عدة ملفات ثنائية أو لعدة وكلاء العمل عبر نفس الموجه دون مشاركة قاعدة بيانات محددة.
flowchart LR
A1["Coding agent A"] --> MCP["Pocket Disasm MCP<br/>127.0.0.1:13339/mcp"]
A2["Coding agent B"] --> MCP
A3["Coding agent N"] --> MCP
MCP --> S["Multi-session supervisor"]
S --> W1["IDALib worker<br/>binary A"]
S --> W2["IDALib worker<br/>binary B"]
S --> WN["IDALib worker<br/>binary N"]
كل جلسة نشطة لها عمليتها الخاصة ومنفذ داخلي ومساحة عمل تحليل معزولة وقاعدة بيانات IDA وسجل عامل. الحد الأقصى القابل للتكوين للعمال يمنع إنشاء عمليات غير محدودة؛ الافتراضي هو 8 وتقبل TUI قيمًا من 1 إلى 128.
يضيف Pocket Disasm الأدوات التالية إلى كتالوج IDA MCP العادي:
تقبل أدوات التحليل العادية مثل survey_binary وlookup_funcs وfunc_query وfind_bytes وdecompile وسيطًا اختياريًا database. إذا تم حذفه، يستخدم Pocket Disasm الجلسة المحددة بواسطة عميل MCP ذلك.
تدمج TUI إدخال MCP الخاص بـ pocket-disasm فقط في ملفات التكوين الحالية؛ ولا تستبدل الملف بأكمله.
نفس العملية متاحة من CLI:
pocket integrate codex claude cursor --scope global
pocket integrate claude cursor vscode --scope project --project-dir .
تغطي TUI التثبيت والتحكم العاديين. تظل CLI متاحة للأتمتة والتشخيص:
شغّل pocket <command> --help لجميع الخيارات.
يخزّن Pocket Disasm حالته تحت:
%LOCALAPPDATA%\PocketDisasm
الملفات الهامة تشمل:
استخدم Inspect logs في TUI أو شغّل:
pocket logs
تتحقق TUI من وجود إصدار أحدث مرة واحدة عند بدء التشغيل. عندما يتوفر تحديث، يظهر Update Pocket Disasm في قائمة الإجراءات. يحافظ المحدّث على الإعدادات، ويُحدّث البيئة المعزولة، ويعيد تشغيل TUI، ويعيد تشغيل الموجه إذا كان قيد التشغيل مسبقًا.
winget.Pocket Disasm لا يتضمن IDA أو IDALib أو ترخيص IDA. إنه مشروع مستقل وغير تابع لـ Hex-Rays أو معتمد منه.
$script = irm https://raw.githubusercontent.com/whoisqwerz/pocket_disasm/main/install.ps1
& ([scriptblock]::Create($script)) -Uninstall
لا تتم إزالة إدخالات MCP الخاصة بالوكيل تلقائيًا عن قصد، حتى لا يتم إعادة كتابة الإعدادات غير ذات الصلة أثناء إلغاء التثبيت. يمكن إزالتها من ملفات تكوين الوكيل المقابلة إذا لم تعد هناك حاجة إليها.
Pocket Disasm مُرخَّص بموجب ترخيص MIT.
| الأداة | الغرض |
|---|
idb_open | إنشاء جلسة معزولة لملف ثنائي محلي |
idb_list | عرض قائمة الجلسات والحالات والعمليات والاختيار الحالي |
idb_select | تحديد جلسة افتراضية لعميل MCP الحالي |
idb_health | قراءة صحة بدء تشغيل العامل والعملية |
idb_wait | انتظار التحليل التلقائي لـ IDA وبدء MCP |
idb_save | حفظ قاعدة بيانات IDA الحالية |
idb_logs | قراءة المخرجات الأخيرة من عامل واحد |
idb_close | إيقاف عامل وتحرير موارده |
| الوكيل | التهيئة العامة | تهيئة المشروع |
|---|
| Codex | ~/.codex/config.toml | يتم استخدام نقطة النهاية العامة |
| Claude Code | ~/.claude.json | .mcp.json |
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| VS Code | ملف تعريف المستخدم mcp.json | .vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | يتم استخدام نقطة النهاية العامة |
| الأمر | الوصف |
|---|
pocket | فتح مركز التحكم الطرفي |
pocket doctor | التحقق من صحة تبعيات Python وIDA وIDALib وMCP |
pocket start | بدء الموجه الموحد في الخلفية |
pocket stop | إيقاف الموجه وعماله |
pocket restart | إعادة تشغيل الموجه |
pocket status | عرض حالة نقطة النهاية والخدمة الخلفية |
pocket logs | طباعة المخرجات التشخيصية الحديثة |
pocket port <port> | تغيير نقطة النهاية في تكوينات الوكيل المسجلة |
pocket config --max-workers <n> | تعيين الحد الأقصى للعمال المتزامنين |
pocket integrate <agents> | تكوين وكيل برمجة واحد أو أكثر |
| الملف | المحتويات |
|---|
config.json | مسار IDA ومنافذ نقطة النهاية وحد العمال |
integrations.json | ملفات تكوين MCP التي يديرها Pocket Disasm |
events.log | أحداث دورة الحياة المنظمة وتتبّع الاستثناءات |
pocket-disasm.out.log | المخرجات القياسية للموجه |
pocket-disasm.err.log | مخرجات الأخطاء للموجه |
sessions/<session>/worker.log | المخرجات المستمرة لعامل IDALib |
installer.log | سجل التثبيت والترقية |
update.log | مخرجات المحدّث داخل TUI |