android - क्या एपीके फ़ाइल से स्रोत कोड प्राप्त करने का कोई तरीका है?




android-resources decompiling apk (14)

apktool जाने का रास्ता है। ऑनलाइन apktool सेवा भी मौजूद है: http://www.javadecompilers.com/apktool

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

फिर भी, एंड्रॉइड एप्लिकेशन को 'खोलने' के लिए यह कोई परेशानी नहीं है।

मेरे लैपटॉप पर हार्ड ड्राइव बस दुर्घटनाग्रस्त हो गया और मैंने एक ऐप के लिए सभी स्रोत कोड खो दिए जिन्हें मैं पिछले दो महीनों से काम कर रहा हूं। मेरे पास एपीके फ़ाइल है जो मेरे ईमेल में संग्रहीत है जब से मैंने इसे किसी मित्र को भेजा था।

क्या इस एपीके फ़ाइल से मेरा स्रोत कोड निकालने का कोई तरीका है?


ये दो लेख वर्णन करते हैं कि apktool फ़ाइल लेने के लिए apktool और dex2jar apktool के उपयोग को कैसे apktool और एक ग्रहण परियोजना बनाना है जो इसे बना और चला सकता है।

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

असल में आप:

  1. संसाधन फ़ाइलों को apktool से बाहर निकालने के लिए apktool का उपयोग करें
  2. एक jar फ़ाइल प्राप्त करने के लिए dex2jar का उपयोग करें जिसमें कक्षाएं शामिल हैं जो ग्रहण पसंद करेंगे।
  3. एक ग्रहण परियोजना को संसाधन फ़ाइलों और नई जार फ़ाइल पर इंगित करें
  4. एक ज़िप उपयोगिता के साथ जार फ़ाइल खोलें और मौजूदा संसाधनों को हटा दें
  5. स्रोत कोड देखने के लिए JDGui साथ जार फ़ाइल खोलें
  6. JDGui से आपको जो भी स्रोत कोड चाहिए, उसे ग्रहण के अंदर एक कक्षा में JDGui और इसे संशोधित करें
  7. जार फ़ाइल से उस वर्ग को हटाएं (इसलिए आपके पास एक ही कक्षा को कई बार परिभाषित नहीं किया गया है)
  8. चलाओ।

Play Store पर एक नया एप्लिकेशन भी है जिसके साथ एक एपीके (सिस्टम एप्लीकेशन भी) को डीकंपाइल करना संभव है और सीधे अपने स्मार्टफोन पर सोर्स कोड देखें। यह फ़ाइलों को आपके एसडी कार्ड में सहेजता है ताकि आप इसे अपने कंप्यूटर पर भी देख सकें। इसे रूट या कुछ और की आवश्यकता नहीं है।

बस स्थापित करें और मज़े करें। मुझे लगता है कि यह ऐप को कम करने का सबसे आसान तरीका है।


ऑनलाइन उपकरण के नीचे:

http://www.javadecompilers.com/apk

यह सब एक क्लिक से करता है: decompiled .java फ़ाइलें + संसाधन + xml (एक .zip फ़ाइल में) बहुत अच्छे डिकंपेलर के साथ (स्थानों / कार्यों में जाडक्स रिटर्न जावा कोड जहां अन्य संकलन फ़ंक्शन के अंदर टिप्पणियां वापस लौटाते हैं जैसे "डिकंपाइल करने में असमर्थ" या कुछ एंड्रॉइड असेंबलर / मशीन कोड)


यह एक वैकल्पिक वर्णन है - बस अगर कोई ऊपर दिए गए विवरण से फंस गया हो। उनके नक़्शे - कदम पर चलिए:

  1. apktool.bat से apktool.bat (या लिनक्स के लिए apktool ) और apktool_<version>.jar
  2. ऊपर से apktool.jar तक जार फ़ाइल का नाम बदलें और दोनों फ़ाइलों को एक ही फ़ोल्डर में रखें

  3. एक डॉस बॉक्स ( cmd.exe ) खोलें और उस फ़ोल्डर में बदलें; सत्यापित करें कि जावा पर्यावरण स्थापित है (लिनक्स के लिए आवश्यक पुस्तकालयों के संबंध में नोट्स भी जांचें)
  4. प्रारंभ करें: apktool decode [apk file]

    इंटरमीडिएट परिणाम : संसाधन फाइलें, AndroidManifest.xml

  5. अपनी पसंद के एक unpacker के साथ एपीके फ़ाइल unzip

    इंटरमीडिएट परिणाम : classes.dex

  6. http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q= से dex2jar-0.0.9.15.zip को डाउनलोड और निकालें
  7. dex2jar.bat पर dex2jar.bat खींचें और छोड़ें (या <path_to>\dex2jar.bat classes.dex को डॉस बॉक्स में दर्ज करें; लिनक्स के लिए dex2jar.sh उपयोग dex2jar.sh )

    इंटरमीडिएट परिणाम : classes_dex2jar.jar

  8. unpack classes_dex2jar.jar ( classes_dex2jar.jar आधार पर वैकल्पिक हो सकता है)
  9. अपनी कक्षा फ़ाइलों को डीकंपाइल करें (उदाहरण के लिए जेडी-जीयूआई या डीजे डिकंपेलर के साथ )

    परिणाम : स्रोत कोड

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


स्रोत देखने के लिए आसान हो सकता है:

एंड्रॉइड स्टूडियो 2.3 में, Build -> Analyze APK -> Select the apk that you want to decompile
आप इसे स्रोत कोड देखेंगे।

संदर्भ के लिए लिनफ:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2


apktool काम करेगा। आपको स्रोत कोड निकालने के लिए कीस्टोर को जानने की भी आवश्यकता नहीं है (जो थोड़ा डरावना है)। मुख्य नकारात्मकता यह है कि स्रोत जावा के बजाए स्माली प्रारूप में प्रस्तुत किया जाता है। आइकन और main.xml जैसी अन्य फ़ाइलें पूरी तरह ठीक होती हैं और कम से कम उनको पुनर्प्राप्त करने के लिए आपके समय के लायक हो सकते हैं। आखिरकार, आपको स्क्रैच से अपने जावा कोड को फिर से लिखने की आवश्यकता होगी।

आप here apktool पा सकते हैं। बस apktool और उपयुक्त सहायक डाउनलोड करें (विंडोज, लिनक्स, या मैक ओएस के लिए)। मैं उन्हें अनपैक करने के लिए 7-ज़िप जैसे टूल का उपयोग करने की सलाह देता हूं।


मैं स्रोत कोड प्राप्त करने के लिए व्यक्तिगत रूप से जावा एंड्रॉइड ऐप दिखाने की सलाह देता हूं। आप इसे Play store से या here से डाउनलोड कर सकते here


यह साइट https://www.apkdecompilers.com/ ने स्वचालित रूप से किया है।

मैंने पहले स्वीकार किए गए उत्तर में उल्लिखित साइट की कोशिश की लेकिन यह मेरे लिए काम नहीं करता था।


आप DexPatcher आज़मा सकते हैं। यह एंड्रॉइड स्टूडियो के साथ भी एकीकृत करता है। यह आंतरिक रूप से apktool और Dex2Jar का उपयोग करता है।
आप स्वतंत्र रूप से उन उपकरणों का भी उपयोग कर सकते हैं। apktool decompiles apk, और निष्कर्ष .dex फ़ाइलें, जिन्हें आगे Dex2Jar का उपयोग कर जार में परिवर्तित किया जा सकता है। जेडी-जीयूआई का उपयोग कर जार को हटाया जा सकता है। आप उस उपकरण की सहायता से जावा कोड देख सकते हैं। हालांकि वास्तविक कोड में डिकंपील्ड कोड की समानता की गारंटी नहीं दी जा सकती है। बाजार में कुछ उन्नत कोड obfuscation उपकरण उपलब्ध हैं, जो कोड को गड़बड़ाना / समझने में मुश्किल बनाते हैं। जैसे। ProGuard


apktool सबसे अच्छी चीज है जिसे आप कोशिश कर सकते हैं। मैंने इसके साथ कुछ एक्सएमएल बचा लिया है, लेकिन ईमानदारी से मुझे नहीं पता कि यह .java कोड के साथ कैसे काम करेगा।

मैं आपको कोड रिपोजिटरी रखने की सलाह दूंगा, भले ही आप एकमात्र कोडर हों। मैं अपनी परियोजनाओं के लिए प्रोजेक्ट लॉकर का उपयोग कर रहा हूं। यह आपको मुफ्त svn और गिट repos देता है।


जबकि आप अपनी APK फ़ाइल को डीकंपाइल कर सकते हैं, तो आप शायद एक बड़ी समस्या को दबाएंगे:

यह आपके द्वारा लिखे गए कोड को वापस नहीं जा रहा है। यह बदले में संकलक नामक चर के साथ, यादृच्छिक नाम दिए गए चर के साथ-साथ यादृच्छिक नाम दिए गए कार्यों को वापस करने जा रहा है। इसे शुरू करने के लिए इसे शुरू करने के बजाय, आपके पास मौजूद कोड में इसे संकुचित करने और इसे पुनर्स्थापित करने का प्रयास करने में काफी समय लग सकता है।

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

और इसे वापस कैसे करें।


ऐसा करने के कुछ तरीके हैं:

  1. Android Studio 3.0 में "प्रोफ़ाइल या डीबग एपीके" सुविधा का उपयोग करें।

    यह आपको एंड्रॉइड स्टूडियो में एपीके खोलने और एक्सप्लोर करने की अनुमति देता है। कक्षाओं को smali में decompiled कर रहे हैं। संसाधन निकाले नहीं जाते हैं और "परिभाषा पर जाएं" जैसी चीजें, "सभी संदर्भ खोजें" और डिबगिंग स्रोत कोड (एंड्रॉइड स्टूडियो 3.0 कैनरी 9) के बिना काम नहीं करते हैं। कुछ अतिरिक्त smali विशेषताएं smalidea साथ काम कर smalidea

  2. jadx प्रयोग करें।

    जाडक्स किसी दिए गए एपीके में कोड को जावा स्रोत फ़ाइलों में डिकंपाइल करता है।

  3. apktool प्रयोग करें।

    Apktool एक कमांड लाइन उपकरण है जो किसी दिए गए एपीके के लिए smali में संसाधनों और decompiles कोड निकालता है। आप apktool का उपयोग कर recompile भी कर सकते हैं। कार्रवाई में इसका एक उदाहरण यहां दिया गया है:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
    

Basically, there are 5 methods to protect your APK. Isolate Java Program, Encrypt Class Files, Convert to Native Codes, Code Obfuscation and Online Encryption I suggest you use online encryption because it is safe and convenient. You needn't spend to much time to achieve this. Such as APK Protect , it is an online encryption website for APK. It provides Java codes and C++ codes protection to achieve anti-debugging and decompile effects. The operation process is simple and easy.





android android-resources decompiling apk