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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
px-vm — PerimeterX के बाइटकोड VM के लिए रिवर्स इंजीनियरिंग टूलकिट, जिसमें CFG-आधारित डिस्सेम्बलर, 5-लेयर डिक्रिप्शन पाइपलाइन, ओपकोड टेबल पुनर्निर्माण, और बॉट डिटेक्शन फिंगरप्रिंटिंग पर सुरक्षा अनुसंधान के लिए स्टैक एमुलेशन क्लीनर शामिल है। | Kitploit
उपकरण/GitHubGitHub/b9ph0met/px-vm
गतिशील विश्लेषण (सैंडबॉक्सिंग)आईडीएस/आईपीएस से बचनारिवर्स इंजीनियरिंगवेब सुरक्षामालवेयर विश्लेषणक्रिप्टोग्राफीबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षाएंटी-बॉटफिंगरप्रिंट स्पूफिंग
5514265 महीने पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
GitHub
b9ph0met/px-vm

px-vm

PerimeterX के बाइटकोड VM के लिए रिवर्स इंजीनियरिंग टूलकिट, जिसमें CFG-आधारित डिस्सेम्बलर, 5-लेयर डिक्रिप्शन पाइपलाइन, ओपकोड टेबल पुनर्निर्माण, और बॉट डिटेक्शन फिंगरप्रिंटिंग पर सुरक्षा अनुसंधान के लिए स्टैक एमुलेशन क्लीनर शामिल है।

रिपॉजिटरी देखें
साझा करें

PerimeterX Auditor VM विश्लेषण

सारांश

यह रिपॉजिटरी PerimeterX के auditor.js के रिवर्स इंजीनियरिंग का दस्तावेजीकरण करती है, जो एक बाइटकोड वर्चुअल मशीन है जो PX की बॉट डिटेक्शन पाइपलाइन में द्वितीयक फिंगरप्रिंटिंग परत के रूप में उपयोग होती है। यह विश्लेषण निम्नलिखित को कवर करता है:

  • बाइटकोड निष्कर्षण और 5-परत डिक्रिप्शन पाइपलाइन
  • ऑपकोड तालिका पुनर्निर्माण (107 आधार + 40 हनी + 24 पैडिंग + 16 सुपरइंस्ट्रक्शन समूह)
  • कॉन्स्टेंट्स पूल डिक्रिप्शन (1230 प्रविष्टियाँ, 1095 एन्क्रिप्टेड स्ट्रिंग्स)
  • सुपरइंस्ट्रक्शन उप-डिस्पैच रिज़ॉल्यूशन के साथ CFG-आधारित डिसअसेंबलर
  • स्टैक इम्यूलेशन क्लीनर जो पठनीय स्यूडो-कोड उत्पन्न करता है
  • एंटी-एनालिसिस तकनीकें: हनी ऑपकोड, ओवरलैपिंग इंस्ट्रक्शन, कोड इंटीग्रिटी हैशिंग

नोट: यह रिपॉजिटरी केवल एक (स्थिर) VM संस्करण को कवर करती है और सुरक्षा अनुसंधान और विश्लेषण उद्देश्यों के लिए है। इसमें डायनामिक सॉल्वर या प्रोडक्शन सॉल्वर इम्प्लीमेंटेशन शामिल नहीं हैं।

पृष्ठभूमि

गुरुवार, 2 अप्रैल 2026 को, PerimeterX ने अपनी बॉट डिटेक्शन पाइपलाइन के भाग के रूप में एक नया बाइटकोड VM तैनात किया।

अंदर क्या है

auditor.js एक सामान्य PX सेंसर स्क्रिप्ट जैसा नहीं दिखता। सामान्य अस्पष्ट प्रॉपर्टी लुकअप और कलेक्टर फ़ंक्शन के बजाय:

  • 8 विशाल बेस64 स्ट्रिंग्स (_fg0 से _fg7 तक), एन्क्रिप्टेड VM प्रोग्राम चरों में विभाजित
  • एक XOR डिक्रिप्शन फ़ंक्शन (_dp) जिसमें प्रति-साइट कुंजी (_pk) प्रोग्राम JSON को अनपैक करती है
  • एक फिशर-येट्स शफल जो ऑपकोड तालिका को क्रमबद्ध करता है ताकि बाइटकोड मान प्रति बिल्ड भिन्न हों
  • 107+ केस हैंडलर्स के साथ एक डिस्पैच लूप, VM इंटरप्रेटर
  • फिंगरप्रिंट आउटपुट के RSA एन्क्रिप्शन के लिए BigInt अंकगणित
  • एक कोड इंटीग्रिटी हैश (_0x8df7) जो डिक्रिप्शन कुंजी प्राप्त करने के लिए VM के अपने स्रोत को हैश करता है, ताकि कोई भी संशोधन बाइटकोड डिक्रिप्शन को चुपचाप तोड़ दे

चरण 1: बाइटकोड निष्कर्षण

VM प्रोग्राम 8 चरों में विभाजित है, फिर _dp() के माध्यम से प्रति-साइट XOR सिफर का उपयोग करके डिक्रिप्ट किया जाता है, जो _pk द्वारा कुंजीबद्ध है:

var _pk = 893686289;
function _dp(_b) {
    var _r = atob(_b), _o = new Array(_r.length);
    for (var _i = 0; _i < _r.length; _i++) {
        _o[_i] = String.fromCharCode(
            _r.charCodeAt(_i) ^ (((_pk >>> (8 * (_i % 4))) ^ Math.imul(_i + 1, 0x6B8B4567)) & 0xFF)
        );
    }
    return _o.join("");
}

परिणाम अस्पष्ट दो-अक्षर की-नामों वाला एक JSON ऑब्जेक्ट है (जैसे, बीज के लिए "uo", नॉन्स के लिए "dk")। एक मैपिंग तालिका उन्हें मानक नामों में परिवर्तित करती है।

node extractor.js
# -> program.json

प्रोग्राम संरचना

फील्डविवरण
sबीज (12755), सभी क्रिप्टोग्राफिक संचालन को संचालित करता है
nनॉन्स (1603730985), प्रति-प्रोग्राम यादृच्छिकीकरण
gजनरेटर फ्लैग, इंटीग्रिटी हैश डिक्रिप्शन परत को सक्षम करता है
xएन्क्रिप्टेड फ्लैग, कॉन्स्टेंट्स XOR-एन्क्रिप्टेड हैं
cकॉन्स्टेंट्स पूल, 1230 प्रविष्टियाँ
fफ़ंक्शन, 112 प्रविष्टियाँ एन्क्रिप्टेड बाइटकोड के साथ
eएंट्री पॉइंट, फ़ंक्शन इंडेक्स 0

चरण 2: कॉन्स्टेंट्स डिक्रिप्शन

सभी 1095 स्ट्रिंग कॉन्स्टेंट्स दो परतों के साथ एन्क्रिप्टेड हैं:

परत 1: 4008000571 द्वारा कुंजीबद्ध स्थिर मरमर XOR, स्थिति-निर्भर।

परत 2: PRNG स्ट्रीम XOR एक glibc LCG का उपयोग करके, प्रोग्राम बीज को नथ के गुणक हैश के माध्यम से प्रत्येक कॉन्स्टेंट के इंडेक्स के साथ मिलाकर बीजित किया जाता है।

डिक्रिप्शन से पहले, बीज को पर्यावरण फिंगरप्रिंट (_0xaf48) के साथ XOR किया जाता है, एक 8-बिट बिटमास्क जो ब्राउज़र API की जांच करके गणना की जाती है:

बिटपरीक्षणChrome
0typeof window.matchMedia === "function"1
1document.elementFromPoint मौजूद है1
2typeof window.requestAnimationFrame === "function"1
3typeof window.getComputedStyle === "function"1
4CSS.supports मौजूद है1
5navigator.sendBeacon मौजूद है1
6document.execCommand मौजूद है1
7process.versions.node मौजूद है (Node.js)0

Chrome के लिए: _0xaf48 = 0b01111111 = 127, जो प्रभावी बीज = 12755 ^ 127 = 12716 देता है।

इसका अर्थ है कि एक ही प्रोग्राम विभिन्न वातावरणों में अलग-अलग डिक्रिप्शन परिणाम उत्पन्न करता है। इसे Node.js बनाम Chrome बनाम Firefox में चलाने पर अलग-अलग बीज प्राप्त होते हैं।

node decrypt_constants.js
# -> program_decrypted.json, constants_table.txt

कॉन्स्टेंट्स क्या प्रकट करते हैं

डिक्रिप्ट की गई स्ट्रिंग्स हमें बताती हैं कि VM वास्तव में क्या फिंगरप्रिंट करता है:

ब्राउज़र फिंगरप्रिंटिंग: screenWidth, screenHeight, innerWidth, innerHeight, devicePixelRatio, colorDepth, platform, userAgent, language, timezone, timezoneOffset, forcedColors, highContrast

प्रदर्शन समय: navigationStart, domComplete, domLoading, fetchStart, requestStart, responseEnd, secureConnectionStart, serverTiming

RSA क्रिप्टोग्राफी: BigInt, modPow, AQAB (65537 बेस64 में), modulusLength, shiftLeft, shiftRight, getRandomValues

DOM/SVG जांच: http://www.w3.org/2000/svg, createElementNS, getBoundingClientRect, getTotalLength, getBBox

PX फील्ड नाम: mtr, tst, mst, enc, sbx, fstec, pdc, prb, wvi, wva, pti, dis, los, cv, sc, jd, ads, enve, init

एंडपॉइंट संदर्भ: https://fst-ec.perimeterx.net/?id=

एंटी-डीबगर: _CMP_RCX_07;_JNZ_0x0A_EB_CC, CC|CD-04|BREAKPOINT-005

चरण 3: ऑपकोड तालिका

पूर्ण JavaScript भाषा को कवर करने वाले 107 आधार ऑपकोड, साथ ही गतिशील रूप से उत्पन्न शोर:

40 हनी ऑपकोड गणितीय रूप से समकक्ष लेकिन वाक्य रचनात्मक रूप से भिन्न अभिव्यक्तियों का उपयोग करके अंकगणित/तुलना संचालन के वैकल्पिक कार्यान्वयन हैं। ADD (a^b) + 2*(a&b) या -((-a)-b) या a-(-b) के रूप में प्रकट हो सकता है। प्रत्येक आधार ऑपकोड में बीज से नियतात्मक रूप से उत्पन्न 3 प्रकार तक हो सकते हैं। एक साधारण ADD निर्देश एक ही प्रोग्राम के भीतर 4 अलग-अलग बाइटकोड मानों के रूप में प्रकट हो सकता है, जो पैटर्न-मिलान दृष्टिकोण को तोड़ता है।

24 पैडिंग ऑपकोड क्रमचय में आवंटित होते हैं लेकिन उनके कोई हैंडलर नहीं होते और कभी उत्सर्जित नहीं होते। वे ऑपकोड स्थान का विस्तार करने और शफल को उलटना कठिन बनाने के लिए मौजूद हैं।

16 सुपरइंस्ट्रक्शन समूह सबसे महत्वपूर्ण एंटी-एनालिसिस विशेषता हैं। जब डिस्पैच लूप एक ऑपकोड को सुपरइंस्ट्रक्शन लीडर के रूप में हल करता है, तो हैंडलर बाइटकोड स्ट्रीम से एक अतिरिक्त बाइट पढ़ता है और एक उप-हैंडलर को डिस्पैच करता है। उप-हैंडलर पूरी तरह से अलग ऑपरेशन हो सकता है:

लीडर के रूप में हल होता हैउप-बाइटवास्तव में निष्पादित होता है
FOR_IN_NEXT74FOR_IN_NEXT
FOR_IN_NEXT100MAKE_CLOSURE
ASSIGN_OP_VAR165ASSIGN_OP_VAR
ASSIGN_OP_VAR37JMP
GET_VAR_PROP_C143SET_VAR_POP
GET_VAR_PROP_C23JMP_NULLISH

ऑपकोड तालिका प्रभावी बीज द्वारा बीजित फिशर-येट्स के माध्यम से शफल की जाती है, इसलिए बाइटकोड मान प्रति बिल्ड भिन्न होते हैं।

node build_opcodes.js
# -> opcode_table.json, opcode_table.txt

चरण 4: CFG बिल्डर

टूलकिट का मूल। cfg.js PC=0 से सभी निष्पादन पथों का अनुसरण करके, सही एन्क्रिप्शन संदर्भ के साथ प्रत्येक निर्देश को डिकोड करके एक नियंत्रण प्रवाह ग्राफ बनाता है।

रैखिक डिसअसेंबलर क्यों नहीं

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

पाँच-परत बाइटकोड एन्क्रिप्शन

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