
यह फ्रेमवर्क उपयोगकर्ता को JOP गैजेट्स खोजने में सक्षम बनाता है और DEP को बायपास करने के लिए एक पूर्ण JOP चेन बनाने को स्वचालित कर सकता है। JOP ROCKET विंडोज जंप-ओरिएंटेड प्रोग्रामिंग के लिए अंतिम समाधान है। JOP ROCKET नया टू-गैजेट डिस्पैचर भी ढूंढता है, जो JOP के साथ संभव होने वाली चीज़ों को काफी विस्तारित करता है।

नोट: 2.15 के साथ, हम दो-गैजेट डिस्पैचर प्रस्तुत कर रहे हैं--यह डिस्पैचर गैजेट्स की संभावनाओं को काफी बढ़ाता है। 26 मई, 2021 को 2.15 के साथ बहुत सारे अनुकूलन और अतिरिक्त नई सुविधाएँ जोड़ी गई हैं।
अपडेट: 29 नवंबर, 2021: मैंने @Hack in Ryadh के लिए स्लाइड्स और Shellcodeless JOP पर एक व्हाइट पेपर अपलोड किया है। टॉक में उपयोग किए गए मूक डेमो वीडियो यहाँ मिल सकते हैं: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV
अपडेट: 1 दिसंबर, 2022: मैंने इस GitHub के अंत में एक प्रश्नोत्तर (Q & A) जोड़ा है, जिसमें संसाधनों (टॉक्स और पेपर्स) के लिंक शामिल हैं।
वर्तमान संस्करण: 2.15
जंप-ओरिएंटेड प्रोग्रामिंग रिवर्सिंग ओपन साइबर नॉलेज एक्सपर्ट टूल, या JOP ROCKET, एक ऐसा टूल है जिसे x86 Windows वातावरण में JOP गैजेट खोज को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। यह टूल DEF CON 27 में जारी किया गया था, जहाँ यह Dr. Bramwell Brizendine और Dr. Josh Stroschein के टॉक का विषय था। एक प्रमुख अपडेट, जो विकास में था, इस सितंबर 2020 में जारी किया गया था, और निकट भविष्य में छोटे अपडेट की योजना है।
इस टूल को डाउनलोड करने के लिए कृपया https://github.com/Bw3ll/JOP_ROCKET पर जाएँ।
कई प्रमुख अपडेट हो चुके हैं। यह अनुशंसा की जाती है कि 2.15 से पहले के किसी भी संस्करण को अपडेट किया जाए, ताकि कई अपडेट का लाभ उठाया जा सके। इनमें स्वचालित JOP चेन निर्माण, नए प्रकार के गैजेट्स की खोज, नए प्रकार के डिस्पैचर गैजेट्स, और दो-गैजेट डिस्पैचर शामिल हैं। JOP ROCKET में इसके प्रदर्शन और गति को बढ़ाने और अनुकूलित करने के लिए कई अन्य महत्वपूर्ण परिवर्तन भी हुए हैं।
JOP ROCKET एक Python प्रोग्राम है जो Capstone डिसअसेम्बली इंजन और अन्य निर्भरताओं का उपयोग करता है। यह सॉफ़्टवेयर एक्सप्लॉइटेशन टूल एक पूर्ण-विशेषताओं वाला आर्टिफैक्ट है जिसे जंप-ओरिएंटेड प्रोग्रामिंग को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। इसे Windows पर चलाने का इरादा है।
इस समय हेल्प मेनू में जो है उसके अलावा उपयोग संबंधी जानकारी उपलब्ध नहीं है। JOP एक्सप्लॉइट का निर्माण सीधा नहीं है और बहुत बारीकी से परिपूर्ण है, जिसमें ROP से कुछ समानताएँ हैं लेकिन कई अंतर हैं। संक्षिप्त डेमो के लिए कृपया DEF CON टॉक देखें। https://www.youtube.com/watch?v=PMihX693mPE
यह टूल Dakota State University के डॉक्टरेट कार्यक्रम में CSC 848: Advanced Software Exploitation के भाग के रूप में पढ़ाया गया है, जो कार्यक्रम का सबसे चुनौतीपूर्ण पाठ्यक्रम है। छात्रों ने ऐसे एक्सप्लॉइट पूरे किए जिनमें DEP और ASLR को बायपास करना शामिल था।
Austin Babcock को JOP ROCKET से संबंधित विभिन्न मुद्दों में उनकी मदद के लिए धन्यवाद, जिसमें उनके इंस्टॉल निर्देश भी शामिल हैं। वह JOP के मास्टर हैं।
हमने यहाँ एक संग्रह अपलोड किया है, JOP ROCKET challenge - toy binaries.zip, ताकि इच्छुक पक्ष JOP ROCKET का उपयोग करके कुछ नमूना टॉय बाइनरीज़ पर JOP का परीक्षण और अभ्यास कर सकें। क्या आप Data Execution Prevention (DEP) को बायपास कर सकते हैं? यह अच्छा है यदि आप किसी ऐसी बाइनरी पर JOP का अभ्यास करना चाहते हैं जिसके बारे में आप जानते हैं कि वह निश्चित रूप से कमजोर है और उसमें सही गैजेट्स मौजूद हैं। उसी बाइनरी का एक आसान और एक कठिन संस्करण है। हालाँकि पहली बार JOP शायद अधिक कठिन होगा, जब तक किसी को इसकी समझ नहीं आ जाती। एक बार जब आप इन बाइनरीज़ के साथ JOP में महारत हासिल कर लेते हैं, तो आप इसे कुछ वास्तविक-दुनिया के गैजेट्स पर आज़मा सकते हैं, बशर्ते उनमें पर्याप्त गैजेट्स हों। यदि आप डिस्पैचर गैजेट प्रतिमान का उपयोग कर रहे हैं, तो ध्यान रखें कि आपको एक डिस्पैचर गैजेट की आवश्यकता है। JOP को ROP के साथ मिलाकर भी संभव है, किसी JOP गैजेट का उपयोग करके RET की ओर इशारा करते हुए, ताकि JMP EDX में EDX RET की ओर इंगित कर सके। यह अधिक उपयोगी है यदि आपको ROP को काम करने के लिए केवल एक या दो JOP गैजेट्स की आवश्यकता हो। संग्रह में मौजूद बाइनरीज़ आपको डिस्पैचर गैजेट प्रतिमान का उपयोग कुछ अलग तरीकों से करने की अनुमति देंगी!
JOP के डिस्पैचर गैजेट प्रतिमान के साथ, आप 100% ROP को समाप्त कर सकते हैं, हालाँकि डिस्पैच टेबल और डिस्पैचर गैजेट को लोड करने के लिए दो ROP गैजेट्स के साथ शुरुआत करना सबसे आसान है। प्री-बिल्ट JOP चेन यह आपके लिए स्वचालित रूप से कर देगी, बशर्ते वे मौजूद हों। वहाँ से, यह शुद्ध JOP हो सकता है, जिसमें अप्रत्यक्ष जंप और अप्रत्यक्ष कॉल दोनों का उपयोग किया जाता है (JMP EBX, CALL EDX, आदि)।
Python 2.7 स्थापित करें। ऐसा करने का सबसे आसान तरीका वेबसाइट से होगा: https://www.python.org/download/releases/2.7/
यदि आपके पास पहले से Python 3 है, तब भी आपको Python 2.7 की आवश्यकता होगी क्योंकि टूल Python 3 के साथ ठीक से काम नहीं करेगा।
यदि आपके पास दोनों हैं, तो आपको विशेष कमेंट जोड़ने की आवश्यकता होगी:
#!python2
rocket.py के शीर्ष पर। फिर "python rocket.py" के बजाय "py rocket.py" के साथ चलाएँ। यह सुनिश्चित करेगा कि प्रोग्राम Python 2.7 का उपयोग करके चलाया जाता है। वैकल्पिक रूप से, आप बस py -2 rocket.py कर सकते हैं।

यदि Python के साथ pip पहले से शामिल नहीं है तो pip स्थापित करें।
आपको दिए गए स्क्रिप्ट को सहेजना होगा और लिंक पर दिए गए निर्देशों के अनुसार उसे चलाना होगा। यदि आपको कोई त्रुटि आती है, तो “वैकल्पिक” स्क्रिप्ट का उपयोग करने का प्रयास करें।
यदि pip अभी भी काम नहीं करता है, तो "C:\python27\Scripts" (या आपकी संबंधित निर्देशिका) को अपने Path सिस्टम वेरिएबल में जोड़ने का प्रयास करें:

pip के साथ निर्भरताएँ स्थापित करना शुरू करें!
नोट: pip के साथ स्थापनाएँ Windows टर्मिनल का उपयोग करके काम करनी चाहिए, लेकिन Cygwin वातावरण में काम नहीं कर सकती हैं। यदि Cygwin का उपयोग कर रहे हैं, तो आपको इसके बजाय स्रोत कोड के साथ स्थापित करने की आवश्यकता हो सकती है। यह अधिक समय लेने वाला प्रयास हो सकता है, और आपको निर्भरताओं के विभिन्न निर्माताओं के नवीनतम दस्तावेज़ों के लिए निर्देशित किया जाता है।
pip install capstone
pip install pefile2
आपके पास शायद Python 2.7 के साथ pefile पहले से स्थापित है, लेकिन यह संस्करण पुराना है।
Pefile2 ही वह चीज़ है जिसकी आपको आवश्यकता है।
प्रोग्राम को pefile2 का उपयोग करने के लिए आपको pip uninstall pefile चलाने की आवश्यकता हो सकती है।
आदि... इस दस्तावेज़ के नीचे निर्भरताओं की एक सूची पाई जा सकती है। यदि वे पहले से स्थापित नहीं हैं तो प्रत्येक को स्थापित किया जाना चाहिए।
ऊपर दिए गए दो संभवतः केवल वे हैं जिन्हें आपको स्वयं स्थापित करने की आवश्यकता होगी।
कई निर्भरताएँ Python के साथ पहले से आती हैं। उपलब्ध मॉड्यूल की सूची देखने के लिए, एक प्रॉम्प्ट खोलें:

सूची देखें और जाँचें कि क्या आपके पास सभी निर्भरताएँ हैं। जो आपके पास नहीं हैं, उन्हें pip या स्रोत कोड के माध्यम से स्थापित करें।
नोट: pywin32 का उपयोग Win32file और Win32api के लिए किया जाता है
आपके पास एक निर्देशिका में सभी पाँच फ़ाइलें होनी चाहिए: rocket.py, lists,py, checkIt.py, ui.py, और stackpivot.py। टूल का उपयोग शुरू करने के लिए, कमांड लाइन पर चलाएँ: python rocket.py filename.exe -- filename.exe वह प्रोग्राम है जिसके लिए आप JOP गैजेट्स या JOP चेन प्राप्त करना चाहते हैं।
यदि आपको "SyntaxError: Missing parentheses in call to 'print'" जैसी त्रुटियाँ मिल रही हैं, तो संभवतः यह Python 3 के साथ चल रहा है। प्रोग्राम को Python 2 का उपयोग करने के लिए चरण 1 में बताए गए सुधार को आज़माएँ।
"lists" या "ui" से संबंधित त्रुटियाँ संभवतः lists.py और ui.py फ़ाइलों के स्थान के कारण होती हैं। सुनिश्चित करें कि ये फ़ाइलें rocket.py के समान निर्देशिका में हैं।_