Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
GhidraEmu — नेटिव Pcode एमुलेटर | Kitploit
उपकरण/GitHubGitHub/nalen98/ghidraemu
गतिशील कोड विश्लेषण (DAST)रिवर्स इंजीनियरिंगडीबगर्सबाइनरी विश्लेषण
GitHubnalen98/ghidraemu

GhidraEmu

नेटिव Pcode एमुलेटर

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

GhidraEmu



यह प्रायोगिक Ghidra प्लगइन आपको native pcode एमुलेशन से आसानी से निपटने में सक्षम बनाता है। अब किसी स्क्रिप्ट की आवश्यकता नहीं है, इसे सीधे Ghidra से उपयोग करें। यह विभिन्न असामान्य प्रोसेसरों के साथ काम करने के लिए विशेष रूप से उपयोगी हो सकता है जो सामान्य एमुलेटरों द्वारा समर्थित नहीं हैं।

यदि प्रोसेसर/vm reverse engineering के लिए Ghidra द्वारा समर्थित है, तो इसे emulate किया जा सकता है! उदाहरण के लिए, eBPF निर्देशों का एमुलेशन नीचे प्रदर्शित किया गया है:

GhidraEmu

यह क्या कर सकता है

संक्षेप में, प्लगइन ghidra.app.emulator पैकेज के अंदर की क्लासेस के चारों ओर एक विस्तारित रैपर है। यहाँ बताया गया है कि क्या लागू किया गया है:

  • सभी architectures के साथ काम करता है जिन्हें Ghidra समर्थन करता है, इसलिए आप असामान्य प्रोसेसर जोड़ सकते हैं और उन्हें emulate कर सकते हैं
  • CPU context, stack, और heap एमुलेशन
  • एमुलेशन का मार्ग बदलने के लिए Ghidra GUI के माध्यम से patched bytes लागू करना
  • एमुलेशन प्रक्रिया को नियंत्रित करने के लिए breakpoints
  • एमुलेशन के दौरान ByteViewer में बदले हुए bytes प्रदर्शित करना
  • कुछ libc functions को hook करना (हालाँकि यह अभी भी कमजोर है)

यह क्या नहीं कर सकता

  • बाहरी library functions के अंदर step करना (EmulatorHelper प्रतिबंध)
  • Syscall एमुलेशन
  • सभी प्लगइन windows एक सेट में

    GhidraEmu

    विशेषताएँ

    मेनू विंडो

    सभी प्लगइन windows शामिल हैं: Stack view, Registers, Breakpoints view, और Main Window.

    GhidraEmu menu

    पॉपअप विंडो

    इसमें एमुलेशन का आरंभ और अंत सेट करने, breakpoints सेट करने, और एमुलेटर state में बदले हुए bytes लागू करने के लिए hotkeys शामिल हैं।

    Registers दृश्य

    Registers को अपनी इच्छानुसार बदलें। link register (हरा तीर) सेट करने से एमुलेटर को यह समझने में मदद मिलेगी कि किस register में return address है। प्लगइन जानता है कि यह stack, lr register, AARCH64, और MIPS registers के माध्यम से कैसे काम करता है। यदि आपके पास कोई असामान्य register है, तो link register चुनें और बटन दबाएँ।

    Stack दृश्य

    जब आप अपने प्रोग्राम को CodeBrowser में खोलते हैं, GhidraEmu stack space को स्वचालित रूप से map करेगा। Stack pointer को stack range के मध्य में सेट किया जाएगा। यह आपको stack frames के ऊपर या नीचे values सेट करने की अनुमति देता है। यदि updating या resetting के दौरान रुकावट (freeze) का अनुभव हो तो इसे scroll करें। एमुलेशन प्रक्रिया के दौरान, यदि प्रोग्राम को stack के लिए अधिक स्थान की आवश्यकता होती है, तो प्लगइन इसे स्वचालित रूप से आवंटित करेगा।

    Breakpoints दृश्य

    RAM दृश्य

    यदि एमुलेशन के दौरान कोई bytes बदलते हैं, तो आप उन्हें classic ByteViewer में देखेंगे। चिंता न करें, "Reset" बटन दबाने के बाद वे अपने मूल मानों पर वापस सेट हो जाएँगे।

    Patched bytes लागू करें

    यदि आपने परिवर्तन किए हैं, तो एमुलेटर को बदले हुए bytes के बारे में बताएं (stack स्वचालित रूप से अपडेट होता है -- इसकी आवश्यकता नहीं है)। बदलने के बाद, उन्हें चुनें (वे हरे होंगे), और इस विकल्प को दबाएं (या "M" hotkey का उपयोग करें)।

    GhidraEmu apply patched bytes

    Console

    यहाँ प्लगइन आउटपुट जानकारी प्रिंट करता है। उदाहरण के लिए, एमुलेशन error messages इस प्रकार हैं:

    GhidraEmu console

    नई सुविधा - Jump Over

    "Jump Over" सुविधा आपको एक instruction आगे कूदने की अनुमति देती है यदि आप किसी कारण से वर्तमान instruction को emulate नहीं करना चाहते हैं। चूँकि uninitialized memory को पढ़ने का प्रयास पता चलने पर एमुलेशन प्रक्रिया समाप्त कर दी जाएगी, यह सुविधा आपको इसे बायपास करने की अनुमति देती है। एक उदाहरण देखें। यह कई x86_64 प्रोग्रामों के पहले निर्देशों में से एक है, canary stack saving:

    MOV RAX, qword ptr FS:[0x28]

    हम बस थोड़ा cheat करने की कोशिश करेंगे और PC value बढ़ाकर इसे jump over करेंगे। ऐसा करने के लिए, उस instruction पर रुकें जिसे आप emulate नहीं करना चाहते और J hotkey दबाएं। अन्यथा, आगे step करने पर uninitialized memory read error उत्पन्न होगा।

    Jump Over

    नई सुविधा - Step Over

    यदि आप किसी ऐसे instruction पर रुकते हैं जो subroutine (internal call) की ओर ले जाता है और आप अगले instruction तक सब कुछ emulate करना चाहते हैं (classic "step over"), तो F6 hotkey दबाएं, और यह निश्चित रूप से होगा:

    Step Over

    शुरू करने से पहले

    विचार करने योग्य कुछ महत्वपूर्ण बिंदु:

    • अपने प्रोग्राम का Ghidra में analyze करना न भूलें, एमुलेटर इस पर निर्भर करता है।
    • जैसा कि पहले बताया गया है, यदि आपके पास कोई असामान्य processor/vm है तो link register सेट करें।
    • यदि आपके binary का processor specification के अनुसार कुछ memory segments चाहता है, तो उन्हें Ghidra MemoryMap Window में बनाना और zeros से initialize करना न भूलें। अन्यथा, एमुलेटर read/write operations के दौरान unknown memory spaces के बारे में शिकायत करेगा और एमुलेशन प्रक्रिया रोक देगा। यदि memory block मौजूद है लेकिन zeros से initialized नहीं है और एमुलेटर को इसकी आवश्यकता है, तो प्लगइन उसे initialized करने का प्रयास करेगा ताकि एमुलेशन जारी रहे।
    • यदि आपने ByteViewer के माध्यम से कोई bytes बदले हैं, तो प्लगइन एमुलेशन state को reset करते समय उन्हें उनके मूल मानों पर बहाल नहीं करेगा।
    • Ghidra में प्रोजेक्ट बंद करने से पहले, आपको "Reset" बटन दबाना चाहिए और पिछले एमुलेशन की state को reset करना चाहिए यदि वह अभी तक नहीं किया गया है। यह महत्वपूर्ण है क्योंकि बंद करने के समय, Listing में traced instructions को repaint करने के transactions निष्पादित नहीं होंगे, साथ ही एमुलेशन के बाद program bytes को restore करने के transactions भी नहीं। इससे न केवल 'old yellow parrot' देखने को मिल सकता है, जो सबसे छोटी समस्या है, बल्कि modified bytes ऐसे ही बने रह सकते हैं और अपने मूल मानों पर वापस नहीं आ सकते (जब तक कि प्रोजेक्ट को Ghidra में roll back न किया जाए, बिल्कुल)।

    स्थापना

    1. Extension बनाने के लिए gradle का उपयोग करें: GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle और इसे स्थापित करने के लिए Ghidra का उपयोग करें: File → Install Extensions...

    2. CodeBrowser में, File → Configure → Miscellaneous पर जाएं और GhidraEmu plugin के लिए checkbox चुनें।

    प्रतिक्रिया

    प्लगइन का उपयोग करते समय कोई bug मिला या सुधार के लिए विचार हैं? नई issue खोलने में संकोच न करें, मैं इसे देख लूँगा।

    भविष्य का कार्य

    EmulatorHelper प्रतिबंध program space का उपयोग किसी अन्य space में करने की अनुमति नहीं देते हैं। इसलिए आपकी external shared library, उदाहरण के लिए, program memory space के बारे में कभी नहीं जान पाएगी और इसके विपरीत भी। इसलिए आप इसे एक memory space वाली एक प्रक्रिया के रूप में emulate नहीं कर सकते। यदि मैं यहाँ कुछ भूल रहा हूँ तो मुझे बताएं।

    टूल डाउनलोड करें