2012-03-26 15 views
35

के खिलाफ मेरे ऐप सुरक्षित रखने के तरीके मैं एक Android एप्लिकेशन विकसित करने कर रहा हूँ और मैं इसे (सशुल्क ऐप्लिकेशन) को प्रकाशित करने की योजना बना रहा हूँ। मैंने सुना है कि एंड्रॉइड ऐप्स को समुद्री डाकू करना बहुत आसान है (आईफोन से कहीं ज्यादा आसान)। मैं आपके अनुभव से सोच रहा था या आप क्या जानते हैं, मेरे ऐप की सुरक्षा कैसे बढ़ा सकती है? मुझे पता है कि मैं यह 100% सुरक्षित कभी नहीं प्राप्त कर सकते हैं लेकिन मैं इसे लोगों को यह समुद्री डाकू या इसे अवैध रूप से वितरित किसी भी विचार, अनुभव करने के लिए कठिन बनाना चाहते, टिप्पणी आप साझा कर सकते हैं?चोरी

+0

आपको तकनीकों का एक समूह के साथ जाना होगा और आप अभी भी इसे पूरी तरह से रोकने में सक्षम नहीं होंगे। शुरुआत के लिए 'google play लाइसेंसिंग' और 'कोड obfuscation' का उपयोग करें। मैं लोकप्रिय समुद्री डाकू वेबसाइटों की जांच करने का सुझाव दूंगा और एक क्लिक होस्टर्स से फ़ाइलों को नीचे ले जाने के लिए कहूंगा, लेकिन मुझे यकीन नहीं है कि वे इसे कैसे संभालेंगे। और यह जल्द ही कहीं और वापस आ जाएगा, यह बहुत निराशाजनक है। – stefan

+0

मैं सी ++ का उपयोग करके अपने ऐप का मुख्य भाग बनाने और एंड्रॉइड एनडीके का उपयोग करने की सलाह दूंगा, आप वैध खरीदारों को प्रमाणित करने के लिए नेटवर्क का उपयोग करेंगे। –

उत्तर

64

मैंने एंड्रॉइड के लिए एक मुफ्त एंटी-मैलवेयर ऐप जारी किया, और सुनिश्चित किया कि किसी ने भी हैक की सफलता के लिए यह आवश्यक नहीं था। एंड्रॉइड मार्केट पर फिर से सबसे ज्यादा खतरे में लीक सोर्स कोड, प्रतिलिपि/वितरित पेड एप्स, और री-कीइंग शामिल हैं। मैं उन्हें हल करने के लिए नीचे और रास्ते को समझाता हूं।

सबसे पहले, this paper संकलित कोड को अनपॅक करके और स्रोत कोड को देखकर एंड्रॉइड एप्लिकेशन को रिवर्स-इंजीनियर करने का वर्णन करता है। आप इसे अपने ऐप पर होने से अवरुद्ध नहीं कर पाएंगे। अवधि। इच्छा के साथ कोई व्यक्ति हमेशा आपके स्रोत को देख सकता है अगर उन्हें आपके एपीके की एक प्रति मिलती है (रूट किए गए फोन पर आसानी से उपलब्ध)। अच्छी खबर यह है कि आप अपने कोड के महत्वपूर्ण टुकड़ों को खराब कर सकते हैं जिससे इंजन को रिवर्स करना मुश्किल हो जाता है। Proguard एंड्रॉइड द्वारा प्रदान किया गया एक उपकरण है जो आपको पैकेजिंग के दौरान आपके कोड को खराब करने (कठिन पढ़ने के लिए) देता है। आदेश पढ़ा जा रहा से अपने महत्वपूर्ण कोड को रोकने के लिए, हालांकि, आप एक फ़ाइल है कि एक Activity, Service, या BroadcastReceiver नहीं है करने के लिए सभी कमजोर तरीकों या चर स्थानांतरित करने के लिए की आवश्यकता होगी। पूर्ण तथ्यों के लिए, दस्तावेज़ पढ़ें।

की रक्षा करने के खिलाफ अवैध रूप से कॉपी करें और अपने आवेदन के वितरण, Google Play में कुछ licensing options प्रदान करता है। दुर्भाग्य से, एलवीएल भी पूरी तरह से सुरक्षित नहीं है। इसे कैसे क्रैक करना है (प्री-Google Play) के लिए एक विस्तृत हाउ-टू here उपलब्ध है।

आखिरकार, उपरोक्त पेपर, साथ ही कई विद्वान लेख और ऑनलाइन ब्लॉग बताते हैं कि, एक बार स्रोत कोड (या यहां तक ​​कि obfuscated स्रोत कोड) लीक हो जाने के बाद, एक बार केवल अपने स्वयं के, दुर्भावनापूर्ण कोड, इस्तीफा दे सकते हैं ऐप, और इसे एंड्रॉइड मार्केट पर प्रकाशित करें। यहां अच्छी खबर यह है कि, जब तक कि आपका एंड्रॉइड लाइसेंस कुंजी पासवर्ड आसानी से अनुमानित न हो, या यदि आप इसे किसी और को देते हैं, तो हमलावर एक ही लाइसेंस कुंजी के साथ एक एप्लिकेशन प्रकाशित नहीं कर पाएगा। यह न केवल आपको दोष से बचाता है, बल्कि यह भी ऐसा करेगा कि दुर्भावनापूर्ण एप्लिकेशन आपके मूल एप्लिकेशन (जैसे SharedPreferences) के माध्यम से उपलब्ध डेटा तक नहीं पहुंच सकता है।

सभी सब में, वास्तव में चोरी से अपने आवेदन को सुरक्षित करने के लिए सबसे अच्छा तरीका सही तरीके से कॉन्फ़िगर और Proguard, Google Play Licensure, और आप एक बहुत ही सुरक्षित लाइसेंस कुंजी के साथ अंतिम apk पर हस्ताक्षर करने के लिए उपयोग करने के लिए है।

+4

वाह .. महान जानकारी और बहुत विस्तृत उत्तर। मुझे यह तथ्य पसंद है कि यह एक पेपर द्वारा साबित होता है। मैंने जो सुझाव दिया है उसका पालन करेंगे। मैं अभी भी लोगों को अपने अनुभव को साझा करने के लिए प्रोत्साहित करता हूं – Snake

+6

मैं यह इंगित करना चाहता हूं कि आपको एपीके की एक प्रति प्राप्त करने के लिए रूट डिवाइस की आवश्यकता नहीं है। 'एडीबी खींच com.example.coolappdude'। इसके अलावा, प्रोगार्ड एक जावा बाइटकोड obfuscator है। निर्माता प्रोगार्ड के पास एक गैर-मुक्त कार्यक्रम डेक्सगार्ड है जो एक डाल्विक बाइटकोड ओबफ्यूसेटर है। अपने परावर्तक स्तर के आधार पर एक या दूसरे पर विचार करें। – CatShoes

+0

डैन गैल्पिन ने आई/ओ 2011 में एक महान बात की जो एलवीएल को और अधिक सुरक्षित बनाने के तरीकों से आगे बढ़ता है: http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr

6

Google Play लाइसेंस ढांचे पर एक नजर है।

http://developer.android.com/guide/market/licensing/index.html

यह आपका सबसे अच्छा विकल्प है।

Google Play लाइसेंस एक नेटवर्क आधारित सेवा है जो एक आवेदन क्वेरी एक विश्वसनीय Google निर्धारित करने के लिए आवेदन वर्तमान डिवाइस उपयोगकर्ता के लिए लाइसेंस प्राप्त है खेलते हैं लाइसेंसिंग सर्वर देता है। लाइसेंसिंग सेवा गूगल की क्षमता पर आधारित है निर्धारित करने के लिए किसी विशेष उपयोगकर्ता किसी दिए गए आवेदन का उपयोग करने के लिए लाइसेंस प्राप्त है कि क्या प्ले लाइसेंसिंग सर्वर। Google Play उपयोगकर्ता को लाइसेंस प्राप्त करने पर विचार करता है यदि उपयोगकर्ता एप्लिकेशन का रिकॉर्ड किया गया खरीदार है।

+0

मैंने सुना है कि Google लाइसेंसिंग (ऐप साइनिंग के माध्यम से) वास्तव में बेकार है। स्वचालित उपकरण हैं, जो ऐप डाउनलोड करते हैं, लाइसेंस हटाते हैं और इसे एक नए उपयोगकर्ता के साथ एक क्लिक में साइन इन करते हैं (मैंने इसे फ़ोरम में से एक में पढ़ा है) .. मैं निश्चित रूप से लाइसेंसिंग का उपयोग करूंगा लेकिन मुझे रक्षा की एक और परत चाहिए .. – Snake

+1

ऐप साइनिंग तंत्र को बहिष्कृत किया गया है। नई लाइसेंसिंग प्रणाली नेटवर्क आधारित और काफी ठोस है। –

8

यदि ऐप को पाइरेट किया गया है तो आप सर्वर/अक्षम कार्यक्षमता/सर्वर को रिपोर्ट करने के लिए obfuscation के साथ संयुक्त छेड़छाड़ जांच जोड़ सकते हैं। मैं कठोर obfuscation के लिए DexGuard का उपयोग करें।

छेड़छाड़ की जाँच करता है

  • इंस्टालर एप्लिकेशन - उपयोग पैकेज प्रबंधक सुनिश्चित करने के लिए स्थापना एप्लिकेशन चलाएं/अमेज़न app की दुकान
  • एम्यूलेटर जांच है - भांजीमार लक्षण के लिए प्रणाली गुण चेक एप्लिकेशन एमुलेटर पर चलाया जा रहा है जो देव के बाहर/हमले का संकेत हो सकता छेड़छाड़
  • डीबग करने की जांच - पैकेज प्रबंधक का प्रयोग करें डीबग ध्वज की जाँच करने के, इस उत्पाद में बंद होना चाहिए ताकि/हमले का संकेत हो सकता छेड़छाड़
  • हस्ताक्षर प्रमाण पत्र की जांच - करने के लिए पैकेज प्रबंधक का प्रयोग करें सत्यापित एप्लिकेशन को आपके डेवलपर प्रमाणपत्र द्वारा हस्ताक्षरित है (यह अगर किसी को पैक और repacked/एप्लिकेशन इस्तीफा दे दिया टूट जाएगा)

अद्यतन: इस सवाल का जवाब देने के बाद से, मैं छेड़छाड़ का पता लगाने पर एक अधिक detailed article लिखा है।

+0

धन्यवाद, क्या आपके पास कोड उदाहरण हैं? मैं obfuscation – Snake

+0

के लिए प्रोगार्ड का उपयोग करता हूं इस पुस्तक में कुछ उदाहरण हैं http://www.packtpub.com/android-security-cookbook/book * अस्वीकरण मैंने सख्त अध्याय लिखा है * आप पुस्तक के समर्थन अनुभाग पर कोड नमूने मुक्त डाउनलोड कर सकते हैं वेबसाइट। – scottyab

+0

@scottyab क्या यह वैध उपयोगकर्ता की भुगतान के बाद सॉफ़्टवेयर का उपयोग करने में असमर्थ होने की संभावना में काफी वृद्धि नहीं करता है? –

संबंधित मुद्दे