एक एपीके फ़ाइल से एक परियोजना के लिए इंजीनियरिंग उल्टा


244

मैंने ग्रहण से अपनी परियोजना को गलती से मिटा दिया , और मेरे पास जो कुछ बचा है वह एपीके फ़ाइल है जिसे मैंने अपने फोन में स्थानांतरित कर दिया है। वहाँ एक .apk फ़ाइल के लिए एक आवेदन के निर्यात की प्रक्रिया को उल्टा करने का एक तरीका है, इसलिए मैं अपनी परियोजना को वापस पा सकता हूं?



2
क्या आप जानते हैं कि ग्रहण का अपना इतिहास है?
आईस


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

जवाबों:


287

दो उपयोगी उपकरण हैं जो एक अज्ञात एपीके फाइल से जावा कोड (लगभग अच्छा लेकिन काफी अच्छा) उत्पन्न करेंगे।

  1. डाउनलोड dex2jar उपकरण dex2jar से
  2. एपीके फ़ाइल को JAR में बदलने के लिए टूल का उपयोग करें :

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
    
  3. एक बार JAR फ़ाइल उत्पन्न होने के बाद, JAR -GUI का उपयोग JAR फ़ाइल को खोलने के लिए करें। आपको जावा फाइलें दिखाई देंगी।

आउटपुट के समान होगा:

जद जीयूआई


6
कैसे संसाधन फ़ाइलों को प्राप्त करने के लिए
श्री

26
cmd को पदावनत किया जाता है, d2j-dex2jarइसके बजाय (v0.0.9.15) का उपयोग करें ।
फ्रेड्रिक गॉस ने

1
@sri सिर्फ एपीके फ़ाइल को ज़िप में बदलने और इसे निकालने के लिए, आपके पास resफ़ोल्डर में संसाधन फाइलें होंगी
होआंग हुइन्ह

8
@HoHHHynh आपके पास resअपठनीय xml फ़ाइलों वाला एक फ़ोल्डर होगा
S.Thiongane

6
में Macयदि आप dex2jar उपयोग नहीं कर सकते: permission deniedतो ऐसा करने $sudo chmod +x d2j-dex2jar.sh
Min2

81

सबसे पहले मैं thisवीडियो की सिफारिश करता हूं यह आपके सभी संदेह को साफ करता है

अगर नहीं तो कृपया करके देखें

Procedure for decoding .apk files, step-by-step method:

Step 1:

एक नया फ़ोल्डर बनाएं और उसमें .apk फ़ाइल डालें (जिसे आप डीकोड करना चाहते हैं)। अब इस .apkफ़ाइल के एक्सटेंशन का नाम बदलें .zip(उदा .: filename.apk से filename.zip) का नाम बदलें और इसे सहेजें।

यदि .zip में परिवर्तित करने में समस्याएँ आती हैं तो कृपया देखें link

.Zip प्राप्त करने के बाद अब आपको classes.dex फाइलें इत्यादि मिल जाती हैं। इस स्तर पर आप ड्रा करने योग्य लेकिन एक्सएमएल और जावा फाइलों को नहीं देख सकते हैं, इसलिए जारी रखें। यदि आप एक्सटेंशन नहीं देखते हैं तो कॉन्फ़िगरेशन की जाँच करें

Step 2:

अब इस zip APK फ़ाइल को उसी फ़ोल्डर में निकालें। अब इससे dex2jar डाउनलोड करेंlink

और इसे उसी फ़ोल्डर में निकालें। अब कमांड प्रॉम्प्ट खोलें और डायरेक्टरी को उस फोल्डर में बदलें।

फिर लिखें dex2jar classes.dexऔर एंटर दबाएं। अब आपको classes.dex.dex2jarउसी फोल्डर में फाइल मिलती है ।

फिर जावा डिकम्पॉइलर डाउनलोड करें

और अब jd-gui पर डबल क्लिक करें और ओपन फाइल पर क्लिक करें। फिर classes.dex.dex2jarउस फोल्डर से फाइल को खोलें । अब आप क्लास फाइल्स प्राप्त करें और इन सभी क्लास फाइल्स को सेव करें (फाइल पर क्लिक करें और फिर jd-gui में "सभी सोर्स को सेव करें") पर क्लिक करें। उस ज़िप फ़ाइल को निकालें (classes_dex2jar.src.zip)और आपको एप्लिकेशन की सभी जावा फाइलें मिलेंगी।

इस स्तर पर आपको जावा स्रोत मिलता है, लेकिन xml फ़ाइलें अभी भी अपठनीय हैं, इसलिए जारी रखें।

Step 3:

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

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

  2. के लिए Apktool डाउनलोड windows v1.xऔरApktool

google का उपयोग करके विंडो स्थापित करें और उसी फ़ोल्डर में डालें

  1. डाउनलोड फ्रेमवर्क- res.apk फाइल को गूगल का उपयोग करके एक ही फोल्डर में रखें (सभी एपीके फाइल की जरूरत फ्रेमवर्क- res.apk फाइल नहीं है)

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

  3. एपीके की मूल निर्देशिका पर नेविगेट करें और निम्न कमांड टाइप करें: apktool if framework-res.apk.

उपरोक्त आदेश में परिणाम होना चाहिए Framework installed ...

  1. apktool d "appName" .apk ("appName" उस एप्लिकेशन को दर्शाता है जिसे आप डिकोड करना चाहते हैं) अब आपको उस फ़ोल्डर में एक फ़ाइल फ़ोल्डर मिलता है और अब आप आसानी से xml फ़ाइलों को भी पढ़ सकते हैं।

Step 4: अंत में हमें res/प्रोजेक्ट का जावा कोड भी मिला जो शुरू में हमारा लक्ष्य है।

P.S. यदि आप ऊपर दिए गए चरणों द्वारा रिस फ़ोल्डर प्राप्त नहीं कर पा रहे हैं तो कृपया नया स्थापित करें apktool

  • जावा 1.7 स्थापित है? Apktool 2.x स्थापित करें
  • जावा 1.6 या उच्चतर स्थापित है? Apktool 1.x स्थापित करें

Enjoy and happy coding


वास्तव में उपयोगी। आपने जो कुछ उल्लेख नहीं किया है: वह apktool.jarएक ही पैकेज में नहीं है, मैंने इसे एक पूर्व पैकेज से प्राप्त किया और इसे उसी रूप में पेस्ट किया apktool
एस.थिओनगेन

1
मैंने इंजीनियर को कोड उलट दिया, लेकिन क्लास का नाम क्यों है, वेरिएबल आ, bc, इत्यादि जैसे हैं और कई त्रुटियां भी हैं
user2934930

1
सीएमडी में ऐसा करने में असमर्थ
मेघवाल अग्रवाल

ऐसा करने का कोई अन्य तरीका?
मेघवाल अग्रवाल

2
@ user2934930 इसका मतलब है कि ProGuard का उपयोग करके कोड को बाधित कर दिया गया है।
cascal

58

कोई सॉफ्टवेयर और कोई कदम नहीं ..

बस अपना एपीके अपलोड करें और इस साइट से अपने सभी संसाधन प्राप्त करें ..

https://www.apkdecompilers.com/

यह वेबसाइट एपीके फाइलों में एम्बेड किए गए कोड को डिकम्पोज करेगी और फाइल में अन्य सभी परिसंपत्तियों को निकालेगी।

नोट: मैं अपनी एपीके फ़ाइल को डिकंपाइल करता हूं और इस वेबसाइट से एक मिनीट्यू के भीतर कोड प्राप्त करता हूं

अपडेट 1 :

मुझे एक और ऑनलाइन डिकम्पॉइलर साइट मिली,

http://www.javadecompilers.com/apk/ - पॉपअप ब्लॉकिंग के लिए लगातार काम नहीं करना

अपडेट 2:

मुझे play store में apk decompiler ऐप मिला,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

हम अपने एंड्रॉइड फोन में एपीके फाइलों को डिकंपाइल कर सकते हैं। और भी हम इस एप्लिकेशन में जावा और xml फ़ाइलों को देखने में सक्षम हो सकते हैं

अपडेट 3:

हम एंड्रॉइड स्टूडियो 2.2 संस्करण से एक अन्य विकल्प एनालाइज एपीके फीचर का उपयोग कर सकते हैं

बिल्ड -> विश्लेषण APK -> अपने एपीके का चयन करें -> यह परिणाम देते हैं

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


3
अंतिम विधि में हम जावा क्लास नहीं खोल सकते, केवल विधि के नाम दिखाता है
चोलत्स्की

@Choltski क्या आप ShowJava की कोशिश कर रहे हैं? अगर कोई कोशिश नहीं करता और मुझे अपडेट करता है
रंजीथ कुमार

@RanjithKumar इसकी 50 एमबी की एपीके साइज तक सीमित है .. मेरे पास 85 एमबी एपीके है।
रवि शर्मा


1
एंड्रॉइड स्टूडियो में उस विघटित परियोजना को कैसे चलाएं? किसी को भी इस बारे में लिख सकते हैं।
मयूर कुकडिय़ा


4

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


@MAC: उसे एपीके फ़ाइल के स्रोत की आवश्यकता है !!
शशांक कडने

2
@ शशांककडेन हो सकता है कि मैं अपने शब्दों को वापस नहीं ले रहा हूं
मैक

3

हां, आप अपना प्रोजेक्ट वापस पा सकते हैं। बस yourproject.apkफ़ाइल का नाम बदलें yourproject.zip, और आपको उस ज़िप फ़ाइल के अंदर सभी फ़ाइलें मिलेंगी। हम .apk से .zip तक फ़ाइल एक्सटेंशन बदल रहे हैं। उस ज़िप फ़ाइल से, फ़ाइल को निकालें classes.dexऔर इसे निम्न तरीके से अपघटित करें।

सबसे पहले, आपको DEX पर JAR की सभी (संकलित) कक्षाओं को निकालने के लिए एक उपकरण की आवश्यकता होती है। वहाँ एक डीएक्स 2जर कहा जाता है , जो एक चीनी छात्र द्वारा बनाया गया है।

उसके बाद, आप JD-GUI का उपयोग JAR से कक्षाओं को स्रोत कोड में विघटित करने के लिए कर सकते हैं । परिणामस्वरूप स्रोत कोड काफी पठनीय होना चाहिए, क्योंकि dex2jar कुछ अनुकूलन लागू करता है।


3

एंड्रॉइड प्लेटफ़ॉर्म के लिए, आप शो स्टोर पर उपलब्ध शोजवा की कोशिश कर सकते हैं ।

आप एप्लिकेशन इंटरफ़ेस के माध्यम से उत्पन्न कोड से परामर्श कर सकते हैं और उत्पन्न जावा फ़ाइलों और फ़ोल्डरों की संरचना में रूपांतरण के परिणामस्वरूप फ़ाइल के साथ ShowJavaफ़ोल्डर में संग्रहीत किया जाता है ।/sdcard.jar

एप्लिकेशन मुख्य दृश्य के निचले भाग में एक विज्ञापन बैनर के साथ नि: शुल्क है, लेकिन इसे हटाने के लिए इन-ऐप खरीदारी विकल्प (3,99 $) है। इन-ऐप खरीदारी विज्ञापन बैनर को हटाने के साथ कोई कार्यक्षमता नहीं जोड़ती है।

प्रकटीकरण: मैं एप्लिकेशन का डेवलपर नहीं हूं और न ही मैं किसी भी तरह से उसके साथ संबद्ध हूं।


मैं आमतौर पर इसके लिए उपयोग करता हूं ... नाइस ऐप
राहुल कुशवाहा

2

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

  • एपीके फ़ाइल को ज़िप में बदलें
  • फ़ाइल खोलना
  • इससे classes.dex निकालें
  • jx फ़ाइल में classes.dex में बदलने के लिए डेक्स टू जार का उपयोग करें
  • जावा फाइल को java source कोड के रूप में खोलने के लिए jadx gui का उपयोग करें

2

यदि आप एक पेशेवर विकल्प की तलाश कर रहे हैं, तो PNF सॉफ़्टवेयर से JEB Decompiler पर एक नज़र डालें ।

एक डेमो संस्करण है जो आपको अधिकांश कोड को डिकंपाइल करने देगा।


2

नीचे कुछ उपकरण दिए गए हैं जिनका उपयोग आप एपीके फ़ाइल से स्रोत कोड में रिवर्स इंजीनियरिंग करने के लिए कर सकते हैं:

  1. Dex2jar
  2. जावा विघटित करने वाला
  3. Apktool
  4. एप विश्लेषक

2

एंड्रॉइड स्टूडियो 3.5 में, यह इतना आसान है कि आप इसे एक मिनट में हासिल कर सकते हैं। निम्नलिखित एक चरण वार प्रक्रिया है।

1: ओपन एंड्रॉइड स्टूडियो, प्रेस विंडो बटन -> एंड्रॉइड स्टूडियो टाइप करें -> एंड्रॉइड स्टूडियो स्प्लैश स्क्रीन खोलने के लिए आइकन पर क्लिक करें जो इस तरह दिखाई देगा।

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

2: यहां आप एक विकल्प "प्रोफाइल या डिबग एपीके" देख सकते हैं, उस पर क्लिक करें और अपनी एपीके फाइल चुनें और ओके दबाएं।

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

3: यह एपीके के आकार के आधार पर आपके सभी प्रकट और जावा क्लासेस को एक मिनट में खोल देगा।

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

बस।


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