
webkit; but pwned
यह प्रोग्राम निश्चित रूप से जासूसी सॉफ्टवेयर नहीं है।
इसे जितनी जल्दी हो सके अपने 64-बिट iOS डिवाइस पर चलाएँ।
आपके अनुपालन को पुरस्कृत किया जाएगा।
[ लाइव संस्करण: totally-not.spyware.lol ]
फ्रंटएंड और WebKit एक्सप्लॉइट /root में हैं।
कर्नेल एक्सप्लॉइट /glue में है।
पोस्ट-एक्सप्लॉइटेशन /glue/dep में है।
DoubleH3lix और Meridian को उनके डायरेक्टरीज़ में क्रमशः make headless और make all के साथ स्वतंत्र रूप से स्टैटिक लाइब्रेरीज़ में बनाया जा सकता है।
फिर इनका उपयोग /glue में payload बनाने के लिए किया जाता है, जो वह बाइनरी है जिसे WebKit एक्सप्लॉइट के बाद JIT से चलाया जाता है। इसे केवल make के साथ बनाया जा सकता है, और यह आवश्यकतानुसार सभी निर्भरताएँ बनाएगा।
और अंत में यह सब WebKit एक्सप्लॉइट के साथ /root में make चलाकर जोड़ा जाता है, जो फिर से आवश्यकतानुसार निर्भरताएँ बनाएगा।
हम मूल रूप से WebKit पैच को 10.x पर बैकपोर्ट करना चाहते थे, लेकिन अंततः हार मान ली।
विवरण के लिए /patch देखें, लेकिन सार यह है:
WebKit बग का एक हिस्सा JSC::DFG::clobberize में गलत भविष्यवाणियाँ थीं, जो मूल रूप से एक विशाल स्विच-केस है। इसका फिक्स कुछ मानों को उन ब्लॉक्स की ओर पुनः रूट करना था जो पहले से अन्य मानों के लिए उपयोग किए जा रहे हैं।
जिन संस्करणों की हमने जाँच की, उनमें कंपाइलर ने उसके लिए जंप टेबल उत्पन्न की थीं, इसलिए हमारा विचार उन सभी जंप टेबल्स को खोजकर पैच करने का होता, क्योंकि सही कोड पहले से मौजूद होता।
समस्या यह है कि जिन मानों पर सब कुछ निर्भर करता है, वे iOS 10 के जीवनकाल में सैकड़ों बार बदल चुके हैं (हाँ, iOS रिलीज़ से कहीं अधिक बार), और कोड में आस-पास कोई लैंडमार्क नहीं दिखता, इसलिए हमारे लिए यह निर्धारित करना लगभग असंभव है कि किन मानों को पैच करना है। :(