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




android-resources decompiling (11)

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

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

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

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


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


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

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

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

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


मैं आपको .apk फ़ाइलों को डीकंपाइल करने के लिए अन्य तरीका दिखाऊंगा।

आप " प्रंकुल गर्ग " से पहले 2 चरणों का पालन कर सकते हैं। तो आपके पास एक और मौका है:

चरण 3':

"जेडी-जीयूआई" डाउनलोड करें, इसे ढूंढना आसान है। "Jd-gui.exe" में अपनी .jar फ़ाइल खोलें। (फ़ाइल> फ़ाइल खोलें> 'आपकी .jar फ़ाइल मिली')। इस प्रक्रिया के बाद, आप सभी संसाधनों को .zip फ़ाइल में सहेज सकते हैं।

इसलिए,

पहला - आपको .zk फ़ाइल में .apk फ़ाइल का नाम बदलना होगा

दूसरा - आपको .dex फ़ाइल को डीकोड करना होगा (यदि आप चाहते हैं, तो .xk फ़ाइल को dex2jar पर डीकोड करें , यह संभव है)

तीसरा - आपको जेडी-जीयूआई के साथ .jar फ़ाइल को डीकोड करना होगा


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

  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. अपनी कक्षा फ़ाइलों को डीकंपाइल करें (उदाहरण के लिए जेडी-जीयूआई या डीजे डिकंपेलर के साथ )

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

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


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

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


रिवर्स इंजीनियरिंग तीसरे पक्ष, बंद, द्विआधारी एंड्रॉइड ऐप्स के लिए Apktool

यह संसाधनों को लगभग मूल रूप में डीकोड कर सकता है और कुछ संशोधन करने के बाद उन्हें पुनर्निर्माण कर सकता है।

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

http://ibotpeaches.github.io/Apktool/


सरल तरीका: ऑनलाइन उपकरण का उपयोग करें http://www.javadecompilers.com/apk , एपीके अपलोड करें और स्रोत कोड प्राप्त करें।

डीकोडिंग। एपीके फाइलों के लिए प्रक्रिया, चरण-दर-चरण विधि:

चरण 1:

  1. एक नया फ़ोल्डर बनाएं और उस .apk फ़ाइल पर कॉपी करें जिसे आप डीकोड करना चाहते हैं।

  2. अब इस .apk फ़ाइल के .zip पर एक्सटेंशन का नाम बदलें (उदाहरण के लिए filename.apk से filename.zip पर नाम बदलें) और इसे सेव करें। अब आप class.dex फ़ाइलों आदि तक पहुंच सकते हैं। इस चरण में आप drawables को देखने में सक्षम हैं लेकिन एक्सएमएल और जावा फाइल नहीं, इसलिए जारी रखें।

चरण 2:

  1. अब इस .zip फ़ाइल को उसी फ़ोल्डर (या नया फ़ोल्डर) में निकालें।

  2. Dex2jar डाउनलोड करें और इसे उसी फ़ोल्डर (या नया फ़ोल्डर) पर निकालें।

  3. Class.dex फ़ाइल को dex2jar फ़ोल्डर में ले जाएं।

  4. अब कमांड प्रॉम्प्ट खोलें और उस फ़ोल्डर में निर्देशिका बदलें (या नया फ़ोल्डर)। फिर d2j-dex2jar classes.dex लिखें (मैक टर्मिनल या ubuntu लिखने के लिए ./d2j-dex2jar.sh classes.dex ) और एंटर दबाएं। अब आपके पास एक ही फ़ोल्डर में class.dex.dex2jar फ़ाइल है।

  5. जावा डीकंपलर डाउनलोड करें, जेडी-गुई पर डबल क्लिक करें, खुली फ़ाइल पर क्लिक करें, और उस फ़ोल्डर से class.dex.dex2jar फ़ाइल खोलें: अब आपको क्लास फाइलें मिलती हैं।

  6. इन सभी वर्ग फ़ाइलों को सहेजें (jd-gui में, फ़ाइल नाम -> सभी स्रोत सहेजें) पर क्लिक करें। इस स्तर पर आपको जावा स्रोत मिलता है लेकिन .xml फ़ाइलें अभी भी पढ़ने योग्य नहीं हैं, इसलिए जारी रखें।

चरण 3:

अब एक और नया फ़ोल्डर खोलें

  1. उस .apk फ़ाइल में रखें जिसे आप डीकोड करना चाहते हैं

  2. Apktool और apktool इंस्टॉल विंडो का नवीनतम संस्करण डाउनलोड करें (दोनों को एक ही लिंक से डाउनलोड किया जा सकता है) और उन्हें एक ही फ़ोल्डर में रखें

  3. एक कमांड विंडो खोलें

  4. अब apktool if framework-res.apk और अगले apktool if framework-res.apk तरह कमांड चलाएँ

  5. apktool d myApp.apk (जहां myApp.apk फ़ाइल नाम को इंगित करता है जिसे आप डीकोड करना चाहते हैं)

अब आपको उस फ़ोल्डर में एक फ़ाइल फ़ोल्डर मिलता है और आसानी से एपीके की एक्सएमएल फाइलों को पढ़ सकता है।

चरण 4:

यह कोई भी कदम नहीं है केवल एक फ़ोल्डर में (दोनों मामले में दोनों नए फ़ोल्डर) की सामग्री कॉपी करें

और स्रोत कोड का आनंद लें ...


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

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


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

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


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

http://www.javadecompilers.com/apk

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







apk