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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
View8 — V8 बाइटकोड (JSC फाइलें) को उच्च-स्तरीय पठनीय JavaScript-जैसे कोड में डीकंपाइल करता है, जिसमें कई V8 संस्करणों के लिए समर्थन, ट्री आउटपुट, और मैलवेयर विश्लेषण के लिए निर्धारित फ़ंक्शन नामकरण शामिल है। | Kitploit
उपकरण/GitHubGitHub/suleram/view8
स्थैतिक विश्लेषणभेद्यता विश्लेषणरिवर्स इंजीनियरिंगमालवेयर विश्लेषणबाइनरी विश्लेषण
GitHubsuleram/view8

View8

V8 बाइटकोड (JSC फाइलें) को उच्च-स्तरीय पठनीय JavaScript-जैसे कोड में डीकंपाइल करता है, जिसमें कई V8 संस्करणों के लिए समर्थन, ट्री आउटपुट, और मैलवेयर विश्लेषण के लिए निर्धारित फ़ंक्शन नामकरण शामिल है।

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

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

सभी देखें →

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

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

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

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

View8

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

आवश्यकताएँ

  • Python 3.x
  • डिसअसेंबलर बाइनरी। उपलब्ध संस्करण:
    • V8 संस्करण 9.4.146.24 (Node V16.x में उपयोग किया गया)
    • V8 संस्करण 10.2.154.26 (Node V18.x में उपयोग किया गया)
    • V8 संस्करण 11.3.244.8 (Node V20.x में उपयोग किया गया)

संकलित संस्करणों के लिए, रिलीज़ पृष्ठ पर जाएँ।

उपयोग

कमांड-लाइन तर्क

  • --inp, : इनपुट फ़ाइल का नाम।
-i
  • --out, -o: आउटपुट का पथ। चयनित विकल्पों के आधार पर, आउटपुट एक एकल फ़ाइल या एक निर्देशिका वृक्ष हो सकता है।
  • --input_format, -f: इनपुट प्रारूप निर्दिष्ट करें। विकल्प हैं:
    • raw: इनपुट एक कच्ची JSC फ़ाइल है।
    • disassembled: इनपुट फ़ाइल पहले से ही डिसअसेंबल की गई है।
    • serialized: इनपुट पहले से ही डीकंपाइल किया गया है और क्रमबद्ध प्रारूप में संग्रहीत है। वर्तमान क्रमबद्ध प्रारूप Python pickle है; केवल विश्वसनीय इनपुट का उपयोग करें।
  • --export_format, -e: निर्यात प्रारूप(ों) निर्दिष्ट करें। विकल्प v8_opcode, translated, decompiled, और serialized हैं। कई विकल्पों को जोड़ा जा सकता है। डिफ़ॉल्ट: decompiled।
  • --path, -p: डिसअसेंबलर बाइनरी का पथ। यदि इनपुट कच्चे प्रारूप में है और View8 स्वचालित रूप से मेल खाने वाले डिसअसेंबलर का पता नहीं लगा सकता है तो आवश्यक है।
  • --scope: स्कोप तर्कों का प्रचार करें। डिफ़ॉल्ट: 1।
  • --normalize: पते से प्राप्त फ़ंक्शन पहचानकर्ताओं को पार्स क्रम के आधार पर नियतात्मक नामों से बदलें।
  • --normalize-map [CSV]: --normalize का उपयोग करते समय, प्रत्येक मूल फ़ंक्शन नाम को उसके सामान्यीकृत नाम से मैप करने वाली एक CSV लिखें। जब पथ छोड़ा जाता है, तो View8 --out से <output>.name_map.csv प्राप्त करता है, या जब कोई आउटपुट पथ सेट नहीं होता है तो --inp से।
  • --tree, -t: सभी फ़ंक्शनों को एक फ़ाइल में संग्रहीत करने के बजाय आउटपुट को एक वृक्ष संरचना में विभाजित करें। उस फ़ंक्शन को निर्दिष्ट करें जिसे वृक्ष मूल के रूप में उपयोग किया जाएगा। डिफ़ॉल्ट मुख्य फ़ंक्शन से शुरू करने के लिए, start का उपयोग करें।
  • --split_mode: वृक्ष विभाजन मोड। विकल्प declarers, calls, और references हैं। डिफ़ॉल्ट: declarers।
  • --inline_depth, -d: calls और references मोड में, चयनित वृक्ष मूल से गहराई N तक पहुंच योग्य फ़ंक्शनों को मुख्य वृक्ष फ़ाइल में शामिल करें। गहराई 0 का अर्थ केवल चयनित मूल है; गहराई 1 में प्रत्यक्ष कैली/संदर्भ शामिल हैं; गहराई 2 में उनके बच्चे शामिल हैं। declarers के साथ उपयोग नहीं किया जाता।
  • --inline_branch_limit, -l: वृक्ष मोड में, जब बाल शाखाएँ --inline_depth द्वारा शामिल की जाती हैं, तो अधिकतम N फ़ंक्शनों वाली पूर्ण बाल शाखाओं को मुख्य वृक्ष फ़ाइल में इनलाइन करें। बड़ी शाखाएँ अलग से सहेजी जाती हैं।
  • --split_depth: calls और references मोड में, निर्यातित उपयोग शाखाओं को कितनी गहराई तक ट्रैवर्स किया जाता है, इसे सीमित करें। डिफ़ॉल्ट: 4।
  • --include, -n: आउटपुट में शामिल करने के लिए फ़ंक्शनों वाली फ़ाइल।
  • --exclude, -x: आउटपुट से बाहर करने के लिए फ़ंक्शनों वाली फ़ाइल।
  • --func: चयनित फ़ंक्शन प्रदर्शित करें।
  • --show_all: फ़ंक्शन प्रदर्शन मोड में, छिपे हुए के रूप में चिह्नित पंक्तियों को भी दिखाएँ।
  • --verbosity, -v: वर्बोसिटी स्तर। स्वीकृत सीमा: 0 से 3।
  • मूल उपयोग

    V8 बाइटकोड फ़ाइल को डीकंपाइल करने और डीकंपाइल किए गए कोड को निर्यात करने के लिए:

    root@kitploit:~
    python view8.py -i input_file -o output_file

    डिसअसेंबलर पथ

    डिफ़ॉल्ट रूप से, View8 VersionDetector.exe का उपयोग करके इनपुट फ़ाइल के V8 बाइटकोड संस्करण का पता लगाता है और स्वचालित रूप से Bin फ़ोल्डर में एक संगत डिसअसेंबलर बाइनरी खोजता है। इसे --path या -p विकल्प के साथ एक अलग डिसअसेंबलर बाइनरी निर्दिष्ट करके बदला जा सकता है:

    root@kitploit:~
    python view8.py -i input_file -o output_file --path /path/to/disassembler

    डिसअसेंबल की गई फ़ाइलों का प्रसंस्करण

    डिसअसेंबलिंग प्रक्रिया को छोड़ने और पहले से डिसअसेंबल की गई फ़ाइल को इनपुट के रूप में प्रदान करने के लिए, --input_format disassembled या -f disassembled विकल्प का उपयोग करें:

    root@kitploit:~
    python view8.py -i input_file -o output_file -f disassembled

    नियतात्मक फ़ंक्शन नाम और मैपिंग CSV

    पते से प्राप्त फ़ंक्शन नामों को नियतात्मक पहचानकर्ताओं से बदलने के लिए --normalize का उपयोग करें। मूल और सामान्यीकृत नामों के बीच संबंध को संरक्षित करने के लिए, --normalize-map जोड़ें:

    root@kitploit:~
    python view8.py \
      --input_format disassembled \
      --inp sample.jsc.disasm.txt \
      --normalize \
      --normalize-map \
      --out decompiled/sample.dec.txt \
      --export_format decompiled serialized

    यह निम्नलिखित कॉलमों के साथ decompiled/sample.dec.name_map.csv लिखता है:

    root@kitploit:~
    original_name,normalized_name
    func_start_0x268514e9dcd9,func_start_0x100000000
    func_rne_0x268514eb0779,func_rne_0x100000001

    एक स्पष्ट CSV पथ भी प्रदान किया जा सकता है:

    root@kitploit:~
    python view8.py \
      --input_format disassembled \
      --inp sample.jsc.disasm.txt \
      --normalize \
      --normalize-map mappings/sample.names.csv \
      --out decompiled/sample.dec.txt

    क्रमबद्ध फ़ाइलें बनाना और प्रसंस्करण करना

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

    root@kitploit:~
    python view8.py -i input_file -o output_file -e serialized

    सुरक्षा चेतावनी: वर्तमान क्रमबद्ध प्रारूप एक Python pickle फ़ाइल (.pkl) है। अविश्वसनीय स्रोतों से डेटा अनपिकल करना मनमाना कोड निष्पादित कर सकता है। केवल उन क्रमबद्ध फ़ाइलों को लोड करें जिन्हें आपने स्वयं उत्पन्न किया है।

    क्रमबद्ध आउटपुट को वापस लोड करने और इसे किसी अन्य प्रारूप में निर्यात करने के लिए, --input_format serialized या -f serialized का उपयोग करें:

    root@kitploit:~
    python view8.py -i input_file -o output_file -f serialized

    निर्यात प्रारूप

    --export_format या -e विकल्प का उपयोग करके निर्यात प्रारूप(ों) को निर्दिष्ट करें। आप कई प्रारूपों को जोड़ सकते हैं:

    • v8_opcode
    • translated
    • decompiled
    • serialized

    उदाहरण के लिए, V8 ऑपकोड और डीकंपाइल किए गए कोड दोनों को साथ-साथ निर्यात करने के लिए:

    root@kitploit:~
    python view8.py -i input_file -o output_file -e v8_opcode decompiled

    डिफ़ॉल्ट रूप से, उपयोग किया जाने वाला प्रारूप decompiled है।

    वृक्ष आउटपुट

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

    वृक्ष मूल का चयन करने के लिए --tree का उपयोग करें:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_out/ \
      --tree start

    विशेष मान start का अर्थ View8 द्वारा पुनर्प्राप्त डिफ़ॉल्ट मुख्य फ़ंक्शन है।

    वृक्ष विभाजन मोड

    वृक्ष को तीन मोडों में से एक का उपयोग करके विभाजित किया जा सकता है:

    • declarers: शाब्दिक घोषणा संबंधों का अनुसरण करता है, जिसका अर्थ है कि कौन से फ़ंक्शन किसी अन्य फ़ंक्शन के अंदर या उसके अंतर्गत घोषित किए गए हैं। यह बंडल या मॉड्यूल-जैसी संरचना को समझने के लिए उपयोगी है, लेकिन यह निष्पादन प्रवाह का प्रतिनिधित्व नहीं करता है।
    • calls: प्रत्यक्ष फ़ंक्शन कॉलों का अनुसरण करता है, जैसे func_x(...)। यह चयनित मूल से निष्पादन कंकाल को पुनर्प्राप्त करने के लिए उपयोगी है।
    • references: सभी दृश्यमान फ़ंक्शन संदर्भों का अनुसरण करता है, न केवल प्रत्यक्ष कॉलों का। इसमें कॉलबैक, निर्यातित हैंडलर, रूट हैंडलर, ऑब्जेक्ट गुण और अन्य असाइन किए गए फ़ंक्शन शामिल हैं। यह मोड क्षमता सतहों की खोज के लिए उपयोगी है, लेकिन यह calls की तुलना में बहुत बड़े वृक्ष उत्पन्न कर सकता है।

    उदाहरण:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls

    मुख्य फ़ाइल इनलाइनिंग

    मुख्य वृक्ष फ़ाइल में हमेशा चयनित मूल फ़ंक्शन होता है।

    calls और references मोड में, --inline_depth नियंत्रित करता है कि मुख्य फ़ाइल में कितने ग्राफ़ स्तर शामिल हैं:

    root@kitploit:~
    --inline_depth 0  -> केवल मूल
    --inline_depth 1  -> मूल + प्रत्यक्ष कैली/संदर्भ
    --inline_depth 2  -> मूल + प्रत्यक्ष कैली/संदर्भ + उनके बच्चे

    उदाहरण के लिए, निम्नलिखित कमांड मूल और उसके प्रत्यक्ष कैली युक्त एक संक्षिप्त निष्पादन अवलोकन बनाता है:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls \
      --inline_depth 1

    एक अतिरिक्त कॉल परत शामिल करने के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls \
      --inline_depth 2

    --inline_depth केवल calls और references मोड के साथ समर्थित है। यह declarers के साथ उपयोग नहीं किया जाता है।

    शाखा विभाजन

    बड़ी बाल शाखाओं को अलग फ़ाइलों में सहेजा जाता है। calls और references मोड में, --split_depth नियंत्रित करता है कि निर्यातित उपयोग शाखाओं को कितनी गहराई तक ट्रैवर्स किया जाता है:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls \
      --inline_depth 1 \
      --split_depth 5

    --inline_branch_limit विकल्प नियंत्रित करता है कि छोटी पूर्ण बाल शाखाएँ भी मुख्य फ़ाइल में शामिल की जाती हैं या नहीं:

    root@kitploit:~
    --inline_branch_limit 3

    इसका अर्थ है कि अधिकतम 3 फ़ंक्शनों वाली पूर्ण बाल शाखाएँ मुख्य फ़ाइल में इनलाइन की जा सकती हैं। बड़ी शाखाएँ अलग से सहेजी जाती हैं।

    calls और references मोड में, बाल शाखाएँ केवल तभी इनलाइन की जाती हैं जब चयनित --inline_depth पहले से ही बाल फ़ंक्शनों को शामिल करता है। उदाहरण के लिए, --inline_depth 0 का अर्थ केवल मूल है, इसलिए बाल शाखाएँ इनलाइन नहीं की जाती हैं भले ही वे छोटी हों।

    अनुशंसित वृक्ष कार्यप्रवाह

    संक्षिप्त निष्पादन अवलोकन के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls \
      --inline_depth 1 \
      --split_depth 5

    व्यापक वास्तुशिल्प अवलोकन के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_calls/ \
      --tree start \
      --split_mode calls \
      --inline_depth 2 \
      --split_depth 5

    निर्यातित कॉलबैक, हैंडलर, रूट और क्षमता सतहों के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_refs/ \
      --tree start \
      --split_mode references \
      --inline_depth 1 \
      --split_depth 3

    शाब्दिक या मॉड्यूल-जैसी संरचना के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --out ./tree_declarers/ \
      --tree start \
      --split_mode declarers \
      --split_depth 3

    फ़ंक्शन प्रदर्शन मोड

    चयनित फ़ंक्शन प्रदर्शित करने के लिए, --func का उपयोग करें:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --func func_name

    छिपे हुए के रूप में चिह्नित पंक्तियों को भी दिखाने के लिए:

    root@kitploit:~
    python view8.py \
      --inp input.pkl \
      --input_format serialized \
      --func func_name \
      --show_all

    VersionDetector.exe

    V8 बाइटकोड संस्करण फ़ाइल की शुरुआत में एक हैश के रूप में संग्रहीत होता है। VersionDetector.exe के लिए उपलब्ध विकल्प नीचे दिए गए हैं:

    • -h: एक संस्करण प्राप्त करता है और उसका हैश लौटाता है।
    • -d: लिटिल-एंडियन रूप में एक हैश प्राप्त करता है और ब्रूट फोर्स का उपयोग करके उसका संबंधित संस्करण लौटाता है।
    • -f: एक फ़ाइल प्राप्त करता है और उसका संस्करण लौटाता है।
    टूल डाउनलोड करें