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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
quokka — يصدّر شيفرة التفكيك من IDA Pro وGhidra وBinary Ninja إلى ملفات protobuf مضغوطة لتحليل ثنائي سريع ومستقل ومعالجة البرامج عبر روابط Python. | Kitploit
أدوات/GitHubGitHub/quarkslab/quokka
التحليل الثابتتحليل الكودالهندسة العكسيةالأدوات والمكوناتتحليل الملفات الثنائية
GitHubquarkslab/quokka

quokka

يصدّر شيفرة التفكيك من IDA Pro وGhidra وBinary Ninja إلى ملفات protobuf مضغوطة لتحليل ثنائي سريع ومستقل ومعالجة البرامج عبر روابط Python.

عرض المستودع
22322منذ 16 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Quokka

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


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

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

مقدمة

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

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

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

البنية

root@kitploit:~
     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 باستخدام نوع الأمر التالي:

root@kitploit:~
$ pip install quokka-project

إضافة IDA

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

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

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

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

root@kitploit:~
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 يعمل.

root@kitploit:~
$ idat -OQuokkaAuto:true -OQuokkaDecompiled:true -A /path/to/hello.i64

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

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

Ghidra

root@kitploit:~
$ 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 بدلاً من ذلك.

root@kitploit:~
$ python binaryninja_extension/export_headless.py /path/to/binary \
    -o /path/to/output.quokka --mode LIGHT

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

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

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

root@kitploit:~
$ 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 لاختيار نمط التصدير ( أو )

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

root@kitploit:~
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

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

root@kitploit:~
# 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.

root@kitploit:~
user@host:~/quokka$ cmake -B build \ # Where to build
                          -S . \ # Where are the sources
                          -DIDA_VERSION=9.2 \ # IDA SDK version
                          -DCMAKE_BUILD_TYPE:STRING=Release \ # Build Type

user@host:~/quokka$ cmake --build build -- -j

IDA < 9.2 (الطريقة القديمة)

نظرًا لأن IDA SDK لا يزال كودًا مملوكًا، يجب عليك جلبته بنفسك وتوفير مساره إلى cmake من خلال الخيار -DIdaSdk_ROOT_DIR:STRING=path/to/sdk

ملاحظة: سيعمل هذا أيضًا على الإصدارات الأحدث ولكنه يتطلب خطوات أكثر من المستخدمين حيث سيتعين عليهم تنزيل SDK بأنفسهم.

root@kitploit:~
user@host:~/quokka$ cmake -B build \ # Where to build
                          -S . \ # Where are the sources
                          -DIdaSdk_ROOT_DIR:STRING=path/to/ida_sdk \ # Path to IDA SDK 
                          -DCMAKE_BUILD_TYPE:STRING=Release \ # Build Type

user@host:~/quokka$ cmake --build build --target quokka_plugin -- -j

التثبيت

لتثبيت الإضافة:

root@kitploit:~
user@host:~/quokka$ cmake --install build

في جميع الأحوال، ستكون الإضافة أيضًا في build/quokka-install. يمكنك نسخها إلى دليل إضافات المستخدم في IDA.

root@kitploit:~
user@host:~/quokka$ cp build/quokka-install/quokka_plugin.so $HOME/.idapro/plugins/

لمزيد من المعلومات التفصيلية حول البناء، راجع البناء

التوثيق

التوثيق متاح عبر الإنترنت على التوثيق

الأسئلة الشائعة

يمكنك الاطلاع على قائمة الأسئلة هنا الأسئلة الشائعة

أنماط التصدير

ملاحظة: نمط LIGHT فقط هو المنفَّذ حاليًا. نمط FULL (المكتفي ذاتيًا) مخطط له لكنه غير فعال بعد.

توفر Quokka وضعين لتصدير تحليل التفكيك: الوضع الخفيف والوضع المكتفي ذاتيًا.

يركز الوضع الخفيف على تصدير المعلومات الأساسية فقط، مما ينتج ملفات سريعة وخفيفة. في هذا الوضع لا يتم تصدير أي معلومات على مستوى التعليمات أو أدنى، لذلك سيتم استخدام محرك capstone في وقت التشغيل للحصول على تفكيك التعليمات.

بينما يصدّر الوضع المكتفي ذاتيًا التفكيك الكامل، تمامًا كما تعرضه أداة التفكيك الخلفية. سينتج هذا ملفات أثقل لكنه لا يتطلب الاعتماد على أدوات تفكيك خارجية في وقت التشغيل.

من المهم ملاحظة أن كلا الوضعين يوفّران نفس واجهة برمجة التطبيقات في روابط بايثون.

[!WARNING] من الوضع المكتفي ذاتيًا لا يزال من الممكن الحصول على كائن تعليمات capstone، ولكن انتبه إلى أن تفكيك capstone قد يختلف عن ذلك الذي صدّرته quokka (قد تكون التعليمات مقسّمة، أو مدمجة، أو غير مدعومة، أو تحتوي على رموز تذكيرية مختلفة، وما إلى ذلك). بشكل عام، تُنتج منصات تحليل الملفات الثنائية المختلفة تفكيكًا مختلفًا، ضع ذلك في الاعتبار عند دمج capstone مع الوضع المكتفي ذاتيًا.

للحصول على نظرة عامة كاملة حول الفرق بين الوضعين، انظر إلى الجدول أدناه:

¹ متاح اختياريًا

² غير مدعوم حاليًا

تنزيل الأداة
light
full
  • --decompiled لتمكين تصدير الكود بعد فك الترجمة (IDA فقط)
  • -v, --verbose لتمكين التسجيل المفصّل
  • الوضع الخفيفالوضع المكتفي ذاتيًا
    الدوال✅✅
    الكتل الأساسية✅✅
    التعليمات❌✅
    المعاملات❌✅
    مراجع البيانات✅✅
    المراجع المتقاطعة✅✅
    الأقسام/التخطيط✅✅
    فك الترجمة✅¹✅¹
    إحداثيات رسم CFG✅¹²✅¹²