Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
unidbg — يتيح لك محاكاة مكتبة أندرويد أصلية، ومحاكاة iOS تجريبية. | Kitploit
أدوات/GitHubGitHub/zhkl0228/unidbg
أمان أندرويدالتحليل الديناميكي (عزل)أمان iOSالهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائيةالتعلم والتعليمالهندسة العكسية بمساعدة الذكاء الاصطناعي
GitHubzhkl0228/unidbg

unidbg

يتيح لك محاكاة مكتبة أندرويد أصلية، ومحاكاة iOS تجريبية.

عرض المستودع
5.1k1.2k35منذ 22 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

unidbg

يتيح لك محاكاة مكتبة أندرويد أصلية (native library)، بالإضافة إلى محاكاة تجريبية لنظام iOS.

هذا مشروع تعليمي لمعرفة المزيد عن تنسيق ملفات ELF/MachO ولغة تجميع ARM.

استخدمه على مسؤوليتك الخاصة!

الميزات

  • دعم MCP (Model Context Protocol) لتصحيح الأخطاء بمساعدة الذكاء الاصطناعي مع Cursor وأدوات ذكاء اصطناعي أخرى.
  • محاكاة JNI Invocation API بحيث يمكن استدعاء JNI_OnLoad.
  • دعم JavaVM و JNIEnv.
  • محاكاة تعليمات استدعاءات النظام (syscalls).
  • دعم ARM32 و ARM64.
  • خطاف داخلي (inline hook)، بفضل Dobby.
  • خطاف استيراد أندرويد، بفضل xHook.
  • خطاف iOS عبر fishhook و substrate و whale.
  • دعم الواجهة الخلفية unicorn مع مصحح أخطاء وحدة تحكم بسيط، وgdb stub، وتتبّع التعليمات، وتتبّع قراءة/كتابة الذاكرة.
  • دعم بيئة تشغيل iOS objc و swift.
  • دعم الواجهة الخلفية السريعة dynarmic.
  • دعم Apple M1 hypervisor، أسرع واجهة خلفية ARM64.
  • دعم واجهة Linux KVM الخلفية مع Raspberry Pi B4.
  • كشف تسرب الذاكرة للكود الأصلي المُحاكى مع تتبّع خلفي للضيف (guest backtrace) وتتبّع مكدس للمضيف (host stack trace).

مصحح أخطاء MCP (تكامل الذكاء الاصطناعي)

يدعم unidbg Model Context Protocol (MCP) لتصحيح الأخطاء بمساعدة الذكاء الاصطناعي. عندما يكون المصحح نشطًا، اكتب mcp في وحدة التحكم لبدء خادم MCP يمكن لأدوات الذكاء الاصطناعي (مثل Cursor) الاتصال به.

بدء سريع

يحتوي unidbg MCP على وضعي تشغيل:

الوضع 1: تصحيح نقاط التوقف — اربط المصحح وشغّل الكود الخاص بك. عند الوصول إلى نقطة توقف، يقوم Breaker.debug() بإيقاف المحاكي مؤقتًا — اكتب mcp في وحدة التحكم لبدء خادم MCP ودع الذكاء الاصطناعي يساعد في التحليل. جميع أدوات التصحيح متاحة (السجلات، الذاكرة، التفكيك، التنقل خطوة بخطوة، التتبّع، إلخ). بعد الاستئناف، إذا تم الوصول إلى نقطة توقف أخرى، يتوقف المصحح مرة أخرى. بمجرد اكتمال التنفيذ دون الوصول إلى نقطة توقف، تنتهي العملية ويتم إيقاف تشغيل MCP.

Debugger debugger = emulator.attach();
debugger.addBreakPoint(address);
// run your emulation logic — debugger pauses when breakpoint is hit

الوضع 2: أدوات مخصصة (قابلة للتكرار) — استخدم McpToolkit لتسجيل أدوات مخصصة ودع الذكاء الاصطناعي يعيد تشغيل الدوال المستهدفة بمعاملات مختلفة. يتم تحميل المكتبة الأصلية مرة واحدة فقط؛ وبعد كل تنفيذ تبقى العملية حية ويظل MCP نشطًا للتشغيل التالي.

McpToolkit toolkit = new McpToolkit();
toolkit.addTool(new McpTool() {
    @Override public String name() { return "encrypt"; }
    @Override public String description() { return "Run encryption"; }
    @Override public String[] paramNames() { return new String[]{"input"}; }
    @Override public void execute(String[] params) {
        String input = params.length > 0 ? params[0] : "default";
        // call encryption with input
    }
});
toolkit.run(emulator.attach());

عندما يتوقف المصحح، اكتب mcp (أو mcp 9239 لتحديد المنفذ) في وحدة التحكم. ثم أضِف إلى إعدادات MCP في Cursor:

{
  "mcpServers": {
    "unidbg-mcp-server": {
      "url": "http://localhost:9239/sse"
    }
  }
}

أدوات MCP المتاحة

الحالة والمعلومات

الأداةالوصف
check_connectionحالة المحاكي: العائلة، البنية، إمكانيات الواجهة الخلفية، isRunning، الوحدات المحمّلة
list_modules / get_module_infoسرد الوحدات المحمّلة والحصول على التفاصيل بما في ذلك عدد الرموز المُصدَّرة والتبعيات
list_exportsسرد الرموز المُصدَّرة/الديناميكية لوحدة مع فلتر اختياري وإزالة تشويش أسماء C++
find_symbolالعثور على رمز بالاسم أو العثور على أقرب رمز عند عنوان
get_threadsسرد جميع سلاسل العمليات/المهام في المحاكي

السجلات والتفكيك

الأداةالوصف
get_registers / get_register / set_registerقراءة/كتابة سجلات وحدة المعالجة المركزية
disassembleتفكيك التعليمات عند عنوان (تُضاف تلقائيًا تعليقات توضيحية بأسماء الرموز إلى أهداف الفروع)
assembleتجميع نص تعليمة إلى كود آلي
get_callstackالحصول على مكدس الاستدعاءات الحالي (التتبّع الخلفي)

الذاكرة

الأداةالوصف
read_memory / write_memoryقراءة/كتابة وحدات البايت الخام للذاكرة
read_string / read_std_stringقراءة سلسلة C أو سلسلة C++ std::string (مع كشف SSO)
read_pointerقراءة سلسلة مؤشرات مع حل الرموز
read_typedقراءة الذاكرة كقيم بنمط محدد (int8–int64, float, double, pointer)
search_memoryالبحث في الذاكرة عن أنماط بايت مع عوامل تصفية للنطاق/الأذونات
list_memory_mapسرد جميع تعيينات الذاكرة مع الأذونات
allocate_memory / free_memory / list_allocationsتخصيص (malloc/mmap) مع بيانات أولية اختيارية، وتحرير، وتتبّع كتل الذاكرة
patchكتابة تعليمات مُجمَّعة إلى الذاكرة

نقاط التوقف والتنفيذ

الأداةالوصف
add_breakpoint / add_breakpoint_by_symbol / add_breakpoint_by_offsetإضافة نقاط توقف حسب العنوان أو الرمز أو الوحدة+الإزاحة
remove_breakpoint / list_breakpointsإزالة أو سرد نقاط التوقف (مع التفكيك)
continue_executionاستئناف التنفيذ. استخدم poll_events لانتظار breakpoint_hit أو execution_completed
step_over / step_into / step_outتجاوز، أو الدخول إلى (N من التعليمات)، أو الخروج من الدالة
next_blockالتوقف عند الكتلة الأساسية التالية (Unicorn فقط)
step_until_mnemonicالتوقف عند التعليمة التالية المطابقة للرمز التذكيري، مثل bl، ret (Unicorn فقط)
poll_eventsالاستعلام عن breakpoint_hit و execution_completed وأحداث التتبّع

التتبّع

الأداةالوصف
trace_codeتتبّع التعليمات مع قيم قراءة/كتابة السجلات (regs_read, prev_write)
trace_read / trace_writeتتبّع قراءات/كتابات الذاكرة في نطاق عناوين

استدعاءات الدوال

الأداةالوصف
call_functionاستدعاء دالة أصلية حسب العنوان مع وسائط بنمط محدد (hex, string, bytes, null). يُرجع القيمة مع حل الرموز ومعاينة الذاكرة
call_symbolاستدعاء دالة مُصدَّرة حسب الوحدة + اسم الرمز، مثل libc.so + malloc

iOS فقط (متاح عندما تكون العائلة Family=iOS)

الأداةالوصف
inspect_objc_msgفحص استدعاء objc_msgSend: عرض اسم فئة المستقبِل والمُحدِّد، مثل -[NSString length]
get_objc_class_nameالحصول على اسم فئة ObjC لكائن في عنوان معين (تحليل ذاكرة خالص، دون تغيير الحالة)
dump_objc_classتفريغ تعريف فئة ObjC (الخصائص والطرق والبروتوكولات و ivars)
dump_gpb_protobufتفريغ مخطط رسالة GPB protobuf بصيغة .proto (64-bit فقط)

أدوات MCP المخصصة

استخدم McpToolkit لتسجيل أدوات مخصصة، حيث تنفّذ كل أداة واجهة McpTool. يستبدل هذا التوزيع اليدوي if-else بفئات أدوات نظيفة ومكتفية ذاتيًا. في هذه المرحلة تكون المكتبة الأصلية محمّلة بالكامل (تم تنفيذ JNI_OnLoad / نقطة الدخول بالفعل)، لذا فإن الكود داخل execute() لكل أداة هو منطق الدالة المستهدفة المراد تحليلها. يمكن للذكاء الاصطناعي تعيين نقاط توقف وتتبعات قبل تشغيل أداة مخصصة، ثم فحص نتائج التنفيذ عبر مدخلات مختلفة دون إعادة تشغيل العملية.

مثال أندرويد — راجع Utilities64.java للحصول على مثال JNI لأندرويد مع أدوات MCP مخصصة:

DalvikModule dm = vm.loadLibrary(new File("libtmessages.29.so"), true);
dm.callJNI_OnLoad(emulator);
cUtilities = vm.resolveClass("org/telegram/messenger/Utilities");
تنزيل الأداة