2017-05-28 7 views
12

मैं एक एंड्रॉइड लाइब्रेरी विकसित कर रहा हूं और मैं अपने कोड में एक छेड़छाड़-तंत्र तंत्र लागू करना चाहता हूं, क्योंकि यह कुछ संवेदनशील वित्तीय वेब सेवाओं को कॉल करता है।एंड्रॉइड लाइब्रेरी में स्रोत कोड की चेकसम प्राप्त करें

जो मैं लागू करने जा रहा हूं वह एपीके (या इसके महत्वपूर्ण हिस्सों) के चेकसम को गणना के लिए प्रोग्रामेटिक रूप से गणना करना है, इसलिए मैं किसी भी नुकसान (टैपर रोकथाम)।

जो मैंने अभी तक किया है, applicationInfo.publicSourceDir के चेकसम की गणना करना है। लेकिन मुझे यकीन नहीं है कि उन ऐप्स के साथ क्या होता है जिनमें एकाधिक डीएक्स फ़ाइलें या एकाधिक स्प्लिट एप हैं।

Android में प्रोग्राम के कोड-बेस के आधार पर चेकसम की गणना करने का सबसे विश्वसनीय तरीका क्या है?

+0

शामिल कोई व्यक्ति छेड़छाड़ का पता लगाने तंत्र में गतिरोध उत्पन्न में एप्लिकेशन छेड़छाड़ कर सकते हैं (बस ज़ोर से सोच) – nandsito

+0

हम हानिकारक डेक्स साथ apk repackaging हमले को रोकने के लिए चाहते हैं, भले ही हस्ताक्षर करने बनी हुई है अपरिवर्तित –

+0

इस उल्लेख @FarhadFaghihi, https : //stackoverflow.com/questions/9293019/get-certificate-fingerprint-from-android-app। कोई एप्लिकेशन का प्रमाण पत्र फिंगरप्रिंट पा सकता है – Calvin

उत्तर

2

चेकसम दृष्टिकोण एकल फ़ाइल या ज़िप फ़ाइलों पर लागू किया जा सकता है। सभी फाइलों के चेकसम की जांच करने के लिए यह एक लंबी प्रक्रिया होगी। मुझे लगता है कि आप गलत दिशा में हैं।

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

यह वही है यह मुश्किल बनाने के लिए किया जाता है -

  1. एन्क्रिप्ट आपके apk - ताकि अपनी हार्ड अपने स्रोत कोड को पाने के लिए। संदर्भ - APK to protect apk from reverse engineering - obfuscating उपकरण देखें।

  2. वेब सेवा से डेटा भेजने/प्राप्त करते समय डेटा एन्क्रिप्शन का उपयोग करें। आप डेटा की सुरक्षा के लिए एचएमएसी का उपयोग कर सकते हैं। सुनिश्चित करें कि आपका सर्वर कई खराब कॉल होने पर उपयोगकर्ता/अनुरोध-ऐप्स को अवरुद्ध करने के लिए पर्याप्त स्मार्ट है। एचएमएसी लागू करना आसान है और एचएमएसी कुंजी उत्पन्न करने के लिए पुस्तकालय हैं।

2

आप खेलने के माध्यम से वितरित यदि आप SafetyNet में एक नज़र हो सकता है: https://developer.android.com/training/safetynet/index.html

+0

Play store के माध्यम से वितरित करना अनिवार्य है? दस्तावेज़ इस API के लिए वितरण नीति के बारे में कुछ भी नहीं कहते हैं। इसके अलावा, मेरे lib का उपभोक्ता ऐप अन्य स्थानीय बाजारों से डाउनलोड किया जा सकता है –

+0

हाँ - AFAIK यह प्ले-सेवाओं पर निर्भर करता है - लेकिन ईमानदार होने के लिए मैंने कभी भी इस विशेष एपीआई का उपयोग नहीं किया - बस इसके बारे में पढ़ रहा था – ligi

0

एप्लिकेशन हस्ताक्षर जो प्रमाण पत्र से जुड़ा हुआ है जाओ

public static String getAppSignature(Context context) { 
    try { 
     for (Signature signature : context.getPackageManager().getPackageInfo(context.getPackageName(), 
       PackageManager.GET_SIGNATURES).signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
     } 
    } catch (Exception e) { /* Do nothing */ } 
    return null; 
} 

यह हो सकता है APK को हस्ताक्षरित करने के लिए इस्तेमाल एक संग्रहीत मूल्य की तुलना में यह जांचने के लिए कि हस्ताक्षर प्रमाणपत्र मूल है या नहीं।

+0

धन्यवाद। यह पहले से ही किया है :) –

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