Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
jsc_deobfuscator — स्टैटिक डीऑबफस्केशन टूलकिट, संकलित V8 जावास्क्रिप्ट बाइटकोड के लिए, जो JSCeal पेलोड पर केंद्रित है। पैटर्न-आधारित फ़िल्टर, कंट्रोल-फ्लो अनफ्लैटनिंग, स्ट्रिंग पुनर्निर्माण, और विश्लेषण के लिए वैकल्पिक LLM-सहायता प्राप्त फ़ंक्शन नामकरण प्रदान करता है। | Kitploit
उपकरण/GitHubGitHub/hasherezade/jsc_deobfuscator
स्थैतिक विश्लेषणरिवर्स इंजीनियरिंगमालवेयर विश्लेषणबाइनरी विश्लेषणलर्निंग और शिक्षा
GitHubhasherezade/jsc_deobfuscator

jsc_deobfuscator

स्टैटिक डीऑबफस्केशन टूलकिट, संकलित V8 जावास्क्रिप्ट बाइटकोड के लिए, जो JSCeal पेलोड पर केंद्रित है। पैटर्न-आधारित फ़िल्टर, कंट्रोल-फ्लो अनफ्लैटनिंग, स्ट्रिंग पुनर्निर्माण, और विश्लेषण के लिए वैकल्पिक LLM-सहायता प्राप्त फ़ंक्शन नामकरण प्रदान करता है।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
रिपॉजिटरी देखेंवेबसाइट
62512120 दिन पहलेKitploit द्वारा समीक्षित
साझा करें

JSC Deobfuscator

यह टूल javascript-obfuscator से सुरक्षित संकलित V8 JavaScript बाइटकोड को स्थैतिक रूप से डीऑबफस्केट करने के लिए समर्पित है।

यह मूल JavaScript स्रोत के बजाय View8 द्वारा उत्पादित स्यूडोकोड पर कार्य करता है। यह प्रोजेक्ट JSCeal पेलोड पर विकसित और परीक्षण किया गया था।

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

📖 विकी पढ़ें

सुरक्षा नोट

  • View8 क्रमबद्ध फ़ाइलें Python pickle का उपयोग करती हैं। दुर्भावनापूर्ण या अविश्वसनीय .pkl फ़ाइल लोड करने से कोड निष्पादित हो सकता है। केवल उन क्रमबद्ध फ़ाइलों को लोड करें जिन्हें आपने स्थानीय रूप से View8 के साथ उत्पन्न किया है।
  • LLM-जनित फ़ंक्शन नाम परिकल्पनाएँ हैं। प्रत्येक महत्वपूर्ण नाम को फ़ंक्शन बॉडी, स्ट्रिंग्स, API, पथ और डेटा प्रवाह के विरुद्ध सत्यापित करें।

आवश्यकताएँ

  • Python 3.10 या नया;
  • requirements.txt से Python निर्भरताएँ;
  • पेलोड द्वारा उपयोग किए गए सटीक V8 संस्करण के साथ संगत एक V8 डिसअसेंबलर;
  • Linux बैच अनपैकिंग वर्कफ़्लो के लिए brotli कमांड-लाइन उपयोगिता;
  • केवल तब Node.js जब शामिल Brotli डीकंप्रेसन फ़ॉलबैक का उपयोग कर रहे हों;
  • नए LLM-सहायता प्राप्त नाम उत्पन्न करते समय एक API कुंजी या एक सुलभ स्थानीय मॉडल सर्वर। मौजूदा रीनाम CSV लागू करने के लिए LLM बैकएंड की आवश्यकता नहीं है।

एक पृथक Python वातावरण बनाएँ:

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

deobf_ai.py में OpenAI बैकएंड को अतिरिक्त रूप से OpenAI Python पैकेज की आवश्यकता होती है:

python3 -m pip install openai

Anthropic बैकएंड requests के माध्यम से HTTP API का उपयोग करता है। Ollama बैकएंड एक सुलभ Ollama सर्वर की अपेक्षा करता है।

JSCeal डीऑबफस्केट करना

1. पेलोड को डीकंप्रेस करें

मूल JSCeal app.jsc पेलोड Brotli-संपीड़ित है। Linux पर, इसे brotli उपयोगिता के साथ डीकंप्रेस किया जा सकता है:

brotli -d app.jsc -o app.decompressed.jsc

scripts/ के अंतर्गत बैच वर्कफ़्लो इस चरण को scripts/unpack_all.sh के साथ करता है।

Windows पर, या जब brotli कमांड-लाइन उपयोगिता अनुपलब्ध हो, तो शामिल Node.js सहायक का उपयोग फ़ॉलबैक के रूप में किया जा सकता है। यह केवल इनपुट को डीकंप्रेस करता है और इसे निष्पादित नहीं करता है:

node Utils/decompress-jsc.js app.jsc

यह लिखता है:

app.jsc.decompressed.jsc

2. V8 कोड कैश को डिसअसेंबल करें

V8 कोड कैश संस्करण-विशिष्ट है। पेलोड के समान V8 संस्करण के लिए निर्मित डिसअसेंबलर का उपयोग करें।

विकास के दौरान उपयोग किए गए JSCeal नमूने V8 10.2.154.26 पर आधारित थे। असंबंधित V8 बिल्ड के डिफ़ॉल्ट डिसअसेंबलर सही ढंग से काम नहीं करेंगे।

स्रोत ट्री में डिसअसेंबलर स्रोत और आवश्यक V8 पैच शामिल हैं:

Utils/disasm/v8dasm.cpp
Utils/disasm/patches/

एक पूर्व-निर्मित Linux बाइनरी प्रोजेक्ट रिलीज़ के साथ वितरित की जाती है, जबकि स्रोत ट्री में इसे पुनर्निर्माण करने के लिए आवश्यक स्रोत और पैच शामिल हैं। विस्तृत विवरण प्रोजेक्ट विकी पर उपलब्ध है। मिलान वाले v8dasm को प्राप्त करने या बनाने के बाद, चलाएँ:

/path/to/v8dasm app.decompressed.jsc > app.jsc.disasm.txt

3. View8 के साथ डिसअसेंबली को डीकंपाइल करें

डिसअसेंबल की गई फ़ाइल को view8.py में फ़ीड करें और आगे की प्रक्रिया के लिए क्रमबद्ध आउटपुट और मानव-पठनीय स्यूडोकोड दोनों उत्पन्न करें:

mkdir -p decompiled

python3 View8/view8.py \
  --input_format disassembled \
  --inp app.jsc.disasm.txt \
  --normalize \
  --out decompiled/app.dec.txt \
  --export_format decompiled serialized

यह उत्पन्न करता है:

decompiled/app.dec.txt
decompiled/app.dec.pkl

--normalize विकल्प उत्पन्न फ़ंक्शन पहचानकर्ताओं को बार-बार डिसअसेंबली और डीकंपाइलेशन रनों में पुनरुत्पादनीय बनाता है।

4. सभी डीऑबफस्केशन पास लागू करें

व्यक्तिगत ऑबफस्केशन परतों के लिए अलग-अलग फ़िल्टर हैं। उन्हें deobf_all.py के साथ क्रमबद्ध View8 आउटपुट पर एक साथ लागू किया जा सकता है:

mkdir -p deobfuscated

python3 deobf_all.py \
  --inp decompiled/app.dec.pkl \
  --out deobfuscated/app.deobf.txt \
  --export_format decompiled serialized

डिफ़ॉल्ट स्ट्रिंग फ़िल्टर वैरिएंट 2 है, जिसका उपयोग विश्लेषण किए गए अधिकांश JSCeal पेलोड द्वारा किया जाता है। सरल स्ट्रिंग योजना को स्पष्ट रूप से चुनने के लिए, जोड़ें:

--str_deobf 1

विशिष्ट आउटपुट हैं:

deobfuscated/app.deobf.txt
deobfuscated/app.deobf.pkl
deobfuscated/app.deobf.txt.strings.txt
decompiled/app.dec.resolved_funcs.csv

रिज़ॉल्व्ड-फ़ंक्शन CSV एक नमूना-विशिष्ट कैश है। जब यह अनुपस्थित होता है, तो स्ट्रिंग पास आवश्यक डिकोडर कॉन्फ़िगरेशन को पुनर्प्राप्त करता है, CSV लिखता है, और उसी रन में स्ट्रिंग्स को डीऑबफस्केट करना जारी रखता है। बाद के रन कैश का पुन: उपयोग करते हैं और आमतौर पर तेज़ होते हैं।

किसी भिन्न डीकंपाइल किए गए पेलोड के साथ रिज़ॉल्व्ड-फ़ंक्शन CSV का पुन: उपयोग न करें।

5. LLM के साथ फ़ंक्शनों का नाम बदलें

सभी संरचनात्मक डीऑबफस्केशन फ़िल्टर लागू होने के बाद, deobf_ai.py फ़ंक्शन व्यवहार का वर्णन करने वाले नाम प्रस्तावित कर सकता है। यह Anthropic, OpenAI और Ollama बैकएंड का समर्थन करता है।

मॉडल को स्पष्ट रूप से पास करें ताकि रन पुनरुत्पादनीय रहें।

Anthropic

export ANTHROPIC_API_KEY='...'

python3 deobf_ai.py \
  --inp deobfuscated/app.deobf.pkl \
  --out deobfuscated/app.renamed.txt \
  --llm_backend anthropic \
  --model '<model-id>' \
  --export_format decompiled serialized

OpenAI

export OPENAI_API_KEY='...'

python3 deobf_ai.py \
  --inp deobfuscated/app.deobf.pkl \
  --out deobfuscated/app.renamed.txt \
  --llm_backend openai \
  --model '<model-id>' \
  --export_format decompiled serialized

Ollama

python3 deobf_ai.py \
  --inp deobfuscated/app.deobf.pkl \
  --out deobfuscated/app.renamed.txt \
  --llm_backend ollama \
  --model '<local-model>' \
  --ollama_url http://localhost:11434 \
  --export_format decompiled serialized

डिफ़ॉल्ट मोड में, रीनामर प्रवेश फ़ंक्शन से शुरू होकर एक प्रत्यक्ष-कॉल ट्री बनाता है और केवल कॉल के माध्यम से पहुंचे गए फ़ंक्शनों का नाम बदलता है। कॉलबैक और असाइन किए गए हैंडलर सहित सभी दृश्यमान फ़ंक्शन संदर्भों को शामिल करने के लिए --greedy जोड़ें।

रीनाम CSV से फिर से शुरू करें

उत्पन्न दो-स्तंभ CSV एक कैश के रूप में कार्य करता है और एक बाधित रन को जारी रखने की अनुमति देता है। --csv के साथ एक मौजूदा कैश स्पष्ट रूप से चुनें:

python3 deobf_ai.py \
  --inp deobfuscated/app.deobf.pkl \
  --out deobfuscated/app.renamed.txt \
  --csv deobfuscated/app.deobf.renamed_funcs.greedy.example-model.csv \
  --llm_backend anthropic \
  --model '<model-id>' \
  --greedy \
  --export_format decompiled serialized

सामान्य मोड में, CSV को संभावित आंशिक कैश के रूप में माना जाता है। कैश किए गए नाम पहले लागू किए जाते हैं, कैश द्वारा पहले से कवर किए गए फ़ंक्शन चयनित कॉल या संदर्भ ट्री से हटा दिए जाते हैं, और LLM को केवल उन फ़ंक्शनों के लिए बुलाया जाता है जो अनसुलझे रहते हैं। यदि CSV उस ट्री को पूरी तरह से कवर करता है, तो कोई API कुंजी या LLM कनेक्शन आवश्यक नहीं है। यदि यह केवल ट्री के एक हिस्से को कवर करता है, तो चयनित बैकएंड प्रारंभ किया जाता है और नए उत्पन्न मैपिंग उसी CSV में जोड़ दिए जाते हैं।

उसी ट्री मोड का उपयोग करें जो CSV बनाते समय उपयोग किया गया था। एक --greedy रन से उत्पन्न CSV को सामान्य रूप से फिर से --greedy की आवश्यकता होती है यदि लक्ष्य उस रन को जारी रखना है न कि केवल प्रत्यक्ष-कॉल सबसेट का पुन: उपयोग करना।

LLM के बिना मौजूदा CSV लागू करें

--apply-csv-only का उपयोग करें जब CSV में पहले से वे लेबल हों जिन्हें आप लागू करना चाहते हैं, जिसमें समीक्षित, संपादित, आयातित या रीबेस्ड मैपिंग शामिल हैं:

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