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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
quokka — كوّكا: مُصدِّر ثنائي سريع ودقيق | Kitploit
أدوات/GitHubGitHub/quarkslab/quokka
التحليل الثابتتحليل الكودالهندسة العكسيةالأدوات والمكوناتتحليل الملفات الثنائية
GitHubquarkslab/quokka

quokka

كوّكا: مُصدِّر ثنائي سريع ودقيق

عرض المستودع
2232218منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Quokka

صورة مولّدة بواسطة DALL-E


جدول المحتويات

  • مقدمة
  • التثبيت
  • الاستخدام
  • البناء
  • التوثيق
  • الأسئلة الشائعة

مقدمة

Quokka هي أداة تصدير ثنائية: من تفكيك البرنامج، تنشئ ملف تصدير يمكن استخدامه دون الحاجة إلى أداة التفكيك. وهو يدعم حاليًا IDA Pro وGhidra وBinary Ninja كواجهات خلفية للتفكيك.

الهدف الرئيسي من Quokka هو تمكين التعامل الكامل مع الملف الثنائي دون فتح أداة تفكيك بعد التصدير الأولي. علاوة على ذلك، فهو يجرّد واجهة برمجة تطبيقات أداة التفكيك لتوفير واجهة نظيفة للمستخدمين.

استلهمت Quokka بشكل كبير من BinExport، أداة تصدير الملفات الثنائية المستخدمة في BinDiff.

البنية

     IDA Pro               Ghidra               Binary Ninja
        │                      │                      │
IDA Plugin (C++)    Ghidra Plugin (Java)   BinaryNinja Plugin (Python)
        │                      │                      │
        └────────────── quokka.proto ─────────────────┘
                     (protobuf schema)
                              │
                        .quokka files
                              │
              Python bindings (quokka.Program)
              ├── Capstone backend (primary)
              └── Pypcode backend (optional)

التثبيت

إضافة بايثون

تُبنى الإضافة في نظام التكامل المستمر (CI) وتتوفر في السجل.

يجب أن يكون من الممكن تثبيتها مباشرة من PIP باستخدام نوع الأمر التالي:

$ pip install quokka-project

إضافة IDA

ملاحظة: لا تحتاج إلى إضافة IDA لقراءة ملف مولّد بواسطة Quokka. تُستخدم فقط لإنشاء هذه الملفات.

Quokka متوافقة مع IDA 9.1+.

عبر مدير إضافات IDA (IDA 9.2+)

تُنشر Quokka في مستودع إضافات Hex-Rays ويمكن تثبيتها باستخدام hcli:

user@host:~$ hcli plugin install quokka

يدويًا

تُبنى الإضافة أيضًا في نظام التكامل المستمر وتتوفر في علامة التبويب الإصدارات.

لتنزيل الإضافة، احصل على الملف المسمى quokka_plugin.so (أو أرشيف quokka-ida<version>.zip المناسب لإصدار IDA لديك) وانسخه إلى دليل plugins في IDA.

إضافة Ghidra

تدعم Quokka أيضًا التصدير من Ghidra (>= 12.0.3) عبر إضافة مخصصة. تُنتج ملفات .quokka protobuf نفسها التي يمكن لمكتبة بايثون تحميلها.

للاطلاع على تعليمات البناء والتثبيت والاستخدام، راجع README إضافة Ghidra.

إضافة BinaryNinja

تدعم Quokka أيضًا التصدير من Binary Ninja عبر إضافة بايثون. تُنتج ملفات .quokka protobuf نفسها التي يمكن لمكتبة بايثون تحميلها.

للاطلاع على تفاصيل التثبيت والاستخدام، راجع README إضافة BinaryNinja.

الاستخدام

التصدير عبر الواجهة الرسومية

الطريقة اليدوية الأولى لتصدير ملف ثنائي هي استخدام الإضافة داخل IDA Pro. الاختصار الافتراضي داخل IDA هو Alt+A. يفتح ذلك الحوار التالي:

Export Dialog

الأنماط المتاحة هي:

  • LIGHT: يصدّر بيانات مستوى الكتل فقط (يتم فك ترميز التعليمات في وقت التشغيل بواسطة Capstone من وحدات البايت الثنائية الأصلية)
  • FULL: يصدّر التعليمات والمعاملات (نمط مكتفٍ ذاتيًا، لا يتطلب الملف الثنائي الأصلي للتفكيك)

ملاحظة: نمط FULL غير منفَّذ بعد. فقط نمط LIGHT يعمل حاليًا.

التصدير بدون واجهة رسومية

IDA

ملاحظة: يتطلب ذلك تثبيت IDA يعمل.

$ idat -OQuokkaAuto:true -OQuokkaDecompiled:true -A /path/to/hello.i64

جميع الخيارات المتاحة موصوفة في الاستخدام.

ملاحظة: يُستخدم idat بدلاً من ida لزيادة سرعة التصدير نظرًا لعدم الحاجة إلى واجهة رسومية.

Ghidra

$ analyzeHeadless /tmp/proj Test \
    -import /path/to/binary \
    -scriptPath ghidra_extension/src/script/ghidra_scripts \
    -postScript QuokkaExportHeadless.java \
    --out=/path/to/output.quokka --mode=LIGHT

راجع README إضافة Ghidra لمزيد من التفاصيل.

Binary Ninja

ملاحظة: الاستخدام غير الرسومي لواجهة برمجة تطبيقات Binary Ninja يتطلب ترخيصًا تجاريًا. بدون ذلك، استخدم أمر التصدير داخل واجهة مستخدم Binary Ninja بدلاً من ذلك.

$ python binaryninja_extension/export_headless.py /path/to/binary \
    -o /path/to/output.quokka --mode LIGHT

راجع README إضافة BinaryNinja لمزيد من التفاصيل.

التصدير عبر سطر الأوامر

توفر Quokka أداة سطر أوامر لتصدير ملف واحد أو أكثر و/أو أدلة (جميع الملفات القابلة للتنفيذ في كل دليل) تلقائيًا وبالتوازي. وهي تدعم كلاً من الواجهتين الخلفيتين IDA Pro وGhidra:

$ quokka-cli --backend ghidra -t 8 dir/
$ quokka-cli --backend ida --ida-path /opt/ida -t 8 dir/
$ quokka-cli -t 8 dir/                          # auto-detect backend
$ quokka-cli -o "%p/exports/%f.quokka" binary   # custom output directory
$ quokka-cli -b ida -o %F_ida.quokka -t 4 dir/  # Using relative path
$ quokka-cli -t 8 dir1/ dir2/ binary1 binary2   # multiple inputs

افتراضيًا، يتم وضع ملف .quokka بجوار الملف الثنائي المُدخل (مثل /usr/bin/ls ينتج /usr/bin/ls.quokka). استخدم -o لتجاوز ذلك بمسار نصي أو قالب يُوسَّع لكل ملف (%f = اسم الجذر، %F = اسم الملف، %p = الدليل الأصلي، %P = المسار الكامل، %e = الامتداد، %% = علامة % حرفية).

شغّل quokka-cli --help للاطلاع على جميع الخيارات. تشمل العلامات الرئيسية:

  • -b, --backend لاختيار الواجهة الخلفية لأداة التفكيك (ida أو ghidra أو auto)
  • -i, --ida-path لتوفير المسار إلى دليل تثبيت IDA (المجلد الذي يحتوي على idat)
  • --ghidra-path لتوفير دليل تثبيت Ghidra (يتجاوز GHIDRA_INSTALL_DIR)
  • -o, --output لتحديد مسار الإخراج أو القالب (الافتراضي: %F.quokka)
  • -m, --mode لاختيار نمط التصدير (light أو full)
  • --decompiled لتمكين تصدير الكود بعد فك الترجمة (IDA فقط)
  • -v, --verbose لتمكين التسجيل المفصّل

تحميل ملف تصدير

import quokka
from quokka.types import Disassembler

# Directly from the binary (auto-detects available backend)
prog = quokka.Program.from_binary("/bin/ls")

# Explicitly choose a backend
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.GHIDRA)
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.IDA)

# From the exported file
prog = quokka.Program("ls.quokka",  # the exported file
                      "/bin/ls")    # the original binary

تحرير الأنواع وإضافتها

# Add new types from C declarations
prog.add_type("struct context { int id; char name[64]; };")
prog.add_type("enum status { OK=0, ERROR=1 };")

# Save the .quokka file
prog.write()

# Or apply changes (including new types) back to the IDA database
prog.commit(database_file="ls.i64", overwrite=True)

راجع توثيق التحرير الكامل للحصول على تفاصيل حول إعادة تسمية الدوال، وتعيين النماذج الأولية، والمزيد.

البناء

تعتمد عملية البناء على إصدار IDA SDK الذي تستخدمه. يُشار إلى هذين الوضعين أيضًا باسم الوضع الجديد والوضع القديم.

IDA >= 9.2 (الطريقة الجديدة)

أصبح Ida SDK أخيرًا مفتوح المصدر لذلك لم تعد هناك حاجة لتنزيله بشكل منفصل.

يمكنك استخدام خيار cmake -DIDA_VERSION=<major>.<minor> لمزامنته تلقائيًا من github.

تنزيل الأداة