
This framework enables user to discover JOP gagdets and can automate building a complete JOP chain to bypass DEP. JOP ROCKET is the ultimate solution for Windows jump-oriented programming. JOP ROCKET also finds the novel two-gadget dispatcher, which greatly expands what is possible with 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 के समान निर्देशिका में हैं।_
Cygwin वातावरण में इसका उपयोग करने के लिए, आपको संभवतः Capstone को स्रोत से स्थापित करने की आवश्यकता होगी। ऐसा करने के विभिन्न तरीके हैं, और Capstone के दस्तावेज़ सहायता प्रदान करते हैं। टूल के विकास के दौरान मूल रूप से Cygwin का उपयोग किया गया था, हालाँकि अब ऐसा नहीं है। JOP ROCKET v2.0 का Cygwin पर परीक्षण नहीं किया गया है, और कमांड प्रॉम्प्ट JOP ROCKET का अनुशंसित उपयोग है। नोट: Cygwin उपयोग अब स्पष्ट रूप से समर्थित नहीं है, और इस प्रोग्राम के साथ इसका उपयोग करने की अनुशंसा नहीं की जाती है।
अधिक विस्तृत उपयोग जानकारी जल्द ही आ रही है। सहायता के लिए DEF CON 27 टॉक और हेल्प उप-मेनू देखें।
हालाँकि, शुरू करने के लिए, आपके पास एक ही निर्देशिका में पाँच Python फ़ाइलें होनी चाहिए: rocket.py, ui.py, stackpivot.py, checkIt.py, और lists.py। फिर कमांड लाइन से चलाएँ। आप इंस्टॉल निर्देशिका में एक स्थानीय फ़ाइल प्रदान कर सकते हैं, लेकिन यह modules/DLL's नहीं खोज पाएगा। इन्हें खोजने के लिए, प्रोग्राम स्थापित होना चाहिए, और एप्लिकेशन का पूर्ण पथ एक टेक्स्ट फ़ाइल के अंदर इनपुट के रूप में प्रदान किया जा सकता है जिसे कमांड लाइन पर एक तर्क के रूप में दिया जा सकता है, जैसे
python rocket.py input.txt
input.txt के अंदर, हमारे पास पूर्ण पथ होगा, जैसे C:\rocket2\sample_binary.exe। पूर्ण पथ प्रदान करके, आप स्कैन करने के लिए मॉड्यूल भी निकाल सकेंगे, यदि वांछित हो। यदि आप JOP ROCKET का उपयोग केवल स्थानीय निर्देशिका में प्रोग्राम के साथ करना चाहते हैं, तो यह केवल इमेज एक्ज़ीक्यूटेबल के लिए ही गैजेट्स ढूँढेगा, अर्थात कोई DLL नहीं। इस तरह से उपयोग करने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें:
python rocket.py sample_binary.exe
यदि एक्ज़ीक्यूटेबल उसी निर्देशिका में है, तो आप JOP ROCKET का उपयोग ऊपर वर्णित तरीके से कर सकते हैं
विश्लेषण के लिए किसी एक्ज़ीक्यूटेबल या DLL को लोड करते समय, दो दृष्टिकोण हैं। पहला यह है कि एक्ज़ीक्यूटेबल को उसी निर्देशिका में रखें और प्रोग्राम को एक तर्क के रूप में उसका उपयोग करके चलाएँ, जैसे python rocket.py binary.exe। यह उपयोगकर्ता को कई सिस्टम मॉड्यूल की पहचान करने और निकालने में सक्षम बनाएगा। हालाँकि, यह कुछ गैर-सिस्टम बाइनरीज़ को नहीं खोजेगा। व्यापक कवरेज के लिए, उपयोगकर्ता को टेक्स्ट फ़ाइल में एप्लिकेशन का पूर्ण पथ प्रदान करना होगा और इसे ROCKET में इनपुट के रूप में उपयोग करना होगा, जैसे python rocket.py input.txt। यह ROCKET को लक्षित एप्लिकेशन से जुड़े गैर-सिस्टम DLLs का पता लगाने, निकालने और खोजने की अनुमति देगा। इस प्रकार, आम तौर पर बाइनरी को टेक्स्ट फ़ाइल के माध्यम से इनपुट के रूप में प्रदान करने की अनुशंसा की जाती है, अन्यथा कुछ DLLs बाहर रह सकते हैं। उदाहरण के लिए, python rocket.py binaryToScan.txt। binaryToScan.txt में बाइनरी का पथ होना चाहिए, C:\Users\CoolPerson\Desktop\Instructions\targetBinary.exe
32-बिट Python बहुत बड़ी बाइनरीज़ पर काम करना बंद कर देगा। इनके साथ काम करने में सक्षम होने के लिए, आपको 64-बिट Python का उपयोग करना होगा।
32-बिट से 64-बिट Python पर जाने के लिए Austin के कुछ निर्देश यहाँ दिए गए हैं: python2.7 का 64-बिट संस्करण स्थापित करने के लिए, पहले सुनिश्चित करें कि पुराना इंस्टॉलेशन अनइंस्टॉल कर दिया गया है। 64-बिट संस्करण स्थापित करने के बाद, आपको लाइब्रेरीज़ आयात करते समय कुछ त्रुटियाँ मिल सकती हैं, जैसे "DLL load failed: %1 is not a valid Win32 application"। ये इसलिए होती हैं क्योंकि Python पहले से स्थापित 32-बिट संस्करणों को लोड करने का प्रयास कर रहा है। इस समस्या को ठीक करने के लिए, लाइब्रेरी को अनइंस्टॉल करने के लिए pip का उपयोग करें। यदि Python 2 और 3 दोनों स्थापित हैं, तो सुनिश्चित करें कि pip का सही संस्करण उपयोग किया जा रहा है, इसे "py -2 -m pip " के रूप में उपयोग करके।
capstone के लिए समस्या ठीक करना सीधा है:
py -2 -m pip uninstall capstone
py -2 -m pip install capstone
win32api आयात से संबंधित त्रुटियाँ pywin32 से संबंधित हैं। इसे अनइंस्टॉल करना अधिक कठिन है क्योंकि pip इस प्रक्रिया को स्वचालित नहीं कर सकता है। इसे मैन्युअल रूप से ...\Python27\Lib\site-packages के भीतर PyWin32 फ़ाइलों को हटाकर अनइंस्टॉल करना पड़ सकता है।
फिर, चलाएँ:
py -2 -m pip install pywin32
बाद में, ...\Python27\Scripts\pywin32_postinstall.py -install चलाकर इंस्टॉलेशन पूरा करें।
प्रश्न: JOP ROCKET में ऐसा क्या खास है?
उत्तर: JOP ROCKET सभी आवश्यक गैजेट्स ढूँढता है, जिसमें डिस्पैचर गैजेट भी शामिल है। मुझे किसी अन्य टूल के बारे में जानकारी नहीं है जो डिस्पैचर गैजेट्स की खोज करता हो। इसके अतिरिक्त, यह JOP में नए प्रकार के गैजेट्स और नवाचार पेश करता है। JOP ROCKET डिस्पैचर गैजेट प्रतिमान पर एक नए बदलाव का उपयोग करके DEP को बायपास करने के लिए एक पूर्ण JOP चेन भी उत्पन्न कर सकता है, जिसमें कई स्टैक पिवट्स की एक श्रृंखला शामिल होती है। यथार्थवादी रूप से, JOP ROCKET का उपयोग किए बिना डिस्पैचर गैजेट दृष्टिकोण का उपयोग करके JOP एक्सप्लॉइट करना बहुत कठिन होगा। कुछ अन्य ROP टूल हैं जो अधिक सीमित JOP गैजेट्स प्रदान कर सकते हैं, लेकिन वे अधिकतर भविष्य के काम के लिए प्लेसहोल्डर हैं, और आप JOP ROCKET के साथ मिले कुछ गैजेट्स के बिना JOP एक्सप्लॉइट पूरा नहीं कर सकते।
प्रश्न: मुझे लगता है मैंने पहले किसी टॉक में JOP ROCKET देखा था? यह कहाँ था?
उत्तर: हमने कई सम्मेलनों में प्रस्तुति दी है: DEF CON 27 (2019), Wild West Hackin’ Fest (2020), Hack in the Box Amsterdam (2021), Black Hat Asia (2021), और @Hack (2021) (अब इसका नाम बदलकर Black Hat Middle East and Africa कर दिया गया है)। इनमें से प्रत्येक के लिए आम तौर पर एक व्हाइट पेपर और एक वीडियो होता है (@Hack के लिए कोई वीडियो नहीं)। शैक्षणिक सम्मेलन भी हुए हैं। प्रत्येक टॉक और व्हाइट पेपर अलग होता है, आमतौर पर कम से कम 60-70% नई सामग्री के साथ। वे JOP पर कई अलग-अलग विषयों को संबोधित करते हैं। हमारी कोई नई टॉक योजना नहीं है और जब तक हमारे पास साझा करने के लिए कुछ नया न हो, हम दूसरी नहीं करेंगे, क्योंकि हमें खुद को दोहराना पसंद नहीं है।
यहाँ कुछ JOP सामग्रियों की एक सीमित सूची है। यह वही टॉक या पेपर नहीं है, क्योंकि हम लगातार विकसित हो रहे हैं और नए नवाचार जोड़ रहे हैं। प्रत्येक में नए योगदान हैं।
DEF CON 27 2019 वीडियो: https://www.youtube.com/watch?v=PMihX693mPE
Wild West Hackin’ Fest 2020 वीडियो: https://www.youtube.com/watch?v=ZQuxSSBfeHM
Black Hat Asia वीडियो: https://www.youtube.com/watch?v=NYgTw-h6GT8
Black Hat Asia पेपर: https://i.blackhat.com/asia-21/Thursday-Handouts/as-21-Brizendine-Babcock-Prebuilt-Jop-Chains-With-The-Jop-Rocket-wp.pdf
Hack in the Box Amsterdam 2021 वीडियो: https://www.youtube.com/watch?v=MxIySXHvKyE
Hack in the Box Amsterdam 2021 पेपर: http://magazine.hitb.org/wp-content/uploads/2021/06/HITBMag-Issue-12-June-2021-.pdf
उच्च रिज़ॉल्यूशन: http://magazine.hitb.org/wp-content/uploads/2021/06/HITBMag-Issue-12-June-2021-Hi-res.pdf
@Hack 2021 (नाम बदलकर Black Hat Middle East and Africa) पेपर: https://blackhatmea.com/content-hub/advanced-code-reuse-attacks-jump-oriented-programming
यदि आप एक शैक्षणिक शोधकर्ता हैं, तो कृपया इनमें से कुछ या हमारे शैक्षणिक पेपर भी उद्धृत करें। :-)
प्रश्न: वास्तविक-दुनिया के JOP एक्सप्लॉइट का एक उदाहरण क्या है?
उत्तर: Austin ने एक Exploit DB पर प्रकाशित किया: https://www.exploit-db.com/exploits/49959
आप इसे और उनके बारे में बात करते हुए HITB 2021 प्रस्तुति में देख सकते हैं जो हमने की थी। उस वास्तविक-दुनिया के JOP एक्सप्लॉइट ने कुछ विशेष चुनौतियाँ पेश कीं, इसलिए इसे देखना और अध्ययन करना अच्छा है। हालाँकि Austin ने इसे हाथ से लिखा था, वास्तव में JOP ROCKET के लिए स्वचालित JOP चेन निर्माण अधिकांश काम कर देता। (कुछ चुनौतियों की भरपाई के लिए अभी भी अतिरिक्त विशेष सेटअप की आवश्यकता होगी।) यह कई स्टैक पिवट्स की एक श्रृंखला का उपयोग करके डिस्पैचर गैजेट दृष्टिकोण के हमारे नए बदलाव का भी एक उदाहरण है। यह एक्सप्लॉइट पूरा करने में एक दिन से भी कम समय लगा।
प्रश्न: क्या JOP करना कठिन है?
उत्तर: नहीं, यह कठिन नहीं है, लेकिन यह ROP से बहुत अलग है। कुछ स्थानों पर अलग-अलग "नियम" हैं जो तुरंत स्पष्ट नहीं हो सकते हैं। हम उनके बारे में विभिन्न पेपरों में विस्तार से लिखते हैं या अपने विभिन्न टॉक्स में उनके बारे में बात करते हैं। हालाँकि, कभी-कभी चुनौतीपूर्ण हो सकता है पर्याप्त गैजेट्स का होना। JOP की विभिन्न शैलियाँ हैं, और यदि आप डिस्पैचर-गैजेट दृष्टिकोण करने का प्रयास कर रहे हैं – जो आपको बिना ROP के पूर्ण JOP एक्सप्लॉइट करने की अनुमति दे सकता है – तो आपके पास एक डिस्पैचर गैजेट होना चाहिए।
प्रश्न: क्या JOP केवल दूसरे नाम से ROP नहीं है?
उत्तर: JOP बहुत लचीला है। यह हो सकता है। आप एक JOP गैजेट में RET लोड कर सकते हैं, और इस प्रकार जब भी आप JMP EBX करते हैं, उदाहरण के लिए, वह RET के बराबर होगा। उस अर्थ में आप JOP का उपयोग केवल ROP को बढ़ाने के तरीके के रूप में कर सकते हैं, और आपको डिस्पैचर गैजेट की आवश्यकता नहीं होगी। इस तरह पूरा एक्सप्लॉइट बनाना थकाऊ लगेगा, हालाँकि यदि आप वास्तव में चाहें तो कर सकते हैं। हम JOP की अन्य शैलियों के बारे में भी लिखते हैं, हालाँकि हमारा अधिकांश काम डिस्पैचर गैजेट दृष्टिकोण पर केंद्रित है।
प्रश्न: डिस्पैचर गैजेट क्या है? क्या यह आसानी से मिल जाता है? टू-गैजेट डिस्पैचर क्या है?
उत्तर: वह एक अपेक्षाकृत दुर्लभ गैजेट था और हमेशा आसानी से नहीं मिलता था; कुछ बाइनरीज़ में कोई व्यवहार्य डिस्पैचर गैजेट नहीं होते थे। ध्यान दें कि यहाँ भूतकाल का प्रयोग हो रहा है। हमने वैकल्पिक डिस्पैचर गैजेट्स पेश किए हैं, और अधिक महत्वपूर्ण रूप से, एक टू-गैजेट डिस्पैचर, जिसके बारे में हमने HITB पेपर में लिखा है। यह दो सामान्य गैजेट्स को लेकर उन्हें एक साथ जोड़ता है, इसलिए डिस्पैचर गैजेट अब दुर्लभ नहीं है। आवश्यक गैजेट्स में से एक इतना सामान्य है कि लगभग सभी रजिस्टरों के लिए इसकी विविधताएँ होती हैं; और दूसरा बहुत सामान्य है, लेकिन उतना सामान्य नहीं। हालाँकि, अन्य व्यावहारिक सीमाएँ हो सकती हैं, जैसे यदि आप टू-गैजेट डिस्पैचर का उपयोग कर रहे हैं, तो यह एक और रजिस्टर को बाँध देगा। (यदि अतिरिक्त लचीलेपन की आवश्यकता हो, तो एक्सप्लॉइट के दौरान डिस्पैचर गैजेट्स और उपयोग किए जा रहे रजिस्टरों को बदलना संभव है।)
प्रश्न: क्या टू-गैजेट प्रतिमान JOP ROCKET के स्वचालित JOP चेन निर्माण में निर्मित है?
उत्तर: नहीं, यह नहीं है। स्वचालित JOP चेन निर्माण बनाना समय लेने वाला था, और मैंने यह करने के बाद टू-गैजेट डिस्पैचर अवधारणा बनाई। मैं किसी बिंदु पर इसे जोड़ने का प्रयास कर सकता हूँ, लेकिन निकट भविष्य में नहीं। अधिक संभावना है कि इसे केवल तभी जोड़ा जाएगा यदि मैं JOP ROCKET का पूर्ण पुनर्लेखन करूँ। डिफ़ॉल्ट रूप से, JOP ROCKET सभी उपलब्ध रजिस्टरों के लिए JOP चेन की विभिन्न विविधताएँ बनाएगा, भले ही पारंपरिक डिस्पैचर गैजेट नहीं मिल सके। इस प्रकार, किसी के लिए जाकर अपना स्वयं का टू-गैजेट डिस्पैचर जोड़ना बहुत अधिक प्रयास नहीं लेगा। हालाँकि किसी को टू-गैजेट डिस्पैचर के लिए सुरक्षित रखे जाने वाले रजिस्टरों पर ध्यान देना होगा, क्योंकि टूल वह स्वचालित रूप से नहीं करेगा।
प्रश्न: मैं अपनी खुद की JOP चेन बनाने की कोशिश करना चाहता हूँ? क्या मैं ऐसा कर सकता हूँ?
उत्तर: बिल्कुल, ट्यूटोरियल उद्देश्यों के लिए, हमारे पास GitHub पर एक बाइनरी उपलब्ध है – इसके दो रूप – कृत्रिम रूप से निर्मित JOP गैजेट्स के साथ – एक आसान और एक कठिन संस्करण। कठिन संस्करण में नल बाइट सीमाएँ हैं। आप स्वचालित JOP चेन निर्माण के बिना एक करने की कोशिश कर सकते हैं, देखें कि क्या आप अपने स्वयं के गैजेट्स पा सकते हैं। आप स्वचालित JOP चेन निर्माण के साथ भी कोशिश कर सकते हैं। स्वचालित JOP चेन निर्माण के साथ, नल बाइट्स से निपटने के दौरान आपको अतिरिक्त काम करना होता है। मुझे लगता है कि यह भविष्य में अतिरिक्त काम का क्षेत्र हो सकता है – उसमें से कुछ को स्वचालित करना।
प्रश्न: JOP ROCKET Python की पुरानी शैली का उपयोग क्यों करता है? क्या आप इसे आधुनिक Python में बदलने जा रहे हैं?
उत्तर: इसे पहली बार कई साल पहले बनाया गया था, और उस समय मेरा इसे साझा करने का कोई इरादा नहीं था। मैंने शुरू में केवल संयोग से DEFCON में जमा किया था। दुर्भाग्य से, आधुनिक और पुराने Python के बीच अंतर ऐसे हैं कि JOP ROCKET को बदलना बहुत गैर-तुच्छ होगा, और कई जटिल फ़ंक्शन हैं जहाँ अंतर काम में आएंगे। JOP ROCKET भी बहुत बड़ा है, और मुझे जरूरी नहीं कि सभी स्थान याद हों जहाँ बदलाव की आवश्यकता होगी। अधिक संभावना है कि मैं JOP ROCKET का पूर्ण पुनर्लेखन करूँ, और इसके कुछ हिस्सों को वर्तमान की तुलना में अधिक मॉड्यूलर और कॉम्पैक्ट बनाऊँ। यदि मैं ऐसा करता हूँ तो कई नई सुविधाएँ जोड़ना चाहूँगा, और यदि ऐसा करता हूँ तो कुछ बहुत अच्छी चीज़ें कर सकता हूँ। निकट भविष्य में मेरी कोई योजना नहीं है, लेकिन यह अगले एक से तीन वर्षों में हो सकता है। फिर भी कभी नहीं कहना चाहिए, क्योंकि कभी-कभी मैं कोड को बहुत जल्दी फिर से लिख सकता हूँ। उस दौरान मैं वर्तमान JOP ROCKET में अन्य अपडेट कर सकता हूँ, क्योंकि पूर्ण पुनर्लेखन की तुलना में छोटे अपडेट आसान होते हैं।
प्रश्न: "हम" कौन हैं?
उत्तर: JOP ROCKET का निर्माता Dr. Bramwell Brizendine है। यह मूल रूप से उनके डॉक्टरेट शोध प्रबंध का विषय था, लेकिन तब से यह बहुत बढ़ गया और बदल गया है। उनके एक छात्र, Austin Babcock, एक स्नातक के रूप में JOP अनुसंधान में शामिल हुए और अपनी कंप्यूटर विज्ञान में MS डिग्री के माध्यम से इसके साथ जारी रहे। उस दौरान Austin कई पेपरों के सह-लेखक और कई कार्यक्रमों के सह-वक्ता थे। Austin ने JOP कैसे काम करता है इसकी यांत्रिकी में महत्वपूर्ण योगदान दिया है। बाद में वह JOP ROCKET में योगदानकर्ता के रूप में शामिल हुए, मुख्य रूप से अनुकूलन और कोड सुधार पेश करते हुए। Austin ने कई JOP एक्सप्लॉइट बनाए हैं। एक ExploitDB पर है।
**प्रश्न: JOP में सबसे "नई" चीज़ें क्या हैं जो आप लोगों ने की हैं?**A: खैर, दो-गैजेट डिस्पैचर है, जो कई बाइनरी के साथ JOP को संभव बनाता है, क्योंकि डिस्पैचर-गैजेट अब अस्पष्ट नहीं है। यह बहुत बड़ी बात है - क्योंकि कई मामलों में एक वैध डिस्पैचर गैजेट की कमी सीमित करने वाली होती थी--अब ऐसा नहीं है। हमने कुछ वैकल्पिक सिंगल डिस्पैचर गैजेट भी पेश किए, हालांकि अधिकांश सामान्य नहीं लगते (उनमें से कुछ का श्रेय एंड्रयू क्रेमर को जाता है)। हमने "शैलकोडलेस JOP" भी पेश किया, जो DEP को बायपास करने की आवश्यकता से बचता है और शैलकोड की कार्यक्षमता को सीधे JOP में शामिल करता है। हम उसका एक छोटा सा हिस्सा HITB में करते हैं और अधिक @Hack 2021 (Black Hat MEA) में। @Hack को फिल्माया नहीं गया था, हालांकि उस पर एक बहुत विस्तृत पेपर है। क्रियान्वयन का एक क्लिप @Hack 2021 के कुछ साउंडलेस डेमो वीडियो में देखा जा सकता है: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV । मेरे पास कुछ छात्रों ने शैलकोडलेस JOP की चुनौती ली है - यह एक ऐसी चीज़ है जो कोड-रीयूज़ हमलों की अधिक कुशलता और निपुणता की मांग कर सकती है।
Q: Does JOP ROCKET work with Linux binaries?
A: नहीं, दुर्भाग्यवश यह काम नहीं करता।
Q: Does JOP ROCKET work with 64-bit binaries?
A: नहीं, इस समय नहीं।
Q: What is the general approach of JOP?
A: हमारे पेपर पढ़ें या हमारी बातें देखें। हमने JOP के साथ जो कुछ भी किया जा सकता है उसका विस्तार करने में अत्यधिक काम किया। हमारे शोध से पहले JOP पर वस्तुतः कोई दस्तावेज़ नहीं था, और हमने JOP के लिए कई नई व्यावहारिक तकनीकें बनाईं।
Q: I am an academic researcher and want to do something with JOP as in a paper or presentation. Can I contact you?
A: बिल्कुल, यदि आप कोई पेपर या कोई नया प्रोजेक्ट करने की योजना बना रहे हैं तो आप हमसे संपर्क कर सकते हैं। आप मुझे bramwell.brizendine AT gmail पर पहुंच सकते हैं। यदि ऑस्टिन रुचि रखते हैं तो मैं उन्हें बता सकता हूं। हम संभवतः सहयोग करने में भी रुचि ले सकते हैं। यदि आप किसी तरह से JOP के लिए हमारे शोध का उपयोग करते हैं तो कृपया हमें उद्धृत करें। JOP से जुड़े शोध का शायद सबसे व्यावहारिक दृष्टिकोण JOP के लिए कुछ बचाव या इसके शमन पेश करना होगा। हमसे पहले संपर्क किया जा चुका है।
Q: Have other people done JOP?
A: यह सामान्य नहीं है, और हमारे पहले DEFCON वार्ता से पहले, यह अत्यंत दुर्लभ था। हमने निश्चित रूप से इसके बारे में जागरूकता काफी बढ़ाई है। मैंने पहले तीन वर्षों तक एक डॉक्टरेट एडवांस्ड सॉफ्टवेयर एक्सप्लॉयटेशन पाठ्यक्रम में इसे पढ़ाया है, इसलिए दर्जनों छात्रों ने JOP एक्सप्लॉइट बनाए हैं। मैं नहीं जानता कि वास्तविक दुनिया में कितने लोग इसे करते हैं—निश्चित रूप से अब लोग इसे JOP ROCKET के साथ कर सकते हैं। मेरे पास विभिन्न स्नातक छात्रों ने भी JOP एक्सप्लॉइट बनाए हैं। इसका कोई विशेष कारण नहीं है कि यह पीएच.डी. छात्र होना चाहिए - कोई भी व्यक्ति जिसके पास एक्सप्लॉयटेशन और कोड-रीयूज़ हमलों में मजबूत दक्षता है। हमारे द्वारा किए गए वार्ता और लिखे गए पेपरों की संख्या के साथ – दो-गैजेट डिस्पैचर जैसे नवाचारों के साथ – ऐसा कोई कारण नहीं है कि ROP में कुशल कोई भी व्यक्ति इसे नहीं सीख सकता।
Q: Why was JOP ROCKET necessary?
A: JOP ROCKET के बिना, आप केवल JOP गैजेट्स का एक अंश खोज पाते, और वे अव्यवस्थित होते, इसलिए कुछ ढूंढना घास के ढेर में सुई खोजने जैसा होता। कई वास्तविक-दुनिया के JOP गैजेट अनपेक्षित गैजेट हैं जो स्वाभाविक रूप से नहीं पाए जाते, इसलिए जब तक आप किसी बहुत समर्पित विद्वान प्रकार के न हों और अपना स्वयं का टूलिंग या स्क्रिप्ट न बनाएं, तो आप बहुत कुछ चूक जाते, यदि आप ROP गैजेट्स से मुक्त एक पूर्ण JOP एक्सप्लॉइट करने का प्रयास कर रहे होते। डिस्पैचर गैजेट्स जैसी चीज़ें भी हैं, जिन्हें आपको किसी तरह जादुई ढंग से स्वयं खोजना होता, यहां तक कि अनपेक्षित रूपों को भी। एक अच्छा कारण है कि हमारे काम से पहले JOP बहुत दुर्लभ था और शायद ही कभी चर्चा में था। इसका मतलब यह नहीं कि अब यह आम है। JOP ROCKET से पहले, एक एक्सप्लॉइट लिखने के लिए आपको कई महत्वपूर्ण समस्याओं को पार करना होता। अब JOP ROCKET के साथ वे समस्याएं दूर हो गई हैं और आप JOP गैजेट्स के साथ अपना खुद का बना सकते हैं या स्वचालित JOP श्रृंखला निर्माण के माध्यम से बनाई गई JOP श्रृंखला को अनुकूलित कर सकते हैं।
Q: Can JOP be easier than ROP?
A: दरअसल, मैंने कुछ छात्रों से सुना है कि JOP, ROP से आसान है – और यह हो सकता है – सही गैजेट के साथ और एकाधिक स्टैक पिवट्स के साथ डिस्पैचर गैजेट के प्रति हमारे नए दृष्टिकोण का उपयोग करके। यहां ध्यान देने योग्य कीवर्ड है "हो सकता है।" यह केवल विशेष परिस्थितियों में सच है, जैसे कोई नल बाइट प्रतिबंध नहीं और प्रचुर स्टैक पिवट गैजेट्स, और यह मानते हुए कि एक वैध डिस्पैचर गैजेट मौजूद है।
Q: Who is JOP for?
A: मुझे लगता है मुख्य रूप से यह उन लोगों के लिए है जो कोड-रीयूज़ हमलों में कुशल हैं और खुद को आगे बढ़ाना चाहते हैं, कुछ अत्याधुनिक प्रयास करना चाहते हैं – हालांकि सभी JOP को आवश्यक रूप से "कठिन" होने की आवश्यकता नहीं है। यदि आप JOP कर सकते हैं, तो यह पहनने के लिए सम्मान का बैज है। यदि आप एक JOP एक्सप्लॉइट बनाते हैं, तो उसे ExploitDB पर पोस्ट करें और जागरूकता बढ़ाने में मदद के लिए JOP ROCKET से लिंक करें। JOP उन लोगों के लिए भी हो सकता है जो केवल ROP के उपयोग से बचना चाहते हैं – हो सकता है कि ROP गैजेट्स का पता लगाने के लिए कोई शमन मौजूद हो। JOP, ROP नहीं है, और आप बिना एक भी ROP गैजेट के एक पूर्ण JOP एक्सप्लॉइट कर सकते हैं।
Q: I did automatic JOP chain generation, and it made many different chains for VirtualAlloc and VirtualAlloc. Why are there so many?
A: मैं JOP को इस दृष्टिकोण से देखता हूं कि कुछ रजिस्टर डिस्पैचर गैजेट के लिए एक पॉइंटर और डिस्पैच टेबल के लिए एक पॉइंटर रखेंगे, इसलिए वे रजिस्टर व्यस्त रहते हैं। कार्यात्मक गैजेट (सामान्य ROP गैजेट्स के समान) डिस्पैचर गैजेट को कॉल करेंगे, जो फिर डिस्पैच टेबल में स्थिति को आगे बढ़ाता है। इस प्रकार JOP ROCKET रजिस्टरों के विभिन्न संयोजनों का उपयोग करके अलग-अलग श्रृंखलाएं बनाता है। कुछ रजिस्टर डिस्पैचर गैजेट और डिस्पैच टेबल के लिए "आरक्षित" होंगे, हालांकि यदि आप चाहें, तो आप जितना चाहें उतना आगे-पीछे स्विच कर सकते हैं। कुछ रजिस्टरों में अधिक वांछनीय JOP श्रृंखलाएं होंगी - इस अर्थ में कि उसमें शायद ऐसे गैजेट हैं जो "उपयोग में आसान" हैं। इसलिए हम विकल्प प्रदान करना पसंद करते हैं। डिफ़ॉल्ट रूप से, JOP ROCKET प्रत्येक के लिए पांच उत्पन्न करेगा, इसलिए यदि एक के साथ कोई समस्या है, तो आपके पास देखने के लिए अन्य हो सकते हैं। इसके अतिरिक्त, JOP ROCKET इन्हें तब भी उत्पन्न करेगा जब कोई वांछनीय डिस्पैचर गैजेट नहीं मिलता है, क्योंकि हमेशा विकल्प या दो-गैजेट डिस्पैचर हो सकते हैं। (JOP ROCKET दो-गैजेट डिस्पैचर ढूंढता है, लेकिन यह वर्तमान में उन्हें JOP श्रृंखला निर्माण में शामिल नहीं करता है।) इस प्रकार, प्रश्न पर वापस आते हुए, JOP ROCKET बहुत सारे विकल्प प्रदान करने का प्रयास करेगा, और उपयोगकर्ता पर निर्भर है कि वह उनका मूल्यांकन करे और निर्धारित करे कि कौन सा सबसे वांछनीय या काम करने में सबसे आसान है।
Q: JOP ROCKET is not giving me good results for automatic JOP chain generation. Why is that?
A: कुछ मामलों में, कुछ बग हो सकते हैं, लेकिन यह भी याद रखना महत्वपूर्ण है कि स्वचालित JOP श्रृंखला निर्माण इस आधार पर काम करता है कि आप एकाधिक स्टैक पिवट्स का उपयोग कर रहे हैं (वार्ता, पेपर देखें)। आपको वांछित पिवट मात्रा प्रदान करनी होगी, क्योंकि यह केवल डिफ़ॉल्ट के आधार पर परिणाम उत्पन्न करेगा। एक बहुत बड़ा स्टैक पिवट हो सकता है, और आप उसे चूक सकते हैं, क्योंकि वह आपकी सीमा के बाहर है। इसलिए आपको निश्चित रूप से स्वीकार्य स्टैक पिवट्स की सीमा की गणना करनी चाहिए, न्यूनतम और अधिकतम प्रदान करते हुए। आप बाद में पैडिंग के साथ चीजों को समायोजित कर सकते हैं - यह सटीक होने की आवश्यकता नहीं है।
Q: Are there any "vulnerabilities" with JOP in compilers?
A: वास्तव में, हाँ, VisualStudio 2015 के साथ, हमने पाया कि Developer Prompt के साथ संकलित किए गए सभी बाइनरी में कुछ अत्यधिक वांछनीय डिस्पैचर गैजेट थे जो हमेशा मौजूद थे! मैं एक वार्ता में इस पर विस्तृत जानकारी शामिल करने वाला था, लेकिन समय की कमी के कारण इसे हटा दिया गया। मैं इसे बाद में अलग से शामिल कर सकता हूं। बुरी खबर यह है कि हमने लगभग एक साल पहले तक, अन्य वर्षों के लिए Visual Studio के अन्य संस्करणों द्वारा बनाए गए सभी बाइनरी का मूल्यांकन किया, और हमने यह दोहराव नहीं देखा। हालांकि उत्कृष्ट डिस्पैचर गैजेट्स का होना अच्छा हो सकता है, वे आवश्यक नहीं हैं, जैसा कि अन्यत्र वर्णित है, हमारे द्वारा पेश किए गए नए दो-गैजेट डिस्पैचर के साथ। इसके अतिरिक्त, यह वास्तव में एक भेद्यता नहीं है, बल्कि केवल यह सुनिश्चित करने का एक तरीका है कि JOP आसानी से सुलभ हो, बशर्ते कुछ वास्तविक भेद्यता हो।
Q: Is JOP ROCKET a standalone tool? Does it work with a debugger?
A: हाँ, यह एक स्टैंडअलोन टूल है जो स्थैतिक विश्लेषण है, और नहीं, इसे Mona जैसे डीबगर के साथ एकीकृत नहीं किया जा सकता। JOP ROCKET के भीतर DLLs को खोजने का एक विकल्प है जो वह पा सकता है, और यह उन्हें खोज सकता है, हालांकि स्पष्ट रूप से अधिकांश सिस्टम Windows DLLs शमन के कारण उपयोग योग्य नहीं होंगे। आप JOP ROCKET से शमन के आधार पर बहिष्कृत या शामिल करवा सकते हैं। चूंकि यह स्थैतिक विश्लेषण है, हालांकि यह वैकल्पिक रूप से DLLs में खोज सकता है, यह कुछ को चूक सकता है जो IAT में नहीं पाए जाते या जिनके स्थान आसानी से JOP ROCKET द्वारा निर्धारित नहीं किए जा सकते। यह स्थैतिक विश्लेषण की एक अंतर्निहित सीमा है। डिफ़ॉल्ट रूप से, JOP ROCKET केवल छवि के माध्यम से ही खोज करेगा, यानी .exe, DLLs में नहीं, समय बचाने के लिए। यदि आप एक बाइनरी का विश्लेषण करने और गैर-सिस्टम DLLs देखने का प्रयास कर रहे हैं, तो उस एप्लिकेशन को स्थापित किया जाना चाहिए, और आपको उसका पथ प्रदान करना चाहिए। यदि आप DLLs से चिंतित नहीं हैं, तो आपको बाइनरी स्थापित करने की आवश्यकता नहीं है।
Q: Can you comment on the following quote: "JOP ROCKET is a tool published in 2019 by [Bri19], that claims to generate full JOP chains in a fully automated way. Upon better inspection, we can see that any real world use-case of its technique is composed by a mixed ROP and JOP chain, where only a little portion of the result is composed by pure JMP Gadget, meanwhile the rest is composed by Gadget that ends with RET instruction, needed for the setup of the JOP chain."
A: दुर्भाग्य से, उपरोक्त JOP की खराब समझ को दर्शाता है। JOP डिस्पैचर गैजेट प्रतिमान का उपयोग करता है, जिसके लिए एक डिस्पैच टेबल और डिस्पैचर गैजेट की आवश्यकता होती है। JOP स्थापित करने के लिए डिस्पैचर गैजेट और डिस्पैच टेबल का पता उनके संबंधित रजिस्टरों में लोड किया जाना चाहिए। हालांकि यह JOP के माध्यम से पूरा किया जा सकता था, अनुकूलता के प्रयोजनों के लिए, यह pop का उपयोग करने वाले दो ROP गैजेट्स के माध्यम से किया गया था। इस प्रकार, केवल दो ROP गैजेट्स से युक्त इस प्रारंभिकरण के बाद, कोई अतिरिक्त ROP गैजेट्स का उपयोग नहीं किया जाता है। उपयोग किए जाने वाले JOP गैजेट्स की संख्या उपयोगकर्ता द्वारा प्रदान किए गए इनपुट के आधार पर एक से दर्जनों तक भिन्न हो सकती है। यहां समस्या उपकरण के साथ नहीं है, बल्कि उपकरण और JOP की गलतफहमी के साथ है। JOP ROCKET वास्तव में वास्तविक-दुनिया के अनुप्रयोगों के लिए उपयुक्त एक्सप्लॉइट प्रदान करता है, यदि आप उचित इनपुट प्रदान करते हैं। वास्तव में, इसका उपयोग लेखक द्वारा पहले पढ़ाए गए एक उन्नत सॉफ्टवेयर एक्सप्लॉयटेशन पाठ्यक्रम में किया गया था, जिसमें छात्रों को विभिन्न JOP एक्सप्लॉइट बनाने के लिए JOP ROCKET का उपयोग करना आवश्यक था। यह निराशाजनक है कि उपरोक्त टिप्पणियां अकादमिक शोध में की गईं, क्योंकि प्रत्येक JOP श्रृंखला के लिए अधिकतम दो ROP गैजेट्स का उपयोग किया जाता है। एकमात्र वास्तविक-दुनिया का JOP एक्सप्लॉइट जिसके बारे में हम जानते हैं जो Exploit_DB पर है, वह हम में से एक, ऑस्टिन बैबकॉक द्वारा है, और जैसा कि उन्होंने हैक इन द बॉक्स एम्स्टर्डम 2021 में समझाया, उनका एक्सप्लॉइट निकटता से दर्शाता है कि JOP ROCKET द्वारा क्या पाया गया था। अधिकांश व्यावहारिक मामलों में, यदि आप सेटअप के लिए दो ROP गैजेट्स का उपयोग करते हैं तो वास्तव में कोई फर्क नहीं पड़ता। कभी-कभी किसी बाइनरी के लिए उपयुक्त JOP गैजेट्स नहीं हो सकते हैं, इस तरह से जो JOP सेटअप के लिए डिस्पैचर गैजेट प्रतिमान के अनुरूप हो। हम बल्कि चाहेंगे कि JOP हर बाइनरी पर संभव हो, संभावित रूप से, फिर इसे 100% शुद्ध JOP रखने की इच्छा से सीमित करें। आखिरकार, JOP की सबसे बड़ी सीमाओं में से एक अपर्याप्त JOP गैजेट्स है। 2024 में लिखते हुए, JOP ROCKET में सक्रिय अपडेट नहीं हो रहे हैं, और किसी भी संभावित नए संस्करण में, जो बहुत अधिक उन्नत होगा और बहुत नए ROP ROCKET के बाद पैटर्न होगा, संभवतः इसमें शुद्ध JOP के लिए एक विकल्प होगा।