एंड्रॉइड ऐप्स में सर्टिफिकेट पिनिंग की बढ़ती स्वीकार्यता को देखना बहुत अच्छा है। जब मुझे कोई ऐसा ऐप मिलता है जो प्रॉक्सी अनुरोधों का प्रयास करते समय कनेक्शन त्रुटियां उत्पन्न करता है, तो मुझे गहराई से जानने में रुचि हो जाती है। ऐसा ही मामला था जब मैंने हाल ही में सबवे ऐप का उपयोग किया था। एपीके को उलटने से कुछ अन्य दिलचस्प निष्कर्षों के बीच सर्टिफिकेट पिनिंग का पता चला।
अनुरोधों को प्रॉक्सी करते समय ऐप शुरू करने से यह त्रुटि हुई:
पिन करना बाईपास करने के लिए काफी सरल है। मैंने ऐप को डीकंपाइल करके और कीवर्ड पिन करने के लिए स्रोत कोड का विश्लेषण करके शुरुआत की। मुझे वास्तव में लागू होने वाली दो अलग-अलग कक्षाओं में पिनिंग कार्यान्वयन मिला X509ट्रस्टमैनेजर. यहां पिनिंग लागू करने वाली विधियों में से एक है:
// Code removed at request of Subway leadership
इसे बायपास करना उपरोक्त विधि में पिनिंग कोड को छोड़ने के लिए स्माली कोड में रिटर्न स्टेटमेंट जोड़ने जितना आसान था। के जोड़ पर ध्यान दें वापसी-शून्य नीचे दिया गया कथन:
// Code removed at request of Subway leadership
ऐप को पुनः संकलित करने और इंस्टॉल करने के बाद, मैं यह नई त्रुटि देखकर आश्चर्यचकित रह गया:
सबवे अपने एपीके को उलटने से रोकने के लिए एक कस्टम ऐप हस्ताक्षर सत्यापन प्रक्रिया का उपयोग कर रहा था। इस प्रक्रिया के उल्लेखों के लिए स्रोत का पता लगाते हुए, मैंने इसे निम्नलिखित विधि से खोजा:
// Code removed at request of Subway leadership
यह रिवर्स इंजीनियरिंग को रोकने का एक दिलचस्प प्रयास था, हालांकि वास्तव में इससे केवल थोड़ी देरी हुई। इस प्रक्रिया को बायपास करने के लिए, मैंने विधि के निष्पादन को छोड़ने के लिए एक और लाइन जोड़ दी वापसी-शून्य लाइन, उपरोक्त पिनिंग बायपास प्रक्रिया के समान।
// Code removed at request of Subway leadership
ऐप को पुनः संकलित करने और इंस्टॉल करने के बाद, मैं सफलतापूर्वक प्रॉक्सी अनुरोध करने में सक्षम था:
अपने शोध के दौरान, मैं लड़खड़ा गया यह रेडिट पोस्ट. जाहिर तौर पर, सबवे यह भी निर्धारित कर रहा था कि उपयोगकर्ता का डिवाइस रूट किया गया था या नहीं। मैंने स्रोत में चारों ओर खोज की और रूट डिटेक्शन विधियों के उल्लेखों की पुष्टि की।
// Code removed at request of Subway leadership
यह सुरक्षा को बहुत गंभीरता से लेने वाले ऐप का एक बेहतरीन उदाहरण है, लेकिन मैं रूट चेकिंग प्रक्रिया के पीछे के तर्क के बारे में निश्चित नहीं हूं। हालाँकि प्रमाणपत्र पिनिंग और हस्ताक्षर सत्यापन तकनीक आम तौर पर एक अच्छा विचार है, लेकिन वे केवल रिवर्स इंजीनियरिंग प्रक्रिया को थोड़ा बाधित करते हैं।