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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Krakatau — Java डीकंपाइलर, असेंबलर और डिसअसेंबलर | Kitploit
उपकरण/GitHubGitHub/storyyeller/krakatau
रिवर्स इंजीनियरिंगबाइनरी विश्लेषण
GitHubstoryyeller/krakatau

Krakatau

Java डीकंपाइलर, असेंबलर और डिसअसेंबलर

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

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

सभी देखें →

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

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

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

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

Krakatau जावा बाइटकोड के लिए एक असेंबलर और डिसअसेंबलर प्रदान करता है, जो आपको बाइनरी क्लासफाइल्स को मानव-पठनीय टेक्स्ट फॉर्मेट में बदलने, बदलाव करने और इसे वापस क्लासफाइल में बदलने की अनुमति देता है, यहां तक कि ऑबफस्केटेड कोड के लिए भी। आप मैन्युअल रूप से बाइटकोड लिखकर अपनी खुद की क्लासफाइल्स भी स्क्रैच से बना सकते हैं, और जावा बाइनरी के निम्न-स्तरीय विवरणों की जांच और तुलना कर सकते हैं। javap के विपरीत, Krakatau डिसअसेंबलर अत्यधिक ऑबफस्केटेड कोड को भी संभाल सकता है, और डिसअसेंबल किए गए आउटपुट को वापस क्लासफाइल में असेंबल किया जा सकता है।

Krakatau जावा बाइनरी को पढ़ने योग्य स्रोत कोड में बदलने के लिए एक डीकंपाइलर भी प्रदान करता है। अन्य डीकंपाइलर्स के विपरीत, Krakatau डीकंपाइलर विशेष रूप से ऑबफस्केटेड कोड के साथ काम करने के लिए डिज़ाइन किया गया था और उन ट्रिक्स को आसानी से संभाल सकता है जो अन्य डीकंपाइलर्स को तोड़ देते हैं। हालांकि, Krakatau डीकंपाइलर कुछ Java 8+ सुविधाओं जैसे लैम्ब्डा का समर्थन नहीं करता है, इसलिए यह पुराने कोड पर सबसे अच्छा काम करता है।

Krakatau की असेंबलर सिंटैक्स मुख्य रूप से Jasmin सिंटैक्स का एक सुपरसेट है जिसमें कुछ मामूली असंगतियां हैं, लेकिन Jasmin के विपरीत, Krakatau Java 19 बाइटकोड स्पेसिफिकेशन का पूर्ण समर्थन करता है और JVM के पुराने संस्करणों में पाए जाने वाले कुछ अनडॉक्यूमेंटेड फीचर्स का भी समर्थन करता है। असेंबलर सिंटैक्स के अवलोकन के लिए, ट्यूटोरियल या पूर्ण विनिर्देश देखें।

स्थापना

सबसे पहले, आपको Rust और Cargo स्थापित करने की आवश्यकता होगी। फिर इस रिपो को क्लोन करें और cargo build --release चलाएं। यह target/release/krak2 में एक बाइनरी उत्पन्न करेगा, जिसे आप सीधे कॉल कर सकते हैं, PATH में जोड़ सकते हैं, सिमलिंक कर सकते हैं, आदि।

डिसअसेंबली

डिसअसेंबलर के दो मोड हैं: डिफ़ॉल्ट और राउंडट्रिप। डिफ़ॉल्ट मोड पठनीयता और परिणामी असेंबली फ़ाइलों के संशोधन में आसानी के लिए अनुकूलित है। जब आउटपुट को पुनः असेंबल किया जाता है, तो इसके परिणामस्वरूप ऐसी क्लासफाइल्स होंगी जो JVM विनिर्देश के दृष्टिकोण से मूल के व्यवहार में समतुल्य हैं, लेकिन जरूरी नहीं कि बिट दर बिट समान हों (उदाहरण के लिए, कॉन्स्टेंट पूल एंट्री को पुनः क्रमबद्ध किया जा सकता है)। राउंडट्रिप मोड ऐसा आउटपुट उत्पन्न करता है जो मूल के बिट दर बिट समान क्लासफाइल्स में पुनः असेंबल होगा, लेकिन इसका मतलब है कि असेंबली फ़ाइलें निम्न-स्तरीय एन्कोडिंग जानकारी को संरक्षित करती हैं जो उन्हें पढ़ने में कठिन बनाती है, जैसे कि कॉन्स्टेंट पूल एंट्री का सटीक क्रम। गैर-मानक एट्रीब्यूट्स पर निर्भर कोड, जैसे CLDC कोड या Scala कोड के साथ काम करते समय राउंडट्रिप मोड का उपयोग करने की अनुशंसा की जाती है।

उपयोग उदाहरण:

root@kitploit:~
krak2 dis --out temp RecordTest.class

krak2 dis --out disassembled.zip --roundtrip r0lling-challenge.jar

आप या तो एक व्यक्तिगत क्लासफाइल या संपूर्ण jar फ़ाइल को डिसअसेंबल कर सकते हैं। यदि इनपुट फ़ाइल नाम .jar या .zip में समाप्त होता है, तो इसे jar फ़ाइल माना जाएगा और jar के अंदर प्रत्येक .class फ़ाइल को डिसअसेंबल किया जाएगा।

--out विकल्प आउटपुट स्थान को नियंत्रित करता है। यदि --out मान एक निर्देशिका है, तो आउटपुट उस निर्देशिका के अंतर्गत अलग-अलग फ़ाइलों में रखा जाएगा। अन्यथा, यदि --out मान .jar या .zip में समाप्त होता है, तो आउटपुट उस स्थान पर एक एकल zip फ़ाइल में रखा जाएगा। यदि --out मान .j में समाप्त होता है, तो आउटपुट उस फ़ाइल में लिखा जाएगा (ध्यान दें कि एक एकल .j फ़ाइल में कई क्लास हो सकते हैं - सभी क्लास को डिसअसेंबल करके एक ही फ़ाइल में एक के बाद एक लिखा जाएगा।) यदि --out विकल्प पूरी तरह से छोड़ दिया जाता है, तो डिसअसेंबल किए गए क्लास मानक आउटपुट पर लिखे जाएंगे।

जैसा कि ऊपर वर्णित है, राउंडट्रिप मोड में डिसअसेंबल करने के लिए, --roundtrip विकल्प (या संक्षेप में -r) पास करें।

असेंबली

Krakatau असेंबलर आपको मानव-अनुकूल टेक्स्ट-आधारित फॉर्मेट में जावा बाइटकोड लिखने और इसे बाइनरी जावा क्लासफाइल्स में बदलने की अनुमति देता है।

root@kitploit:~
krak2 asm --out temp Krakatau/tests/assembler/good/strictfp.j

आप या तो एक व्यक्तिगत .j फ़ाइल या संपूर्ण jar फ़ाइल को असेंबल कर सकते हैं। यदि इनपुट फ़ाइल नाम .jar या .zip में समाप्त होता है, तो इसे zip आर्काइव माना जाएगा और अंदर की प्रत्येक .j फ़ाइल को असेंबल किया जाएगा।

--out विकल्प आउटपुट स्थान को नियंत्रित करता है। यदि --out मान एक निर्देशिका है, तो आउटपुट उस निर्देशिका के अंतर्गत अलग-अलग फ़ाइलों में रखा जाएगा। अन्यथा, यदि --out मान .jar या .zip में समाप्त होता है, तो आउटपुट उस स्थान पर एक एकल zip फ़ाइल में रखा जाएगा। यदि --out मान .class में समाप्त होता है, तो एकल आउटपुट क्लासफाइल उस फ़ाइल में लिखी जाएगी (यदि इनपुट में कई क्लास हैं, तो इस स्थिति में यह त्रुटि देगा।)

डीकंपाइलेशन

v2 डीकंपाइलर अभी भी कार्य प्रगति पर है। डीकंपाइलेशन के लिए, आपको वर्तमान में Krakatau v1 का उपयोग करने की आवश्यकता है।

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