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 बाइंडिंग्स के माध्यम से तेज़, स्टैंडअलोन बाइनरी विश्लेषण और प्रोग्राम हेरफेर किया जा सके।

रिपॉजिटरी देखें
2232216 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

Quokka

यह छवि DALL-E द्वारा निर्मित है


विषय-सूची

  • परिचय
  • स्थापना
  • उपयोग
  • निर्माण
  • दस्तावेज़ीकरण
  • FAQ

परिचय

Quokka एक बाइनरी एक्सपोर्टर है: किसी प्रोग्राम के डिसअसेम्बली से, यह एक एक्सपोर्ट फ़ाइल उत्पन्न करता है जिसका उपयोग डिसअसेम्बलर के बिना किया जा सकता है। यह वर्तमान में डिसअसेम्बली बैकएंड के रूप में IDA Pro, Ghidra और Binary Ninja का समर्थन करता है।

Quokka का मुख्य उद्देश्य प्रारंभिक एक्सपोर्ट के बाद कभी भी डिसअसेम्बलर खोले बिना बाइनरी को पूरी तरह से हेर-फेर करने में सक्षम बनाना है। इसके अलावा, यह उपयोगकर्ताओं को एक स्वच्छ इंटरफ़ेस प्रदान करने के लिए डिसअसेम्बलर के API को एब्स्ट्रैक्ट करता है।

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)

स्थापना

Python प्लगइन

प्लगइन CI में बनाया जाता है और रजिस्ट्री में उपलब्ध है।

इस प्रकार के कमांड का उपयोग करके सीधे PIP से इंस्टॉल करना संभव होना चाहिए:

root@kitploit:~
$ pip install quokka-project

IDA प्लगइन

नोट: Quokka द्वारा उत्पन्न फ़ाइल को पढ़ने के लिए IDA प्लगइन की आवश्यकता नहीं है। इसका उपयोग केवल उन्हें उत्पन्न करने के लिए किया जाता है।

Quokka, IDA 9.1+ के साथ संगत है।

IDA प्लगइन मैनेजर के माध्यम से (IDA 9.2+)

Quokka को Hex-Rays प्लगइन रिपॉजिटरी में प्रकाशित किया गया है और इसे hcli के साथ इंस्टॉल किया जा सकता है:

root@kitploit:~
user@host:~$ hcli plugin install quokka

मैन्युअल रूप से

प्लगइन CI पर भी बनाया जाता है और रिलीज़ टैब में उपलब्ध है।

प्लगइन डाउनलोड करने के लिए, quokka_plugin.so नामक फ़ाइल (या अपने IDA संस्करण के लिए quokka-ida<version>.zip संग्रह) लें और इसे अपनी IDA plugins निर्देशिका में कॉपी करें।

Ghidra एक्सटेंशन

Quokka एक समर्पित एक्सटेंशन के माध्यम से Ghidra (>= 12.0.3) से एक्सपोर्ट का भी समर्थन करता है। यह वही .quokka protobuf फ़ाइलें उत्पन्न करता है जिन्हें Python लाइब्रेरी लोड कर सकती है।

निर्माण निर्देशों, स्थापना और उपयोग के विवरण के लिए Ghidra एक्सटेंशन README देखें।

BinaryNinja एक्सटेंशन

Quokka एक Python प्लगइन के माध्यम से Binary Ninja से एक्सपोर्ट का भी समर्थन करता है। यह वही .quokka protobuf फ़ाइलें उत्पन्न करता है जिन्हें Python लाइब्रेरी लोड कर सकती है।

स्थापना और उपयोग के विवरण के लिए BinaryNinja एक्सटेंशन README देखें।

उपयोग

GUI के माध्यम से एक्सपोर्ट करना

बाइनरी एक्सपोर्ट करने का पहला मैन्युअल तरीका IDA Pro के अंदर प्लगइन का उपयोग करना है। IDA के अंदर डिफ़ॉल्ट शॉर्टकट Alt+A है। यह निम्नलिखित डायलॉग खोलता है:

एक्सपोर्ट डायलॉग

उपलब्ध मोड हैं:

  • 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

अधिक विवरण के लिए Ghidra एक्सटेंशन README देखें।

Binary Ninja

नोट: Binary Ninja API के हेडलेस उपयोग के लिए व्यावसायिक लाइसेंस की आवश्यकता होती है। यदि लाइसेंस नहीं है, तो इसके बजाय Binary Ninja UI के अंदर एक्सपोर्ट कमांड का उपयोग करें।

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

अधिक विवरण के लिए BinaryNinja एक्सटेंशन README देखें।

CLI में एक्सपोर्ट करना

Quokka एक CLI उपयोगिता टूल प्रदान करता है जो एक या अधिक फ़ाइलों और/या निर्देशिकाओं (प्रत्येक निर्देशिका में सभी निष्पादन योग्य फ़ाइलें) को समानांतर में स्वचालित रूप से एक्सपोर्ट करता है। यह 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 को अंततः ओपन सोर्स कर दिया गया है, इसलिए इसे अलग से डाउनलोड करने की कोई आवश्यकता नहीं है।

आप इसे github से स्वचालित रूप से सिंक करने के लिए cmake विकल्प -DIDA_VERSION=<major>.<minor> का उपयोग कर सकते हैं।

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 अभी भी प्रोप्राइटरी कोड है, आपको इसे स्वयं प्राप्त करना होगा और विकल्प -DIdaSdk_ROOT_DIR:STRING=path/to/sdk के माध्यम से इसका पथ cmake को प्रदान करना होगा।

नोट: यह नए संस्करणों पर भी काम करेगा, लेकिन इसके लिए उपयोगकर्ताओं को अधिक चरणों की आवश्यकता होगी क्योंकि उन्हें 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/

निर्माण के बारे में अधिक विस्तृत जानकारी के लिए, निर्माण देखें।

दस्तावेज़ीकरण

दस्तावेज़ीकरण ऑनलाइन दस्तावेज़ीकरण पर उपलब्ध है।

FAQ

आप प्रश्नों की सूची यहाँ देख सकते हैं FAQ

एक्सपोर्ट मोड

नोट: वर्तमान में केवल LIGHT मोड लागू किया गया है। FULL (स्व-निहित) मोड की योजना बनाई गई है लेकिन यह अभी तक कार्यात्मक नहीं है।

Quokka डिसअसेम्बली विश्लेषण को एक्सपोर्ट करने के लिए दो मोड प्रदान करता है: light mode और self contained mode।

light mode केवल आवश्यक जानकारी एक्सपोर्ट करने पर केंद्रित है, जिससे तेज़ और हल्की फ़ाइलें बनती हैं। इस मोड में निर्देश स्तर या उससे नीचे की कोई जानकारी एक्सपोर्ट नहीं की जाती है, इसलिए निर्देशों का डिसअसेम्बली प्राप्त करने के लिए रनटाइम पर capstone इंजन का उपयोग किया जाएगा।

इसके विपरीत, self contained mode पूर्ण डिसअसेम्बली को बिल्कुल वैसे ही एक्सपोर्ट करता है जैसे बैकएंड डिसअसेम्बलर इसे दिखाता है। इससे भारी फ़ाइलें बनेंगी, लेकिन रनटाइम पर तृतीय-पक्ष डिसअसेम्बलर पर निर्भर रहने की आवश्यकता नहीं होती है।

यह ध्यान रखना महत्वपूर्ण है कि दोनों मोड python बाइंडिंग में समान API प्रदान करते हैं।

[!WARNING] self contained mode से capstone निर्देश ऑब्जेक्ट प्राप्त करना अभी भी संभव है, लेकिन सावधान रहें कि capstone डिसअसेम्बली quokka द्वारा एक्सपोर्ट की गई डिसअसेम्बली से भिन्न हो सकती है (निर्देश विभाजित, विलय, असमर्थित हो सकते हैं, या अलग mnemonics हो सकते हैं, आदि)। सामान्य तौर पर विभिन्न बाइनरी विश्लेषण प्लेटफ़ॉर्म अलग-अलग डिसअसेम्बली उत्पन्न करते हैं, capstone को self contained mode के साथ मिलाते समय इसे ध्यान में रखें।

दोनों मोडों के बीच अंतर का संपूर्ण अवलोकन नीचे दी गई तालिका में देखें:

¹ वैकल्पिक रूप से सक्षम

² वर्तमान में समर्थित नहीं

टूल डाउनलोड करें
light
full
  • --decompiled डीकंपाइल्ड कोड एक्सपोर्ट सक्षम करने के लिए (केवल IDA)
  • -v, --verbose वर्बोज़ लॉगिंग सक्षम करने के लिए
  • Light ModeSelf contained Mode
    फ़ंक्शन✅✅
    बेसिक ब्लॉक✅✅
    निर्देश❌✅
    ऑपरेंड❌✅
    डेटा संदर्भ✅✅
    क्रॉस संदर्भ✅✅
    सेक्शन/लेआउट✅✅
    डीकंपाइलेशन✅¹✅¹
    CFG आरेखण निर्देशांक✅¹²✅¹²