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


1260

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

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


28
FYI करें यहाँ
edwin

11
क्या इसका मतलब है कि हम व्हाट्सएप या फेसबुक जैसे एप्लिकेशन के मिलियन डॉलर मूल्य के स्रोत कोड प्राप्त कर सकते हैं? क्या यह सब खुला स्रोत है?
फैजान

3
@ फैजान क्या आपने गार्ड के बारे में सुना है ??
विश्वजीत पलंकार

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

2
में इस लेख वे कैसे वे रिवर्स इंजीनियर पोकीमॉन जाओ समझाने
ऐन्डर्स

जवाबों:


1569

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


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

चरण 1:

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

  2. अब इस .apk फ़ाइल के एक्सटेंशन का नाम बदलकर .zip (जैसे filename.apk से filename.zip) का नाम बदलें और इसे सहेजें। अब आप classes.dex फाइल्स आदि को एक्सेस कर सकते हैं। इस स्तर पर आप ड्रॉबल्स देख सकते हैं, लेकिन xml और java फाइल्स नहीं, इसलिए जारी रखें।

चरण 2:

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

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

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

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

  5. Java decompiler डाउनलोड करें, jd-gui पर डबल क्लिक करें, खुली फ़ाइल पर क्लिक करें, और उस फ़ोल्डर से classes.dex.dex2jar फ़ाइल खोलें: अब आपको क्लास फाइलें मिलती हैं।

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

चरण 3:

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

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

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

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

  4. अब जैसे कमांड चलाते हैं apktool if framework-res.apk(यदि आपके पास यह नहीं है तो इसे यहां प्राप्त करें ) और अगला

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

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

चरण 4:

यह कोई भी कदम नहीं है, दोनों फ़ोल्डरों की सामग्री की प्रतिलिपि बनाएँ (इस मामले में, दोनों नए फ़ोल्डर) एक ही

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


26
@prankulgarg, चरण 3 के अंक 5 में मुझे निम्न त्रुटि मिल रही है: jarfile E: \ apktojava \ testt \\ के लिए उपयोग करने में असमर्थ \ ntttool.jar

55
बजाय cmx में dex2jar classes.dex लिखने की बजाय d2j-dex2jar classes.dex आज़माएं । क्योंकि dex2jar classes.dex इस cmd को हटा दिया गया है।
उमेश

23
जो नहीं मिल रहा है उनके लिए framework-res.apk। इसे यहाँ
atulkhatri

12
जो यहाँ से d2j-dex2jar.sh, डाउनलोड dex2jar नहीं मिला जो: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed

14
चरण 2: 4 में फंसे लोगों के लिए इस संस्करण को डाउनलोड करें और यह समस्या को हल करेगा: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download यह मेरे लिए किया था। @delive
siriuseteor77

126

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

  1. डाउनलोड apktool.bat(या apktoolलिनक्स के लिए) और apktool_<version>.jarसे http://ibotpeaches.github.io/Apktool/install/
  2. ऊपर से जार फ़ाइल का नाम बदलें apktool.jarऔर दोनों फ़ाइलों को एक ही फ़ोल्डर में रखें

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

    मध्यवर्ती परिणाम : संसाधन फ़ाइलें,AndroidManifest.xml

  5. unzip APK फ़ाइल को अपनी पसंद के अनपैकर के साथ

    इंटरमीडिएट का परिणाम :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. खींचें और ड्रॉप classes.dexपर dex2jar.bat(या में प्रवेश <path_to>\dex2jar.bat classes.dexएक डॉस बॉक्स में, लिनक्स उपयोग के लिए dex2jar.sh)

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

  8. अनपैक classes_dex2jar.jar(प्रयुक्त डीकॉम्पेलर के आधार पर वैकल्पिक हो सकता है)
  9. अपनी वर्ग फ़ाइलों को अपघटित करें (जैसे JD-GUI या डीजे डिकंपाइलर के साथ )

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

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


6
मैं यह भी जोड़ सकता हूं, कि इस APKTool-> dex2jar-> JD-GUI मार्ग का आधुनिक विकल्प है! बस ओपन-सोर्स एपीके आज़माएं और JEXx नाम का DEX डिकंपाइलर: sourceforge.net/projects/jadx/files इसका भी यहां ऑनलाइन संस्करण है: javadecompilers.com/apk
एंड्रयू रूकिन सेप

1
किसी भी एपीके फ़ाइल को विघटित करने की अनुमति है (पढ़ें: कानूनी) । निम्नलिखित प्रश्न देखें: stackoverflow.com/questions/9674557/…
Rakete1111

1
वे फाइलें क्यों apktoolलौटाते हैं smali? javaफ़ाइल कैसे प्राप्त करें ?
रमीनाज

108

जब आप अपनी APKफ़ाइल को विघटित करने में सक्षम हो सकते हैं , तो आप संभवतः एक बड़ा मुद्दा मारेंगे:

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

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

और इसे कैसे वापस किया जाए।


19
ड्रॉपबॉक्स जैसी सेवा भी मदद करेगी।
जेरेमी लोगान

1
और हमेशा सीडी का जलाने का एक तरीका है
जेरीगोपाल

52

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

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


1
यह सबसे आसान है।
मिधुन विजयकुमार

@MidhunVijayakumar क्या आप इसका उपयोग करके apk को स्रोत कोड रूपांतरण में सक्षम कर सकते हैं?
सजीव Saj

28

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

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


यदि आप संसाधनों को निकालना चाहते हैं, तो आपको APKtool अपरिहार्य मिलेगा (यानी Android एप्लिकेशन से छवियां। वास्तव में, टूल में कोई भी प्रतियोगी नहीं है!) Apktool का एक ऑनलाइन संस्करण यहां उपलब्ध है: www.javadecompilers.com/apolool
एंड्रयू रुकिन

23

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

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

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

मूल रूप से आप:

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

2
मुझे पता है कि यह प्रश्न अभी भी उत्तर दिया गया है, मैं एक जानकारी पास करना चाहूंगा: एंड्रॉइड एप के लिए एक ऑनलाइन डिकंपाइलर है decompileandroid.com स्थानीय मशीन से एपीके APK अपलोड करें, कुछ क्षण प्रतीक्षा करें, ज़िप प्रारूप में स्रोत कोड डाउनलोड करें।
स्नेहल मास

2
अच्छा लगता है। और फिर decompileandroid वेबसाइट में भी आपके सभी स्रोत की एक प्रति है! चतुर!
DDSports

एक प्रश्न, मेरे पास एक एपीके विघटित है, लेकिन jd gui में मुझे नहीं पता कि क्या जावा की वास्तविक कक्षाएं हैं, क्या आपको पता है कि क्या कोई एपीके विघटित होता है क्या असली जावा कक्षाएं हैं?

21

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

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


16

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

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

    यह आपको एंड्रॉइड स्टूडियो में APK को खोलने और एक्सप्लोर करने की अनुमति देता है। कक्षाएं स्माली में विघटित हो जाती हैं। संसाधन निकाले नहीं जाते हैं और "गो टू डेफिनिशन", "फाइंड ऑल रेफरेंस" और डिबगिंग जैसे स्रोत कोड (एंड्रॉइड स्टूडियो 3.0 कैनरी 9) के बिना काम नहीं करते हैं। कुछ अतिरिक्त स्माईली सुविधाएँ स्मगलिया के साथ काम कर सकती हैं

    एंड्रॉयड स्टूडियो

    फ़ाइल का चयन करें

    कोड

  2. Jadx का उपयोग करें ।

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

    jdax-img

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

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

    $ 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...

मैंने jadx की कोशिश की है, लेकिन यहां तक ​​कि साधारण हेलोवर्ल्ड के साथ, हालांकि यह जावा में इसे विघटित करता है, फिर भी, एंड्रॉइड स्टूडियो में परियोजना को खोलने की कोशिश कर रहा है, और इसे वापस एपीके में संकलित करने की कोशिश कर रहा है, कई कारणों से (अनुलिपि फ़ाइलें, आदि) विफल रहता है। क्या कोई ऐसा तरीका है जो जावा बनाता है जिसे वापस एपीके में संकलित किया जा सकता है?
रैनश

1
@ransh कोड को संशोधित करने के लिए मैं आमतौर पर कोड पढ़ने के लिए jadx का उपयोग करता हूं। apktool जावा नहीं बनाता है, लेकिन यह फिर से संकलन के लिए अनुमति देता है।
0xcaff

0xcaff, स्पष्टीकरण के लिए धन्यवाद। अब समझ में आता है। बेस्क्यू एंड्रॉइड स्टूडियो में एक डिकॉम्पाइल जावा को संकलित करने की कोशिश कर रहा था, काम नहीं कर रहा था।
रंश

16

स्रोत देखने में आसान हो सकता है:

एंड्रॉयड स्टूडियो 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


9
यह कक्षाओं और विधियों को सूचीबद्ध करता है लेकिन स्रोत कोड नहीं देता है।
डब्ल्यूएसएस

आप उपरोक्त फाइलों को केवल ".apk" से ".zip" में बदलकर प्राप्त कर सकते हैं
एम। उस्मान खान

7

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

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

चरण 3':

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

इसलिए,

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

दूसरा - आपको .dex फ़ाइल को डीकोड करना होगा (यदि आप चाहें, तो .apk फाइल को डेक्स 2जार को डिकोड करें , यह है)

3 - आपको JD-GUI के साथ .jar फ़ाइल को डीकोड करना होगा


20
यह उत्तर क्या प्रदान करता है कि अन्य नहीं करते हैं?
जोर्जेन आर

आपको वास्तव में इसे ज़िप में बदलने के लिए नहीं है। मैं 7-ज़िप के साथ सीधे एपीके फ़ाइल खोल सकता हूं।
miva2

7

ऑनलाइन टूल के नीचे :

http://www.javadecompilers.com/apk

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


हां, यह बहुत अच्छा है, लेकिन फ़ंक्शन नामों के बजाय, इसने सभी फ़ंक्शन नामों को CS1001 और इतने पर बदल दिया है। तो इनको कैसे पहचाने। और एक बात और, क्या हम इस विघटित apk को सीधे अपने Android स्टूडियो प्रोजेक्ट के रूप में उपयोग कर सकते हैं, क्या यह काम करेगा?
ज़िया उर रहमान

तब हम किस उद्देश्य के लिए कुछ अपंगों को अपघटित करने के लिए उपयोग करते हैं, यदि हम उनकी कार्यक्षमता का उपयोग अपने ऐप्स में नहीं कर सकते हैं।
ज़िया उर रहमान

@ZiaUrRahman मुझे नहीं पता। हालाँकि मैं अपने मामले में एल्गोरिथ्म का विश्लेषण करने के लिए कोड को डिकंपाइल करता हूँ। क्या आप जांचते हैं कि उस उपकरण से कोड विघटित कोड को पूरी तरह से स्वचालित तरीके से एंड्रॉइड स्टूडियो द्वारा संकलित किया जा सकता है - या कुछ "मानव प्रसंस्करण" की आवश्यकता है?
कामिल Kiełczewski

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

6

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

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


मैं अपने जावा स्रोत कोड पुनर्प्राप्त सके ... यह संलग्न फाइल की तरह somethins appeare और ..
ईमान kazemayni

ऊपर दिए गए लिंक में @imankazemayni, अपनी एपीके फ़ाइल में "ब्राउज़ करें" और "अपने एपीके को अपघटित करें" पर क्लिक करें। कुछ समय लगेगा और फिर यह आपको सोर्स कोड देना चाहिए, अगर कोड एनक्रिप्टेड नहीं है।
एम। उस्मान खान

क्या आप जानते हैं कि एन्क्रिप्ट करने पर मल्टीडेक्स प्रभाव पड़ता है?
iman kazemayni

6

मैं स्रोत कोड प्राप्त करने के लिए व्यक्तिगत रूप से शो जावा एंड्रॉइड ऐप की सिफारिश करता हूं । आप इसे play store से या यहाँ से डाउनलोड कर सकते हैं


ज्यादातर ऑनलाइन कंपाइलर काम नहीं कर रहे हैं, लेकिन यह ऐप काम कर रहा है। धन्यवाद
सुनील

4

Apktool रिवर्स इंजीनियरिंग 3 पार्टी, बंद, बाइनरी एंड्रॉइड ऐप के लिए।

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

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

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


3

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

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

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


3

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


हैलो, एंड्रॉइड स्टूडियो के साथ डेक्सपैकर का उपयोग कैसे करें?
रवि १५२

टिप्पणियों में सब कुछ नहीं समझा सकता। Google आपका दोस्त है :) कुछ अच्छे youtube ट्यूटोरियल भी हैं।
लक्ष्मीकांत देशपांडे

2

अपनी स्थिति के आधार पर, अगर आपका Android APK:

कंडिशन 1: टेनसेंट कठोर नहीं है (Tencent लेगु / किहु 360 / ...)

विकल्प 1: ऑनलाइन सेवा का उपयोग करना

जैसे कि:

www.javadecompilers.com का उपयोग कर

के लिए जाओ:

ऑटो से एपीके से जावा सोर्सकोड तक डिकोड करें

कदम:

uploadएपीके फ़ाइल + क्लिक करें Run+ कुछ समय प्रतीक्षा करें + Downloadज़िप + अनज़िप -> प्राप्त करने के लिए क्लिक करें

sources/com/{yourCompanyName}/{yourProjectName}

आपका अपेक्षित जावा स्रोत कोड है

च्वाइस 2: अपघटन / दरार अपने आप से

अपने आप से अपघटन / दरार से संबंधित उपकरण का उपयोग करें:

का उपयोग jadx/ jadx-guiकन्वर्ट apkकरने के लिएjava sourcecode

डाउनलोड jadx-0.9.0.zip तब प्राप्त करने के लिए अनज़िप करें bin/jadx:

  • कमांड लाइन मोड:
    • टर्मिनल रन में: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder डिकोडेड दिखाएगा sourcesऔरresources
      • sources/com/{yourCompanyName}/{yourProjectName} आपकी उम्मीद है java sourcecode
  • जीयूआई मोड
    • चलाने के लिए डबल क्लिक करें jadx-0.9.0/bin/jadx-gui(लिनक्स jadx-gui.sh/ विंडोज का jadx-gui.bat)
    • खुली apkफाइल
    • यह ऑटो डिकोडिंग -> आपके अपेक्षित जावा सोर्सकोड को देखेगा
    • save all या save as Gradle project

उदाहरण के लिए:

कंडीशन 2: हार्डेन (Tencent लेगु / किहु 360 / ...)

की मुख्य विधि 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

विस्तृत विवरण:

चरण 1: apk/app to dex

रनिंग ऐप से टूल ( FDex2/ DumpDex) डंप / हुक आउट (एक या एकाधिक) dexफ़ाइल का उपयोग करें

कदम:

पर्यावरण तैयार करें

  • एक rootएड Android
  • अपने Android APK स्थापित करें
    • फोन या एमुलेटर के लिए
  • स्थापित Xposed इंस्टालर
  • XPosed में FDex2/ DumpDex स्थापित करें और इसे सक्षम करें
  • फ़ोन / एमुलेटर पर अपना एंड्रॉइड एपीके इंस्टॉल करें

dexरनिंग ऐप से डंप करें

  • चला FDex2तो / पर कब्जा करने के लिए बाद में सक्षम डेक्स बाहर हुक करने आपके apk नाम पर क्लिक करें

  • (फोन / एमुलेटर में) अपना ऐप चलाएं
  • ढूँढें और डंप आउट की पूरी कॉपी करें /data/data/com/yourCompanyName/yourProjectName
    • इसके रूट फ़ोल्डर में आम तौर पर कई dexफ़ाइल मिलेंगी

चरण 2: dex to jar

फाइल करने के लिए टूल ( dex2jar) कन्वर्ट (विशिष्ट, एप्लिकेशन तर्क युक्त) dexका jarउपयोग करें

डाउनलोड dex2jar मिला dex-tools-2.1-SNAPSHOT.zip , unzip गॉट dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, तो

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

उदाहरण के लिए:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

चरण 3: jar to java src

उपकरणों में से एक का उपयोग करें:

धर्मांतरित jar करेंjava src

जार से जावा src परिवर्तित प्रभाव के लिए:

Jadx> Procyon>CRF >>JD-GUI

इसलिए उपयोग की सलाह दें: Jadx /jadx-gui

कदम:

  • चलाने के लिए डबल क्लिक करें jadx-gui
  • खुला हुआ dexफाइल
  • File -> save all

उदाहरण के लिए:

निर्यात जावा src:


अधिक विस्तृत विवरण मेरे ऑनलाइन ई-बुक चीनी ट्यूटोरियल देख सकते हैं :


2

एंड्रॉइड स्टूडियो आपको किसी भी apk फ़ाइल का विश्लेषण करने की पेशकश करता है।

1 - बिल्ड मेन्यू से एपीके ऑप्शन का विश्लेषण करें और एपीके फाइल चुनें। 2 - इससे आपको classes.dex फाइल और अन्य फाइलें मिलेंगी। 3 - classes.dex पर क्लिक करें जो आपको फ़ोल्डर्स, पैकेज, लाइब्रेरी और फाइलों की सूची देगा। 4 - से और एंड्रॉइड स्टूडियो सेटिंग्स "डेक्स टू जार" 5 नामक एक प्लगइन स्थापित करती हैं - अपने निकाले गए प्रोजेक्ट की किसी भी गतिविधि फ़ाइल पर क्लिक करें और बिल्ड मेनू से जार को चुनें।

यह आपके जावा फ़ाइल के वास्तविक कोड का परिणाम देगा।

चीयर्स।


1

सबसे सरल तरीका Apk OneClick Decompiler का उपयोग कर रहा है। यह अपघर्षक और जुदा APK (Android संकुल) को हटाने के लिए एक उपकरण पैकेज है।

विशेषताएं

  • सभी सुविधाओं को विंडोज के राइट-क्लिक मेनू में एकीकृत किया गया है।
  • Decompile APK कक्षाएं जावा स्रोत कोड के लिए।
  • जुदा एपीके को स्माली कोड और उसके संसाधनों को डिकोड करें।
  • राइट-क्लिक करके फोन में एपीके इंस्टॉल करें।
  • स्माल कोड और / या संसाधनों को संपादित करने के बाद Recompile APK। Recompile के दौरान:
  • Png छवियाँ ऑप्टिमाइज़ करें
  • साइन अप्स
  • zipalign

आवश्यकताएँ

जावा रनटाइम एनवायरनमेंट (JRE) स्थापित किया जाना चाहिए।

आप इसे इस लिंक Apk OneClick Decompiler से डाउनलोड कर सकते हैं

आनंद लो इसका।


1

मैंने निम्नलिखित को सबसे सरल विधि के रूप में पाया:

  1. अपने app.apk को app.zip में बदलें (एपीके से ज़िप में विस्तार बदलें)
  2. ज़िप फ़ाइल को एक फ़ोल्डर में निकालें
  3. Source.dex फ़ाइल में मौजूद स्रोत कोड को पढ़ने के लिए JADX टूल का उपयोग करें ।

1

उसके लिए एक ऐप है और आम तौर पर बस कुछ ही क्लिक होते हैं और आप कर रहे हैं। https://github.com/Nuvolect/DeepDive-Android

  1. "इंस्टॉल किए गए ऐप्स" के तहत ऐप्स चुनें, अपना ऐप चुनें। यदि यह वहां नहीं है तो आप एपीके लोड कर सकते हैं।
  2. "APK निकालें" चुनें
  3. "अनपैक एपीके" चुनें
  4. "Jadx के साथ Decompile" का चयन करें। यह आपके डिवाइस की गति के आधार पर कुछ सेकंड या कुछ मिनट ले सकता है

उसके बाद आप स्रोत कोड को ब्राउज़ कर सकते हैं, इसे elFinder के साथ किसी अन्य कंप्यूटर पर डाउनलोड कर सकते हैं या Lucene का उपयोग करके खोज कर सकते हैं।

जेडएक्स के अलावा इसमें सीएफआर और फर्नफ्लावर डीकंपाइलर हैं।


0

मैं खुद को पागलों की तरह दिनों के लिए चला रहा हूँ डेक्स 2जर को एक फेडोरा 31 लैपटॉप पर काम करने की कोशिश कर रहा हूं एक एपीके के खिलाफ एक लैपटॉप जो सिर्फ काम करने वाला नहीं था। इस अजगर 3 स्क्रिप्ट ने मिनटों में चाल चली और jd-gui की बनी क्लास की फाइलों को मानव पठनीय बना दिया।

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

विशेष रूप से, यहाँ मैं क्या भागा:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

अब किसी को कक्षा फ़ाइलों को प्राप्त करने के लिए निम्नलिखित में रम करने में सक्षम होना चाहिए:

$> enjarify yourapkfile.apk

और jd-gui शुरू करने के लिए:

$> jd-gui

फिर बस अपनी कक्षा की फाइलें खोलें!


0

मैंने एक टूल - कोड एनालाइज़र विकसित किया है, यह जावा / एंड्रॉइड फ़ाइलों, https://decompile.io का विश्लेषण करने के लिए iPhone / iPad / Mac में चलता है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


0

इस उपकरण का उपयोग करें http://www.javadecompilers.com/

लेकिन हाल ही में, डिकम्पाइलर्स की एक नई लहर बाजार पर उतारी गई है: प्रोसीओन, सीएफआर, जेडी, फर्नाफ्लावर, क्राकाटाऊ, कैंडल।

इस साइट पर प्रस्तुत किए गए डिकम्पाइलरों की एक सूची इस प्रकार है:

सीएफआर - मुफ्त, कोई स्रोत-कोड उपलब्ध नहीं, http://www.benf.org/other/cfr/ लेखक: ली बेनफील्ड

बहुत अच्छी तरह से अद्यतन किया गया अपघटन! सीएफआर आधुनिक जावा सुविधाओं - जावा 9 मॉड्यूल, जावा 8 लैम्ब्डा, जावा 7 स्ट्रिंग स्विच आदि को अपघटित करने में सक्षम है। यह अन्य जेवीएम लैंगगेज से जावा में वापस क्लास फ़ाइलों को मोड़ने का एक अच्छा साधन बना देगा!

जद - केवल गैर-व्यावसायिक उपयोग के लिए नि: शुल्क, http://jd.benow.ca/ लेखक: इमैनुएल डूपुय

2015 में अपडेट किया गया है, ग्रहण और IntelliJ के लिए अपने स्वयं के दृश्य इंटरफ़ेस और प्लगइन्स हैं। C ++ में लिखा गया है, इसलिए बहुत तेजी से। जावा 5 का समर्थन करता है।

प्रोसीओन - ओपन-सोर्स, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler लेखक: माइक स्ट्रोबेल

फ़र्नफ़्लावर - ओपन-सोर्स, https://github.com/fesh0r/fernflower लेखक: एगोर उशाकोव

2015 में अपडेट किया गया। बहुत ही होनहार विश्लेषणात्मक जावा डिकंपाइलर, अब IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-dompompiler) का एक अभिन्न अंग बन गया है ) का (एनोटेशन, जेनरिक, एनम)

JAD - केवल ऐतिहासिक कारण के लिए यहां दिया गया है। नि: शुल्क, कोई स्रोत-कोड उपलब्ध नहीं है, जेड डाउनलोड मिरर लेखक: पावेल कॉज़नेत्सोव

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