एपीके फ़ाइल के रिवर्स इंजीनियरिंग से कैसे बचें?


764

मैं एंड्रॉइड के लिए एक भुगतान प्रसंस्करण ऐप विकसित कर रहा हूं , और मैं किसी हैकर को एपीके फ़ाइल से किसी भी संसाधन, संपत्ति या स्रोत कोड तक पहुंचने से रोकना चाहता हूं ।

यदि कोई .apk एक्सटेंशन को .zip में बदलता है तो वे इसे अनज़िप कर सकते हैं और आसानी से सभी ऐप के संसाधनों और परिसंपत्तियों तक पहुँच सकते हैं , और dex2jar और एक जावा डिकंपाइलर का उपयोग करके , वे स्रोत कोड का भी उपयोग कर सकते हैं। इंजीनियर को एंड्रॉइड एपीके फ़ाइल को उल्टा करना बहुत आसान है - अधिक जानकारी के लिए स्टैक ओवरफ्लो प्रश्न उल्टा इंजीनियरिंग को एपीके फ़ाइल से प्रोजेक्ट में देखें

मैंने एंड्रॉइड एसडीके के साथ प्रदान किए गए प्रोगार्ड टूल का उपयोग किया है। जब मैं इंजीनियर को एक हस्ताक्षरित कीस्टोर और प्रोगार्ड का उपयोग करके उत्पन्न की गई एपीके फ़ाइल को उल्टा करता हूं, तो मुझे मोटे कोड प्राप्त होते हैं।

हालांकि, एंड्रॉइड घटकों के नाम अपरिवर्तित रहते हैं और कुछ कोड, जैसे ऐप में उपयोग किए जाने वाले कुंजी-मान अपरिवर्तित रहते हैं। Proguard प्रलेखन के अनुसार उपकरण मैनिफ़ेस्ट फ़ाइल में उल्लिखित घटकों को बाधित नहीं कर सकता है।

अब मेरे प्रश्न हैं:

  1. मैं Android APK के रिवर्स इंजीनियरिंग को पूरी तरह से कैसे रोक सकता हूं ? क्या यह संभव है?
  2. मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?
  3. क्या हैकिंग को अधिक कठिन या असंभव बनाने का एक तरीका है? अपनी एपीके फ़ाइल में स्रोत कोड की सुरक्षा के लिए मैं और क्या कर सकता हूं?

120
ऐसा लगता है कि आप "भुगतान द्वारा सुरक्षा" का उपयोग कर रहे हैं यदि आपकी भुगतान प्रसंस्करण योजना ग्राहक के बचे हुए गुप्त के संचालन पर निर्भर करती है।
पीटरजे

43
क्या आपने C / C ++ में कोड के महत्वपूर्ण भागों को लिखने और उन्हें संकलित पुस्तकालय के रूप में जोड़ने पर विचार किया है? उन्हें असेंबली कोड में डिसाइड किया जा सकता है, लेकिन असेंबली से एक बड़े लाइब्रेरी को रिवर्स-इंजीनियरिंग करना बेहद टाइमकोन्सुमिंग है।
सिंह


60
किसी भी डिजिटल संपत्ति बनाने के मूल मुद्दे में आपका स्वागत है। हैकर्स मशीन इंस्ट्रक्शन लेवल तक नीचे जा सकते हैं, इसलिए अगर कोई कंप्यूटर फाइल को पढ़ सकता है तो उसे ओपन / कॉपी किया जा सकता है, कोई भी मात्रा में आपत्ति या डीआरएम कभी भी एक निर्धारित हैकर को पूरी तरह से रोक नहीं सकता है। यदि आपको सुरक्षा की आवश्यकता है, तो सुनिश्चित करें कि निजी कुंजी कभी भी स्रोत में नहीं हैं, और डिज़ाइन चरण में पता है कि केवल अलगाव (रिमोट और / या समर्पित हार्डवेयर) कभी भी उनकी रक्षा कर सकते हैं।
कीथ

16
ध्यान दें कि आपका भुगतान प्रसंस्करण ऐप क्या करता है, इसके आधार पर विनियामक और कानूनी नीति हो सकती है जो आपके ऐप को प्रभावित करती है और संभावित रूप से आपको गंभीर दंड दे सकती है: पीसीआई अनुपालन देखें, pcicomplianceguide.org/pcifaqs.php511 से शुरू करें ।
१२:१२ पर ब्लूमप्लेट

जवाबों:


371

 1. मैं एंड्रॉइड एपीके के रिवर्स इंजीनियरिंग से पूरी तरह कैसे बच सकता हूं? क्या यह संभव है?

AFAIK, रिवर्स इंजीनियरिंग के पूर्ण परिहार के लिए कोई चाल नहीं है।

और @inazaruk द्वारा बहुत अच्छी तरह से कहा गया है: आप अपने कोड के लिए जो भी करते हैं, एक संभावित हमलावर इसे किसी भी तरह से बदलने में सक्षम है या वह इसे संभव पाता है । आप मूल रूप से अपने एप्लिकेशन को संशोधित होने से नहीं बचा सकते। और आपके द्वारा वहां रखी गई किसी भी सुरक्षा को अक्षम / हटाया जा सकता है।

 2. मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?

हालांकि हैकिंग को कठिन बनाने के लिए आप अलग-अलग तरकीबें अपना सकते हैं। उदाहरण के लिए, obfuscation का उपयोग करें (यदि यह जावा कोड है)। यह आमतौर पर रिवर्स इंजीनियरिंग को काफी धीमा कर देता है।

 3. क्या हैकिंग को अधिक सख्त या असंभव बनाने का एक तरीका है? अपनी एपीके फ़ाइल में स्रोत कोड की सुरक्षा के लिए मैं और क्या कर सकता हूं?

जैसा कि सभी कहते हैं, और जैसा कि आप शायद जानते हैं, कोई 100% सुरक्षा नहीं है। लेकिन एंड्रॉइड के लिए शुरू करने की जगह, जिसे Google ने बनाया है, वह है ProGuard। यदि आपके पास साझा पुस्तकालयों को शामिल करने का विकल्प है , तो आप फ़ाइल आकार, एकीकरण, आदि को सत्यापित करने के लिए C ++ में आवश्यक कोड शामिल कर सकते हैं। यदि आपको हर बिल्ड पर अपने एपीके के लाइब्रेरी फ़ोल्डर में एक बाहरी देशी पुस्तकालय जोड़ने की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं। नीचे दिए गए सुझाव से।

लाइब्रेरी को मूल लाइब्रेरी पथ में रखें, जो आपके प्रोजेक्ट फ़ोल्डर में "लिबास" के लिए डिफॉल्ट करता है। यदि आपने 'armeabi' लक्ष्य के लिए मूल कोड बनाया है तो इसे libs / armeabi के अंतर्गत रखें । यदि इसे armeabi-v7a के साथ बनाया गया था, तो इसे libs / armeabi-v7a के अंतर्गत रखें

<project>/libs/armeabi/libstuff.so

1
भुगतान लेन-देन के लिए मैंने ISO 8585 मानक का उपयोग किया है, अभी इस मानक के लिए स्कीमा जावा के HashMap संग्रह का उपयोग करके कुंजी-मूल्य जोड़ी में है और जब मैं APK पर रिवर्स इंजीनियरिंग करता हूं तो मुझे सभी स्कीमा मिल जाएंगे। यदि स्कीमा से बचने के लिए यह संभव है रिवर्स इंजीनियरिंग के माध्यम से उजागर। क्या इस मामले में शेयर पुस्तकालयों का आपका अंतिम सुझाव उपयोगी हो सकता है? Doy आपके पास कोई लिंक है ताकि मैं Android में शेयर पुस्तकालयों के लिए एक्सपोज़र पा सकूं।
sachin003

4
कैसे कोड में अपने तार एन्क्रिप्ट करने और उन्हें रनटाइम पर डिक्रिप्ट करने के बारे में? यदि आप दूरस्थ सर्वर पर डिक्रिप्शन करते हैं, जैसे अन्य लोगों ने सुझाव दिया है, तो आपको यह समस्या नहीं आती है कि स्रोतों में डिक्रिप्शन कुंजी है।
कुत्स्कम

हां, एन्क्रिप्शन तरीका है, लेकिन यह सुनिश्चित नहीं है कि इसे नोट किया जाए। यदि मैं उन्हें डिक्रिप्ट करने के लिए स्ट्रिंग को एन्क्रिप्ट कर रहा हूं, तो मुझे कोड में एक अद्वितीय आईडी की आवश्यकता है। और अगर कोई इसे विघटित करने में सक्षम है तो यूनिक आईडी प्राप्त करना बहुत आसान होगा।
भावेश पाटडिया

आपने संपादित सामान क्यों जोड़ा ? यह सब नियमित है।
मोहम्मद अजहरुद्दीन शेख


126

AFAIK, आप फ़ाइलों को अभी / रक्षा निर्देशिका में संरक्षित नहीं कर सकते हैं क्योंकि वे अभी संरक्षित हैं।

हालाँकि, ऐसे चरण हैं जो आप अपने स्रोत कोड की रक्षा के लिए ले सकते हैं, या कम से कम यह सब कुछ नहीं तो क्या करता है।

  1. ProGuard जैसे उपकरणों का उपयोग करें। ये आपके कोड को बाधित कर देंगे, और अगर असंभव नहीं है, तो विघटित होने पर पढ़ना कठिन बना देगा।
  2. ऐप से सेवा के सबसे महत्वपूर्ण भागों को स्थानांतरित करें, और एक वेबसर्विस में, PHP जैसी सर्वर साइड भाषा के पीछे छिपा हुआ है। उदाहरण के लिए, यदि आपके पास एक एल्गोरिथ्म है जो आपको लिखने के लिए एक मिलियन डॉलर ले गया है। आप स्पष्ट रूप से नहीं चाहते कि लोग इसे आपके ऐप से चुराएं। एल्गोरिथ्म को स्थानांतरित करें और इसके पास एक दूरस्थ सर्वर पर डेटा को संसाधित करें, और डेटा के साथ इसे प्रदान करने के लिए एप्लिकेशन का उपयोग करें। या एनडीके का उपयोग उन्हें मूल रूप से .so फ़ाइलों में लिखने के लिए करते हैं, जिनमें एपेक की तुलना में विघटित होने की संभावना बहुत कम होती है। मुझे नहीं लगता कि .so फ़ाइलों के लिए एक डिकम्पॉइलर भी अब तक मौजूद है (और अगर ऐसा किया भी, तो यह जावा डीकॉम्पिलर के रूप में अच्छा नहीं होगा)। इसके अलावा, जैसा कि @nikolay ने टिप्पणियों में उल्लेख किया है, आपको सर्वर और डिवाइस के बीच बातचीत करते समय SSL का उपयोग करना चाहिए।
  3. डिवाइस पर मान संग्रहीत करते समय, उन्हें एक कच्चे प्रारूप में संग्रहीत न करें। उदाहरण के लिए, यदि आपके पास एक गेम है, और आप उपयोगकर्ता द्वारा साझा किए गए गेम मुद्रा में राशि साझा कर रहे हैं मान लेते हैं कि यह 10000सिक्के हैं। 10000सीधे बचाने के बजाय , इसे एक एल्गोरिथ्म का उपयोग करके सहेजें ((currency*2)+1)/13। इसलिए इसके बजाय 10000, आप साझा 1538.53846154किए गए सम्मेलनों में बचत करें। हालाँकि, उपर्युक्त उदाहरण सही नहीं है, और आपको एक समीकरण के साथ आने के लिए काम करना होगा जो कि राउंडिंग त्रुटियों आदि के लिए मुद्रा नहीं खोएगा।
  4. आप सर्वर साइड कार्यों के लिए एक समान काम कर सकते हैं। अब एक उदाहरण के लिए, चलिए वास्तव में आपके भुगतान प्रसंस्करण ऐप को लेते हैं। मान लीजिए कि उपयोगकर्ता को भुगतान करना है $200$200सर्वर को एक कच्चा मान भेजने के बजाय , छोटे, पूर्वनिर्धारित, मान जोड़ने वाली श्रृंखला भेजें $200। उदाहरण के लिए, आपके सर्वर पर एक फ़ाइल या तालिका है जो मूल्यों के साथ शब्दों को समान करती है। तो चलिए बताते हैं कि , और से Charlieमेल खाती है । इसलिए भेजने के बजाय , आप चार बार भेज सकते हैं और$47John$3$200CharlieJohnचार बार। सर्वर पर, उनकी व्याख्या करें कि उनका क्या मतलब है और इसे जोड़ें। यह किसी हैकर को आपके सर्वर पर मनमाने मूल्य भेजने से रोकता है, क्योंकि वे नहीं जानते कि कौन सा शब्द किस मूल्य से मेल खाता है। सुरक्षा के अतिरिक्त उपाय के रूप में, आपके पास इसके लिए बिंदु 3 के समान एक समीकरण हो सकता है, और हर nदिन कीवर्ड बदल सकते हैं ।
  5. अंत में, आप अपने ऐप में रैंडम बेकार सोर्स कोड डाल सकते हैं, जिससे हैकर को एक हैस्टैक में सुई लग जाए। इंटरनेट से स्निपेट्स युक्त यादृच्छिक कक्षाएं डालें, या फ़ाइबोनैचि अनुक्रम जैसी यादृच्छिक चीज़ों की गणना करने के लिए बस कार्य करता है। सुनिश्चित करें कि ये कक्षाएं संकलित हैं, लेकिन ऐप की वास्तविक कार्यक्षमता द्वारा उपयोग नहीं किया जाता है। इन झूठी कक्षाओं में पर्याप्त जोड़ें, और हैकर को आपका वास्तविक कोड खोजने में कठिन समय होगा।

सभी में, आपके ऐप को 100% सुरक्षित करने का कोई तरीका नहीं है। आप इसे कठिन बना सकते हैं, लेकिन असंभव नहीं। आपके वेब सर्वर से छेड़छाड़ की जा सकती है, हैकर आपके कीवर्ड को कई लेन-देन राशियों की निगरानी कर सकता है और आपके द्वारा भेजे जाने वाले कीवर्ड, हैकर श्रमसाध्य रूप से स्रोत से गुजर सकता है और यह पता लगा सकता है कि कौन सा कोड एक डमी है।

आप केवल वापस लड़ सकते हैं, लेकिन कभी जीत नहीं सकते।


136
अपने सर्वर पर भेजे जाने वाले मानों के साथ ट्रिक्स करने के बजाय, एसएसएल का उपयोग करें और सर्वर प्रमाणपत्र को ठीक से सत्यापित करें। अस्पष्टता से सुरक्षा आमतौर पर एक बुरा विचार है।
निकोले एलेनकोव

48
आप अपने ऐप में रैंडम बेकार सोर्स कोड डाल सकते हैं । यह वास्तव में भी मदद नहीं कर सकता। यह केवल आपके आवेदन को प्रस्फुटित करेगा, जबकि इसे बनाए रखना कठिन होगा।
अनिरुद्ध रामनाथन

4
आप बेकार कोड का भी उपयोग कर सकते हैं और सर्वर को डेटा भेजेंगे जो इसे छोड़ देगा। झूठी सुरक्षा हो सकती है, लेकिन संभावित हैकर के लिए गधे में दर्द, है ना?
बेनोइट डफेज

19
यदि आपका एल्गोरिथ्म एक मिलियन डॉलर का है, तो सिर्फ इसलिए कि .soफाइलों के लिए कोई डिकंपाइलर नहीं है, इसका मतलब यह नहीं है कि मैं असेंबली नहीं पढ़ सकता हूं :) इनमें से अधिकांश एक ही जाल में गिरते हैं, बस खुद को ठीक से बचाने के बजाय बाधा डालते हैं । यदि केवल एक हमलावर के समय का पालन करने के लायक नहीं है, तो Obfuscation काम करता है, इसलिए यदि आप इन तकनीकों पर कुछ बनाते हैं, तो आप बेहतर उम्मीद करेंगे कि वे लोकप्रिय न हों, अन्यथा आप खराब हो गए हैं क्योंकि अचानक आपका कोडबेस अप्राप्य है और यह भारी बदलाव की जरूरत है।
फॉशी

23
मुझे नहीं लगता कि इस उत्तर का इतना उच्च स्कोर क्यों है। 3. और 4. एक के लिए सिर्फ सादा मूर्खतापूर्ण हैं और बिना किसी सुरक्षा के राशि होगी।
मैटी विर्ककुनेन 22

117

कंप्यूटिंग के इतिहास में किसी भी बिंदु पर सॉफ़्टवेयर की रिवर्स-इंजीनियरिंग को रोकने के लिए कभी संभव नहीं हुआ है जब आप अपने हमलावर को इसकी एक प्रतिलिपि देते हैं। इसके अलावा, अधिकांश संभावना में, यह कभी भी संभव नहीं होगा

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

इसके अलावा, यदि आपका प्राथमिक लक्ष्य ऐप पाइरेसी को रोकना है : तो परेशान न हों। आप पहले से ही इस समस्या पर अधिक समय और पैसा जला चुके हैं, किसी भी एंटी-पायरेसी उपाय की तुलना में संभवतः आपको बचाने की उम्मीद कर सकता है। इस समस्या को हल करने के लिए निवेश पर वापसी इतनी कम है कि इसके बारे में सोचने का भी कोई मतलब नहीं है।


21
पहला पैराग्राफ सबसे अच्छा उत्तर है। यदि आपका हमलावर हार्डवेयर को नियंत्रित करता है, तो वे हमेशा आपके सॉफ़्टवेयर को किसी भी तरह से हराने में सक्षम होंगे। कुछ भी है कि वास्तव में संरक्षित किया जाना चाहिए आप नियंत्रण हार्डवेयर पर रहना चाहिए, यह उतना ही सरल है। और आरओआई के बारे में अंतिम पैराग्राफ के रूप में अच्छी तरह से हाजिर है।
डैनियल प्राइडेन

88

ऐप की सुरक्षा का पहला नियम: कोई भी मशीन, जिसके लिए एक हमलावर को अप्रतिबंधित भौतिक या इलेक्ट्रॉनिक पहुंच प्राप्त होती है, वह अब आपके हमलावर से संबंधित है, भले ही वह वास्तव में वह स्थान हो या आपने उसके लिए भुगतान किया हो।

ऐप सुरक्षा का दूसरा नियम: कोई भी सॉफ़्टवेयर जो भौतिक सीमाओं को छोड़ देता है जिसके अंदर एक हमलावर घुस नहीं सकता है अब आपके हमलावर के अंतर्गत आता है, भले ही आपने इसे कोड करने में कितना समय बिताया हो।

तीसरा नियम: कोई भी जानकारी जो उन्हीं भौतिक सीमाओं को छोड़ती है जो एक हमलावर में प्रवेश नहीं कर सकती है वह आपके हमलावर से संबंधित है, चाहे वह आपके लिए कितना भी मूल्यवान क्यों न हो।

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

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

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

इसके बजाय, आपको यह सुनिश्चित करने की कोशिश करनी चाहिए कि कोई हमलावर आपके कोड के साथ कुछ भी नहीं कर सकता है, फिर चाहे उसके लिए यह कितना भी आसान क्यों न हो, उसे इसकी एक स्पष्ट प्रति प्राप्त करनी होगी। इसका मतलब है कि, कोई हार्ड-कोडेड रहस्य नहीं है, क्योंकि कोड के भवन से बाहर निकलते ही वे रहस्य गुप्त नहीं रह जाते हैं।

आपके द्वारा हार्ड-कोड किए गए इन कुंजी-मूल्यों को पूरी तरह से एप्लिकेशन के स्रोत कोड से हटा दिया जाना चाहिए। इसके बजाय, उन्हें तीन स्थानों में से एक में होना चाहिए; डिवाइस पर वाष्पशील मेमोरी, जो एक हमलावर को ऑफ़लाइन प्रतिलिपि प्राप्त करने के लिए कठिन (लेकिन अभी भी असंभव नहीं है); स्थायी रूप से सर्वर क्लस्टर पर, जिस पर आप लोहे की मुट्ठी के साथ पहुंच को नियंत्रित करते हैं; या आपके डिवाइस या सर्वर से असंबंधित किसी दूसरे डेटा स्टोर में, जैसे कि एक भौतिक कार्ड या आपके उपयोगकर्ता की यादों में (मतलब यह अंततः वाष्पशील मेमोरी में होगा, लेकिन यह लंबे समय तक नहीं होना चाहिए)।

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

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

एक बार सत्यापित हो जाने के बाद, सर्वर चैनल पर एक टोकन वापस भेजता है। टोकन केवल सुरक्षित सत्र के भीतर उपयोगी है, या तो यादृच्छिक शोर से बना है या सत्र पहचानकर्ताओं की एक एन्क्रिप्टेड (और इस तरह से सत्यापित) प्रति है, और क्लाइंट एप्लिकेशन को किसी भी अनुरोध के हिस्से के रूप में इस टोकन को सर्वर पर भेजना होगा। कुछ करने के लिए। क्लाइंट एप्लिकेशन कई बार ऐसा करेगा, क्योंकि यह पैसे, संवेदनशील डेटा, या ऐसी किसी भी चीज़ को शामिल नहीं कर सकता है जो स्वयं के लिए हानिकारक हो सकती है; इसके बजाय सर्वर को यह कार्य करने के लिए कहना चाहिए। क्लाइंट एप्लिकेशन डिवाइस पर लगातार मेमोरी के लिए कोई संवेदनशील जानकारी कभी नहीं लिखेगा, कम से कम सादे पाठ में नहीं; क्लाइंट किसी भी स्थानीय डेटा को एन्क्रिप्ट करने के लिए एक सममित कुंजी के लिए सुरक्षित चैनल पर सर्वर से पूछ सकता है, जिसे सर्वर याद रखेगा; बाद के सत्र में क्लाइंट सर्वर से उसी कुंजी के लिए अस्थिर मेमोरी में उपयोग के लिए डेटा को डिक्रिप्ट करने के लिए कह सकता है। वह डेटा केवल कॉपी नहीं होगा; कुछ भी ग्राहक भंडार को सर्वर में किसी रूप में प्रेषित किया जाना चाहिए।

जाहिर है, यह आपके एप्लिकेशन को इंटरनेट एक्सेस पर बहुत अधिक निर्भर करता है; क्लाइंट डिवाइस सर्वर द्वारा उचित कनेक्शन और प्रमाणीकरण के बिना अपने किसी भी बुनियादी कार्य को नहीं कर सकता है। फेसबुक से अलग नहीं, सच में।

अब, कंप्यूटर जो हमलावर चाहता है, वह आपका सर्वर है, क्योंकि यह नहीं है और क्लाइंट ऐप / डिवाइस वह चीज है जो उसे पैसा दे सकती है या अन्य लोगों को उसके आनंद के लिए दर्द का कारण बना सकती है। ठीक है; आप अपने रुपये खर्च करने के पैसे और सर्वर को सुरक्षित करने के प्रयास में सभी ग्राहकों को सुरक्षित करने की तुलना में बहुत अधिक धमाकेदार हैं। सर्वर सभी प्रकार के फायरवॉल और अन्य इलेक्ट्रॉनिक सुरक्षा के पीछे हो सकता है, और इसके अलावा स्टील, कंक्रीट, कीकार्ड / पिन एक्सेस और 24 घंटे की वीडियो निगरानी के साथ भौतिक रूप से सुरक्षित किया जा सकता है। सर्वर पर किसी भी तरह की पहुंच हासिल करने के लिए आपके हमलावर को वास्तव में बहुत परिष्कृत होना चाहिए, और आपको इसके बारे में तुरंत पता होना चाहिए।

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


1
सही जवाब !! मैं बस कुछ एन्क्रिप्टेड टोकन के साथ सर्वर से डेटा प्राप्त करने के अपने तरीके से प्यार करता था, मुझे लगता है कि यह उसके बाद डिकोड करना असंभव है।
धर्म

मुझे पता है कि यह थोड़ा देर से है लेकिन सर्वर के भाग तक पहुँचने के बारे में क्या है। Microsoft azure जैसी सेवाएँ आपको उनके सर्वर तक पहुँचने के लिए कुछ इस तरह प्रदान करती हैं: MobileServiceClient mClient = new MobileServiceClient ("MobileServiceUrl", // उपरोक्त साइट URL "AppKey" के साथ बदलें, // Application Key इस से बदलें) और बहुत अधिक किसी को भी उस तक पहुँच सकते हैं जो अपने सर्वर के अंत तक इसे संपादित कर सकते हैं
edwinj

@edwinj - कंप्यूटर विज्ञान में कोई समस्या नहीं जो अप्रत्यक्ष की एक और परत के साथ हल नहीं हो सकती। आपका स्निपेट एक एज़्योर मोबाइल क्लाइंट सेवा तक पहुंचने के लिए मूल विचार देता है; यह Microsoft के सामने के दरवाजे के "ड्राइव-बाय्स" के खिलाफ एक बुनियादी स्तर की सुरक्षा प्रदान करता है। आप किसी भी सेवा कॉल पर सत्र कुंजी (मूल रूप से एन्क्रिप्टेड टोकन क्या है) की आवश्यकता के रूप में अतिरिक्त परतें जोड़ सकते हैं, और उन्हें कुंजी प्राप्त करने के लिए, उन्हें पहले क्रेडेंशियल्स और एन्क्रिप्शन योजना के ज्ञान के संयोजन के साथ प्रमाणित करना होगा।
कीथ

1
सबसे अच्छे जवाबों में से एक।
debo.stackoverflow

64

 1. मैं एंड्रॉइड एपीके के रिवर्स इंजीनियरिंग से पूरी तरह कैसे बच सकता हूं? क्या यह संभव है?

यह संभव नहीं है

 2. मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?

जब कोई .apk एक्सटेंशन को .zip में बदलता है, तो अनज़िप करने के बाद, किसी को आसानी से सभी संसाधन मिल सकते हैं ( मैनिफेस्ट.एक्सएमएल को छोड़कर ), लेकिन एपीकेटी के साथ किसी को भी प्रकट फ़ाइल की वास्तविक सामग्री मिल सकती है। फिर से, एक नहीं।

 3. क्या हैकिंग को अधिक सख्त या असंभव बनाने का एक तरीका है? अपनी एपीके फ़ाइल में स्रोत कोड की सुरक्षा के लिए मैं और क्या कर सकता हूं?

फिर, नहीं, लेकिन आप कुछ स्तर तक रोक सकते हैं, अर्थात्।

  • वेब से एक संसाधन डाउनलोड करें और कुछ एन्क्रिप्शन प्रक्रिया करें
  • पूर्व-संकलित मूल लाइब्रेरी (C, C ++, JNI, NDK) का उपयोग करें
  • हमेशा कुछ हैशिंग ( MD5 / SHA कुंजियाँ या कोई अन्य तर्क) करें

यहां तक ​​कि Smali, लोग आपके कोड के साथ खेल सकते हैं। सब सब में, यह सार्वजनिक नहीं है।


7
@TrevorBoydSmith: जब OS खुला स्रोत और रूटेबल हो तो एन्क्रिप्शन बहुत मदद नहीं करता है। एपीके को डिक्रिप्ट करने और सामान चलाने के लिए सिस्टम को एक कुंजी की आवश्यकता होती है। और अगर सिस्टम में एक कुंजी है, और मेरे पास सिस्टम की अनफ़िट की गई पहुंच है, तो मुझे पता है कि कुंजी को कहां ढूंढना है और इसे प्राप्त कर सकते हैं। मतलब मेरे पास अब चाबी भी है
22

4
@TrevorBoydSmith: यह "कैसे करना है" भाग है, हालांकि, यह पूरे विचार को मारता है। सीधे एन्क्रिप्टेड कोड को निष्पादित करने का कोई तरीका नहीं है; कुछ बिंदु पर, डिक्रिप्ट कोड उपलब्ध होना चाहिए। जिसका अर्थ है (1) एक कुंजी होनी चाहिए (यानी, रूट के रूप में, शायद इसकी पहुंच है), और (2) मैं रैम में स्पष्ट प्रति भी ढूंढ सकता हूं और वैसे भी एन्क्रिप्शन की चिंता नहीं कर सकता हूं।
cHao

3
@TrevorBoydSmith: समस्या यह है, इस मामले में आप केवल लागत को बढ़ा नहीं सकते हैं ताकि यह सार्थक न हो। हम यहां ब्रूट-फोर्सिंग कीज़ के बारे में बात नहीं कर रहे हैं; हम पहले से ही उनके बारे में बात कर रहे हैं - ओएस में चाबियाँ हैं, और हमारे पास ओएस है। ठीक करने का एकमात्र तरीका ओएस को नपुंसक बनाना होगा। उसके साथ अच्छा भाग्य; यहां तक ​​कि Apple इसे प्रबंधित नहीं कर सकता। :)
cHao

3
@TrevorBoydSmith: मुझे नहीं लगता कि सामान्य रूप से लागत बढ़ाना असंभव है। मुझे लगता है (और कहते हैं), विशेष रूप से , कि आपका सुझाव असंभव है - क्योंकि यह है । MATLAB Android नहीं है, और कुछ आज़ादी है जो Android नहीं करता है। विशेष रूप से, इसकी ओर से मोटापा है; एन्क्रिप्शन कुंजी को छिपाना बहुत कठिन है। Android ऐसा नहीं कर सकता। जिस किसी के पास स्रोत कोड होता है उसे पता होता है कि चाबियाँ कहाँ छिपी हुई हैं, और घोषित होने के 10 मिनट के भीतर उन्हें पुनः प्राप्त करने के लिए एक उपकरण होगा। ऐसा करना संभव नहीं है; यह सर्वथा तुच्छ है
cHao

6
@TrevorBoydSmith: मैंने किसी भी तरह का कोई आग्रह नहीं किया है। जो मैं जोर दे रहा हूं वह यह है कि स्थैतिक, बदलना, बढ़ना आदि कोई मायने नहीं रखता । एक ओपन सोर्स ओएस में, एन्क्रिप्शन अकेले उस कोड की रक्षा नहीं कर सकता है जो इसे रिवर्स इंजीनियर कर सकता है। क्योंकि मैं कोड को पढ़ सकता हूं जो कि डिक्रिप्शन करेगा, भले ही कुंजी का अधिग्रहण, उपयोग और / या संग्रहीत कैसे किया जाए, मैं देख सकता हूं कि आपने इसे कैसे किया और इसे दोहराया - इससे भी अधिक आसानी से मैं कुछ सुपर-सीक्रेट को उलट सकता हूं ऐप कोड।
cHao

37

एंड्रॉइड एपीके के रिवर्स इंजीनियरिंग का 100% परिहार संभव नहीं है, लेकिन आप अधिक डेटा निकालने से बचने के लिए इन तरीकों का उपयोग कर सकते हैं, जैसे स्रोत कोड, संपत्ति आपके एपीके और संसाधन बनाते हैं:

  1. एप्लिकेशन कोड को बाधित करने के लिए ProGuard का उपयोग करें

  2. फ़ाइलों में अपने एप्लिकेशन कोर और सुरक्षित हिस्से को डालने के लिए C और C ++ का उपयोग करके NDK का उपयोग करें.so

  3. संसाधनों को सुरक्षित करने के लिए, APK के साथ संपत्ति फ़ोल्डर में सभी महत्वपूर्ण संसाधन शामिल न करें। आवेदन शुरू होने के समय इन संसाधनों को डाउनलोड करें।


7
तीसरा वास्तव में हमलावरों के काम को आसान कर रहा है। रिवर्स इंजीनियरिंग की तुलना में सूँघना नेटवर्क संचार आसान है।
टोंटन

तीसरे की समस्या को हल करने के लिए, कोई डाउनलोड की गई सामग्री को एन्क्रिप्ट कर सकता है और / या एन्क्रिप्ट किए गए कनेक्शन (जैसे एसएसएल / टीएलएस) का उपयोग कर सकता है
स्ट्रैडिवारी

1
कनेक्शन को एन्क्रिप्ट करने से ट्रैफ़िक को सूँघने या संशोधित करने वाले लोगों से बचाव होता है। उस स्थिति में जहां उपयोगकर्ता स्वयं दुर्भावनापूर्ण है (यानी उसके पास आपका एपीके है और उसने इसे हैक करने की कोशिश की है), वह अभी भी आपके ऐप का उपयोग करके सामग्री प्राप्त करेगा, रूट उपयोगकर्ता के रूप में संसाधनों को निकालता है; लेकिन हाँ यह साधारण सूँघने के हमलों के खिलाफ मदद करता है।
केविन ली

इसके अलावा: 4) उच्च गति के लिए डेक्सगार्ड का उपयोग करें, लेकिन यह 5 का भुगतान किया जाता है) ऐप डाउनलोड करने के समय संपत्ति डाउनलोड के लिए ओबीबी फ़ाइल का उपयोग करें, यह ऐप के आकार को कम करने में मदद करेगा
अशोक कुमार

35

किसी भी तरह चोरी से एपीके को रोकने के लिए डेवलपर्स निम्नलिखित कदम उठा सकते हैं,

  • सबसे बुनियादी तरीका है ProGuardअपने कोड को बाधित करने के लिए जैसे उपकरण का उपयोग करना, लेकिन अब तक, किसी ऐप को विघटित करने से पूरी तरह से रोकना काफी मुश्किल रहा है।

  • इसके अलावा मैंने एक उपकरण HoseDex2Jar के बारे में सुना है । यह Dex2Jarएंड्रॉइड एपीके में हानिरहित कोड डालने से रोकता है जो भ्रमित और निष्क्रिय करता है Dex2Jarऔर कोड को विघटन से बचाता है। यह किसी भी तरह हैकर्स को एपीके को पढ़ने योग्य जावा कोड में डिकम्पोज करने से रोक सकता है।

  • एप्लिकेशन के साथ कुछ सर्वर साइड एप्लिकेशन का उपयोग केवल तभी करें जब जरूरत हो। यह महत्वपूर्ण डेटा को रोकने में मदद कर सकता है।

आखिरकार, आप संभावित हैकर्स से अपने कोड की पूरी तरह से रक्षा नहीं कर सकते। किसी तरह, आप अपने कोड को अपघटित करना उनके लिए कठिन और थोड़ा निराशाजनक काम कर सकते हैं। सबसे प्रभावी तरीके से एक मूल कोड (C / C ++) में लिखना और संकलित पुस्तकालयों के रूप में संग्रहीत करना है।


3
HoseDex2Jar बेकार के बगल में है। यह केवल 'भ्रमित' करता है dex2jar और आसानी से अवरुद्ध किया जा सकता है। smali / apktool, आदि 'hosed' APK के साथ ठीक काम करते हैं।
निकोले एलेनकोव

@NikolayElenkov क्या आप जानते हैं कि HoseDex2Jar कैसे काम करता है? क्या वे बचने के लिए या dex2jar को भ्रमित करने के लिए उपयोग किया है। क्योंकि मैं HoseDex2Jar का उपयोग करने के लिए अपनी apk फ़ाइल वेब पर अपलोड नहीं कर सकता। अगर मैं dex2jar को भ्रमित करने के लिए HoseDex2Jar जैसा कुछ कर सकता हूं, तो यह dex2j2 टूल का उपयोग करके हैक करना कठिन बना देगा।
sachin003

1
हो सकता है कि आपने मेरी बात को गलत समझा हो: HoseDex2Jar जो करता है वह आपके एपीके को रिपीट करता है ताकि लोकप्रिय डेक्स 2जर टूल (बॉक्स से बाहर) इसे रिवर्स न कर सके। हालांकि अन्य उपकरण कर सकते हैं, और आम तौर पर इसे हराना बहुत आसान है। इसका उपयोग करने का कोई मतलब नहीं है। डेक्सगार्ड I (प्रोगार्ड के लेखक द्वारा कोई भी नहीं; मुक्त नहीं) का उल्लेख किसी ने नहीं किया है, लेकिन यह काम देख रहा है। यह 'नियमित' स्थगन से कुछ अधिक काम करता है।
निकोले एलेनकोव

C ++ को कभी भी उलटा नहीं किया जा सकता है? यह मुश्किल है लेकिन संभव है। और इसमें आपकी सहायता करने के लिए उपकरण हैं, जैसे कि hex-rays.com/products/decompiler/index.shtml (हाँ, उनके पास ARM वर्जन है। ऐसा नहीं है कि इसे प्राप्त करना आसान नहीं है)।
dkzm

हां, @VikartiAnatra: मैंने भी किसी तरह
साहिल महाजन MJ

24

यहाँ कुछ तरीके आप आज़मा सकते हैं:

  1. ProGuard की तरह obfuscation और tools का प्रयोग करें ।
  2. स्रोत और डेटा के कुछ भाग को एन्क्रिप्ट करें।
  3. छेड़छाड़ का पता लगाने के लिए ऐप में मालिकाना इनबिल्ट चेकसम का उपयोग करें।
  4. डिबगर में लोडिंग से बचने के लिए कोड का परिचय दें, यानी ऐप में डिबगर का पता लगाने और डीबगर को बाहर निकालने / मारने की क्षमता है।
  5. प्रमाणीकरण को ऑनलाइन सेवा के रूप में अलग करें।
  6. एप्लिकेशन विविधता का उपयोग करें
  7. उदाहरण के लिए फिंगर प्रिंटिंग तकनीक का उपयोग करें, डिवाइस को प्रमाणित करने से पहले विभिन्न सबसिस्टम से उपकरणों के हार्डवेयर हस्ताक्षर।

23

 1. मैं एंड्रॉइड एपीके के रिवर्स इंजीनियरिंग से पूरी तरह कैसे बच सकता हूं? क्या यह संभव है?

असंभव

 2. मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?

असंभव

 3. क्या हैकिंग को अधिक सख्त या असंभव बनाने का एक तरीका है? अपनी एपीके फ़ाइल में स्रोत कोड की सुरक्षा के लिए मैं और क्या कर सकता हूं?

अधिक कठिन - संभव है, लेकिन वास्तव में यह औसत उपयोगकर्ता के लिए अधिक कठिन होगा, जो केवल हैकिंग गाइड के लिए गुगली कर रहा है। अगर कोई वास्तव में आपके ऐप को हैक करना चाहता है - तो यह जल्द ही या बाद में हैक हो जाएगा।


22

 1. मैं एंड्रॉइड एपीके के रिवर्स इंजीनियरिंग से पूरी तरह कैसे बच सकता हूं? क्या यह संभव है?

वह असंभव है

 2. मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?

डेवलपर्स अपने कोड को बाधित करने के लिए ProGuard जैसे टूल का उपयोग करने जैसे कदम उठा सकते हैं, लेकिन अब तक, किसी ऐप को डिकंपोज करने से पूरी तरह से रोकना काफी मुश्किल हो गया है।

यह वास्तव में एक महान उपकरण है और आपके कोड के पदचिह्न को सिकोड़ते हुए आपके कोड को 'उलट' करने की कठिनाई को बढ़ा सकता है।

एकीकृत ProGuard समर्थन: ProGuard अब SDK टूल्स के साथ पैक किया गया है। डेवलपर्स अब एक रिलीज़ बिल्ड के एकीकृत भाग के रूप में अपने कोड को बाधित कर सकते हैं।

 3. क्या हैकिंग को अधिक सख्त या असंभव बनाने का एक तरीका है? अपनी एपीके फ़ाइल में स्रोत कोड की सुरक्षा के लिए मैं और क्या कर सकता हूं?

शोध करते समय, मुझे HoseDex2Jar के बारे में पता चला । यह उपकरण आपके कोड को विघटित होने से बचाएगा, लेकिन ऐसा लगता है कि आपके कोड को पूरी तरह से संरक्षित करना संभव नहीं है।

कुछ उपयोगी लिंक, आप उन्हें संदर्भित कर सकते हैं।


21

यहां मुख्य प्रश्न यह है कि क्या डेक्स फाइलें विघटित हो सकती हैं और इसका उत्तर यह है कि वे "क्रमबद्ध" हो सकते हैं। डिसेक्सर और स्माली जैसे डिस्क्लेमर हैं

प्रोगार्ड, ठीक से कॉन्फ़िगर किया गया, आपके कोड को बाधित करेगा। DexGuard जो कि ProGuard का एक वाणिज्यिक विस्तारित संस्करण है, थोड़ा और अधिक मदद कर सकता है। हालाँकि, आपका कोड अभी भी स्माली में बदला जा सकता है और रिवर्स-इंजीनियरिंग अनुभव वाले डेवलपर्स यह पता लगाने में सक्षम होंगे कि आप स्माली से क्या कर रहे हैं।

शायद एक अच्छा लाइसेंस चुनें और कानून द्वारा इसे सर्वोत्तम तरीके से लागू करें।


4
एक साइड नोट के रूप में (अस्वीकरण: IANAL) - लाइसेंस सभी परिस्थितियों में सभी न्यायालयों के तहत आवेदन की रक्षा नहीं करेगा (उदाहरण के लिए यूरोप के कुछ देशों में संगतता बढ़ाने के लिए इसे अलग करने की अनुमति है)।
मैकीज पीचोटका

12

आपके ग्राहक को किसी ऐसे व्यक्ति को नियुक्त करना चाहिए जो जानता है कि वे क्या कर रहे हैं, जो सही निर्णय ले सकता है और आपको सलाह दे सकता है।

ऊपर बात करें कि बैकएंड पर ट्रांजैक्शन प्रोसेसिंग सिस्टम को बदलने की आपकी क्षमता कुछ बेतुकी है - आपको इस तरह के वास्तु परिवर्तन करने की अनुमति नहीं दी जानी चाहिए, ताकि आप सक्षम न हों।

इस पर मेरा तर्क:

चूंकि आपका डोमेन भुगतान प्रसंस्करण है, इसलिए यह मान लेना सुरक्षित है कि पीसीआई डीएसएस और / या पीए डीएसएस (और संभावित राज्य / संघीय कानून) आपके व्यवसाय के लिए महत्वपूर्ण होंगे - आपको आज्ञाकारी होने के लिए आपको दिखाना होगा कि आप सुरक्षित हैं। असुरक्षित होने के लिए तब पता करें (परीक्षण के माध्यम से) कि आप सुरक्षित नहीं हैं, फिर ठीक करना, सेवानिवृत्त होना, वगैरह जब तक कि सुरक्षा को उपयुक्त स्तर पर सत्यापित किया जा सकता है = महंगा, धीमा, सफलता के लिए उच्च जोखिम वाला तरीका। सही काम करने के लिए, कठिन मोर्चे पर सोचें, काम के लिए अनुभवी प्रतिभाओं को प्रतिबद्ध करें, सुरक्षित तरीके से विकसित करें, फिर परीक्षण, फिक्स (कम), वगैरह (कम) जब तक कि सुरक्षा को एक उपयुक्त स्तर पर सत्यापित नहीं किया जा सकता है = सस्ती, तेज, सफलता के लिए कम जोखिम वाला तरीका।


8

जैसे कि एक मोबाइल भुगतान एप्लिकेशन (MyCheck) सहित भुगतान प्लेटफार्मों पर बड़े पैमाने पर काम करने वाले, मैं कहूंगा कि आपको इस व्यवहार को सर्वर पर सौंपने की आवश्यकता है, भुगतान प्रोसेसर के लिए कोई उपयोगकर्ता नाम या पासवर्ड (जो भी हो) संग्रहीत किया जाना चाहिए या मोबाइल एप्लिकेशन में हार्डकोड, आप चाहते हैं कि आखिरी चीज है, क्योंकि कोड को बाधित करने पर भी स्रोत को समझा जा सकता है।

इसके अलावा, आपको आवेदन पर क्रेडिट कार्ड या भुगतान टोकन स्टोर नहीं करना चाहिए, सब कुछ, फिर से, आपके द्वारा बनाई गई सेवा को सौंप दिया जाना चाहिए, यह आपको बाद में भी अनुमति देगा, पीसीआई-अनुपालन अधिक आसानी से हो सकता है, और क्रेडिट कार्ड कंपनियां जीत गईं 'अपनी गर्दन को नीचे खींचो (जैसे उन्होंने हमारे लिए किया था)।


7

यहाँ अन्य उत्कीर्ण उत्तर सही हैं। मैं सिर्फ एक और विकल्प प्रदान करना चाहता हूं।

कुछ कार्यक्षमता के लिए जो आपको महत्वपूर्ण हैं आप अपने ऐप में WebView नियंत्रण की मेजबानी कर सकते हैं । फिर कार्यक्षमता आपके वेब सर्वर पर लागू की जाएगी। ऐसा लगेगा कि यह आपके एप्लिकेशन में चल रहा है।


@ सरेल बोथा हाँ आईएमपी स्क्रीन के लिए मैंने पहले से ही वेबव्यू का उपयोग किया है और हाँ यह सुरक्षा बनाए रखने का एक तरीका भी है, मैं आपका उत्तर स्वीकार कर रहा हूं।
sachin003

7

यदि हम रिवर्स इंजीनियरिंग (लगभग) असंभव बनाना चाहते हैं, तो हम एप्लिकेशन को अत्यधिक छेड़छाड़-प्रतिरोधी चिप पर रख सकते हैं, जो आंतरिक रूप से सभी संवेदनशील सामानों को निष्पादित करता है, और मेजबान पर GUI को नियंत्रित करने के लिए कुछ प्रोटोकॉल के साथ संचार करता है। यहां तक ​​कि छेड़छाड़-प्रतिरोधी चिप्स 100% दरार सबूत नहीं हैं; वे बस बार को सॉफ्टवेयर विधियों की तुलना में बहुत अधिक सेट करते हैं। बेशक, यह असुविधाजनक है: एप्लिकेशन को कुछ छोटे यूएसबी मस्सा की आवश्यकता होती है जो चिप को डिवाइस में डालने के लिए रखती है।

यह सवाल इतनी जलन से इस आवेदन की रक्षा के लिए प्रेरणा को प्रकट नहीं करता है।

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

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


7

यहाँ @ मुहम्मद साकिब से सहमत: https://stackoverflow.com/a/46183706/2496464

और @Mumair एक अच्छा शुरुआती कदम दे: https://stackoverflow.com/a/35411378/474330

यह मान लेना हमेशा सुरक्षित होता है कि आप अपने उपयोगकर्ता के डिवाइस पर जो कुछ भी वितरित करते हैं, वह उपयोगकर्ता का है। सादा और सरल। आप अपने बौद्धिक गुणों को एन्क्रिप्ट करने के लिए नवीनतम टूल और प्रक्रिया का उपयोग करने में सक्षम हो सकते हैं लेकिन एक निर्धारित व्यक्ति को आपके सिस्टम को 'अध्ययन' करने से रोकने का कोई तरीका नहीं है। और भले ही वर्तमान तकनीक ने अवांछित पहुंच हासिल करना उनके लिए मुश्किल बना दिया हो, कल कुछ आसान तरीका हो सकता है, या अगले घंटे भी!

इस प्रकार, यहाँ समीकरण आता है:

When it comes to money, we always assume that client is untrusted.

इन-गेम अर्थव्यवस्था के रूप में भी सरल है। (विशेष रूप से खेलों में! वहां 'अधिक परिष्कृत' उपयोगकर्ता हैं और सेकंड में फैली खामियां!)

हम कैसे सुरक्षित रहें?

सबसे अधिक, यदि नहीं, तो हमारे प्रमुख प्रोसेसिंग सिस्टम (और निश्चित रूप से डेटाबेस) सर्वर साइड पर स्थित हैं। और क्लाइंट और सर्वर के बीच, एन्क्रिप्टेड संचार, सत्यापन आदि निहित है, जो पतले क्लाइंट का विचार है।


5

मैं आपको सुझाव देता हूं कि प्रोटेक्ट सॉफ्टवेयर एप्लिकेशन को अटैक्स से देखें । यह एक वाणिज्यिक सेवा है, लेकिन मेरे मित्र की कंपनी ने इसका उपयोग किया और वे इसका उपयोग करने में प्रसन्न हैं।


4

एंड्रॉयड एन में एपीके हस्ताक्षर योजना v2

PackageManager वर्ग अब एपीके सिग्नेचर स्कीम v2 का उपयोग करके वेरिफाइंग ऐप्स का समर्थन करता है। एपीके सिग्नेचर स्कीम v2 एक पूरी फाइल सिग्नेचर स्कीम है, जो सत्यापन की गति में काफी सुधार करती है और एपीके फाइलों में किसी भी अनधिकृत परिवर्तन का पता लगाकर अखंडता की गारंटी को मजबूत करती है।

बैकवर्ड-कम्पैटिबिलिटी बनाए रखने के लिए, v2 सिग्नेचर स्कीम के साथ साइन करने से पहले एपीके को v1 सिग्नेचर स्कीम (JAR सिग्नेचर स्कीम) के साथ साइन किया जाना चाहिए। V2 हस्ताक्षर योजना के साथ, सत्यापन विफल हो जाता है यदि आप v2 योजना के साथ हस्ताक्षर करने के बाद एक अतिरिक्त प्रमाण पत्र के साथ APK पर हस्ताक्षर करते हैं।

एपीके सिग्नेचर स्कीम v2 सपोर्ट N डेवलपर प्रीव्यू में बाद में उपलब्ध होगा।

http://developer.android.com/preview/api-overview.html#apk_signature_v2


2
Apk सिग्नेचर v2 केवल संसाधनों को छेड़छाड़ से रोकता है, लेकिन रिवर्स इंजीनियरिंग को अधिक कठिन नहीं बनाता है ...
लुइस सीएडी

1
इसके अलावा आप सिर्फ हस्ताक्षर हटा सकते हैं और इसे फिर से साइन कर सकते हैं। V2 हस्ताक्षर एपीके फ़ाइल में डेटा का एक ब्लॉक है।
रॉबर्ट

4

एपीके की रिवर्स इंजीनियरिंग से पूरी तरह से बचने का कोई तरीका नहीं है। एप्लिकेशन परिसंपत्तियों, संसाधनों की सुरक्षा के लिए, आप एन्क्रिप्शन का उपयोग कर सकते हैं।

  • एन्क्रिप्शन डिक्रिप्शन के बिना इसे उपयोग करने के लिए कठिन बना देगा। कुछ मजबूत एन्क्रिप्शन एल्गोरिथ्म को चुनना, क्रैकिंग को कठिन बना देगा।
  • खुर के लिए और अधिक कठिन बनाने के लिए अपने मुख्य तर्क में कुछ स्पूफ कोड जोड़ना।
  • यदि आप किसी भी मूल भाषा में अपने महत्वपूर्ण तर्क लिख सकते हैं और निश्चित रूप से अपघटन के लिए कठिन बनाते हैं।
  • Quixxi जैसे किसी भी तीसरे पक्ष के सुरक्षा ढांचे का उपयोग करना

3

मूल रूप से यह संभव नहीं है। यह कभी संभव नहीं होगा। हालांकि, वहाँ आशा है। इसे बनाने के लिए आप एक ऑबफ्यूज़ेटर का उपयोग कर सकते हैं, ताकि कुछ सामान्य हमलों को अंजाम देना मुश्किल हो जाए जैसे:

  1. नामकरण के तरीके / कक्षाएं (ताकि डिकम्पॉइलर में आपको प्रकार मिलें a.a)
  2. Obfuscating नियंत्रण प्रवाह (ताकि डिकंपाइलर में कोड को पढ़ना बहुत कठिन है)
  3. तार और संभवतः संसाधनों को एन्क्रिप्ट करना

मुझे यकीन है कि अन्य लोग भी हैं, लेकिन वे मुख्य हैं। मैं एक .NET obfuscator पर PreEmptive Solutions नामक कंपनी के लिए काम करता हूँ । उनके पास एक जावा ऑब्सफ़्यूकेटर भी है जो एंड्रॉइड के लिए काम करता है और साथ ही डैशो भी कहा जाता है ।

हालाँकि, ऑबफ़्यूशन हमेशा एक मूल्य के साथ आता है। विशेष रूप से, प्रदर्शन आमतौर पर बदतर होता है, और इसे आमतौर पर रिलीज के आसपास कुछ अतिरिक्त समय की आवश्यकता होती है। हालांकि, यदि आपकी बौद्धिक संपदा आपके लिए बेहद महत्वपूर्ण है, तो यह आमतौर पर इसके लायक है।

अन्यथा, आपकी एकमात्र पसंद इसे बनाना है ताकि आपका एंड्रॉइड एप्लिकेशन बस एक सर्वर से गुजरता है जो आपके एप्लिकेशन के सभी वास्तविक तर्क को होस्ट करता है। समस्याओं का अपना हिस्सा है, क्योंकि इसका मतलब है कि उपयोगकर्ताओं को आपके ऐप का उपयोग करने के लिए इंटरनेट से जुड़ा होना चाहिए।

इसके अलावा, यह सिर्फ एंड्रॉइड नहीं है जिसमें यह समस्या है। यह हर ऐप स्टोर पर एक समस्या है। यह सिर्फ एक मामला है कि पैकेज फ़ाइल को प्राप्त करना कितना मुश्किल है (उदाहरण के लिए, मुझे विश्वास नहीं है कि यह आईफ़ोन पर बहुत आसान है, लेकिन यह अभी भी संभव है)।


दुर्भाग्य से अगर कोई क्लाइंट (ऐप) को हैक कर लेता है तो वे संचार प्रारूप देख पाएंगे और अपना स्वयं का सर्वर बना पाएंगे :(
जोकी डो

3

यह पूरी तरह से आरई से बचने के लिए संभव नहीं है, लेकिन आंतरिक रूप से उन्हें और अधिक जटिल बनाकर, आप हमलावरों के लिए ऐप के स्पष्ट संचालन को देखने के लिए इसे और अधिक कठिन बना देते हैं, जिससे आक्रमण वैक्टर की संख्या कम हो सकती है।

यदि एप्लिकेशन अत्यधिक संवेदनशील डेटा को संभालता है, तो विभिन्न तकनीकें मौजूद हैं जो आपके कोड को रिवर्स इंजीनियरिंग की जटिलता को बढ़ा सकती हैं। एक तकनीक हमलावर द्वारा आसान रनटाइम हेरफेर को सीमित करने के लिए C / C ++ का उपयोग करना है। पर्याप्त सी और सी ++ लाइब्रेरी हैं जो एंड्रॉइड ऑफर जेएनआई के साथ एकीकृत करने के लिए बहुत परिपक्व और आसान हैं। एक हमलावर को पहले डिबगिंग प्रतिबंधों को कम स्तर पर हमला करने के लिए रोकना चाहिए। यह एक हमले में और जटिलता जोड़ता है। एंड्रॉइड एप्लिकेशन में एक हमलावर या मैलवेयर द्वारा आसान रन टाइम हेरफेर को रोकने के लिए एप्लिकेशन मेनिफ़ेस्ट में एंड्रॉइड: डीबगेबल = "गलत" सेट होना चाहिए।

ट्रेस चेकिंग - एक एप्लिकेशन यह निर्धारित कर सकती है कि वर्तमान में डीबगर या अन्य डीबगिंग टूल द्वारा पता लगाया जा रहा है या नहीं। यदि पता लगाया जा रहा है, तो एप्लिकेशन किसी भी प्रकार की संभावित हमले प्रतिक्रिया क्रियाएं कर सकता है, जैसे कि उपयोगकर्ता डेटा की सुरक्षा के लिए एन्क्रिप्शन कुंजी को त्यागना, सर्वर व्यवस्थापक को सूचित करना, या स्वयं की रक्षा करने के प्रयास में इस तरह की अन्य प्रतिक्रियाएं। यह प्रक्रिया की स्थिति के झंडे की जाँच करके या अन्य तकनीकों का उपयोग करके निर्धारित किया जा सकता है जैसे कि ptrace अटैचमेंट के रिटर्न वैल्यू की तुलना करना, पैरेंट प्रक्रिया की जाँच करना, प्रोसेस लिस्ट में ब्लैकलिस्ट डिबगर्स या प्रोग्राम के विभिन्न स्थानों पर टाइमस्टैम्प की तुलना करना।

ऑप्टिमाइज़ेशन - उन्नत गणितीय संगणना और अन्य प्रकार के जटिल तर्क छिपाने के लिए, कंपाइलर ऑप्टिमाइज़ेशन का उपयोग करने से ऑब्जेक्ट कोड को बाधित करने में मदद मिल सकती है, ताकि किसी हमलावर द्वारा इसे आसानी से असंतुष्ट न किया जा सके, जिससे हमलावर के लिए विशेष कोड की समझ हासिल करना अधिक कठिन हो जाता है। एंड्रॉइड में यह एनडीके के साथ देशी संकलित पुस्तकालयों का उपयोग करके आसानी से प्राप्त किया जा सकता है। इसके अलावा, एक एलएलवीएम ऑबफसकेटर या किसी भी रक्षक एसडीके का उपयोग करने से बेहतर मशीन कोड ओफ़्फ़्यूसेशन मिलेगा।

स्ट्रिपिंग बायनेरिज़ - अपने ऐप्लिकेशन के निम्न स्तर के फ़ंक्शंस को देखने के लिए हमलावरों से आवश्यक समय और कौशल स्तर को बढ़ाने के लिए देशी बायनेरिज़ स्ट्रिपिंग एक प्रभावी तरीका है। एक बाइनरी को हटाकर, बाइनरी के प्रतीक तालिका को छीन लिया जाता है, ताकि एक हमलावर आसानी से किसी एप्लिकेशन को डिबग या रिवर्स न कर सके। आप GNU / Linux सिस्टम पर उपयोग की जाने वाली तकनीकों जैसे कि sstriping या UPX का उपयोग कर सकते हैं।

और अंत में आप ProGuard जैसे obfuscation और टूल्स के बारे में अवगत होना चाहिए।


3

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

बेशक, इसे हैक भी किया जा सकता है और इसका सोर्स कोड प्रोटेक्शन से कोई लेना-देना नहीं है, लेकिन हैकर्स के लिए यह मुश्किल है कि वह आपके ऐप को हैक कर सके।


2

TPM चिप्स (विश्वसनीय प्लेटफ़ॉर्म मॉड्यूल) आपके लिए संरक्षित कोड का प्रबंधन करने के लिए नहीं हैं? वे पीसी (विशेषकर ऐप्पल वाले) पर आम हो रहे हैं और वे पहले से ही आज के स्मार्टफोन चिप्स में मौजूद हो सकते हैं। दुर्भाग्य से अभी तक इसका उपयोग करने के लिए कोई ओएस एपीआई नहीं है। उम्मीद है कि एंड्रॉइड इस एक दिन के लिए समर्थन जोड़ देगा। यह कंटेंट डीआरएम को साफ करने की कुंजी भी है (जो Google वेबएम के लिए काम कर रहा है)।


2

जब आप इसे एंड-यूजर्स के हाथ लगाते हैं तो कुछ भी सुरक्षित नहीं होता है, लेकिन कुछ सामान्य अभ्यास हमलावर को डेटा चोरी करने के लिए कठिन बना सकते हैं।

  • अपने मुख्य तर्क (एल्गोरिदम) को सर्वर साइड में रखें।
  • सर्वर और क्लाइंट के साथ संवाद करें; सुनिश्चित करें कि संचार बी / डब्ल्यू सर्वर और क्लाइंट एसएसएल या एचटीटीपीएस के माध्यम से सुरक्षित है; या अन्य तकनीकों की-जोड़ी पीढ़ी के एल्गोरिदम (ECC, RSA) का उपयोग करें। सुनिश्चित करें कि संवेदनशील जानकारी एंड-टू-एंड एन्क्रिप्टेड बनी हुई है।
  • सत्रों का उपयोग करें और विशिष्ट समय अंतराल के बाद उन्हें समाप्त करें।
  • संसाधनों को एन्क्रिप्ट करें और उन्हें मांग पर सर्वर से प्राप्त करें।
  • या आप हाइब्रिड ऐप बना सकते हैं जो webviewसर्वर पर संसाधन + कोड की सुरक्षा के माध्यम से सिस्टम का उपयोग करते हैं

एकाधिक दृष्टिकोण; यह स्पष्ट है कि आपको प्रदर्शन और सुरक्षा के बीच बलिदान करना होगा


2

मैं इस धागे में उस अच्छे उत्तर को देख सकता हूं। इसके अलावा आप redexकोड का अनुकूलन करने के लिए फेसबुक का उपयोग कर सकते हैं । Redex उस .dexस्तर पर काम करता है जहाँ proguard .classस्तर के रूप में कार्य करता है।


2

स्रोत कोड और संसाधनों की 100% सुरक्षा Android में संभव नहीं है। लेकिन, आप रिवर्स इंजीनियर के लिए थोड़ा मुश्किल बना सकते हैं। आप नीचे दिए गए लिंक में इस पर अधिक जानकारी पा सकते हैं:

यात्रा की बचत निरंतर मूल्यों सुरक्षित रूप से और https://www.agicent.com/blog/mobile-app-security-best-practices/


1

मैं ऐप के सभी संसाधनों, संपत्तियों और स्रोत कोड की सुरक्षा कैसे कर सकता हूं ताकि हैकर्स किसी भी तरह से एपीके फ़ाइल को हैक न कर सकें?

एपीके फ़ाइल SHA-1 एल्गोरिथ्म से सुरक्षित है। आप एपीए- इन - फोल्डर के एपीके में कुछ फाइलें देख सकते हैं । यदि आप कोई एपीके फ़ाइल निकालते हैं और उसकी किसी भी सामग्री को बदलते हैं और उसे फिर से ज़िप करते हैं और जब आप उस नई एपीके फ़ाइल को एंड्रॉइड मशीन पर चलाते हैं, तो यह काम नहीं करेगा, क्योंकि SHA-1 हैश कभी भी मेल नहीं खाएगा।


यह सच है; लेकिन एपीके (एक अलग प्रमाण पत्र के साथ) और सब कुछ फिर से काम करेगा इस्तीफा देना तुच्छ है। यह जांचना संभव है कि कौन से हस्ताक्षर का उपयोग एप्लिकेशन के भीतर से एपीके पर हस्ताक्षर करने के लिए किया गया है, और यदि प्रमाणपत्र बदलता है, तो त्रुटि हुई है, लेकिन इस कोड को आवेदन से बाहर संपादित करने के लिए यह केवल थोड़ा कम तुच्छ है।
डेविड ने 10

यह एंड्रॉइड डिवाइस को संशोधित कोड चलाने से रोक सकता है, लेकिन आप अभी भी संबंधित कोड को आसानी से निकाल सकते हैं और एक पीसी पर नया कोड लिख सकते हैं जो आपको चाहिए।
सेरेल बोथा

1

जब मैं सहमत हूं कि आपके कोड की सुरक्षा के लिए कोई 100% समाधान नहीं है, तो H3Dex2Jar का v3 अब उठ गया है यदि आप इसे आज़माना चाहते हैं।


1

उपकरण: अपने आवेदन में गार्ड का उपयोग करते हुए इसे आपके आवेदन को उल्टा करने के लिए प्रतिबंधित किया जा सकता है


1

मुझे पता था कि कुछ बैंकिंग ऐप DexGuard का उपयोग कर रहे हैं जो कक्षाओं, स्ट्रिंग्स, परिसंपत्तियों, संसाधन फ़ाइलों और देशी पुस्तकालयों के साथ-साथ अपसंस्कृति प्रदान करता है।

https://www.guardsquare.com/en/products/dexguard

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.