दिलचस्प पोस्ट
अन्य कॉलम के अनुसार MySql समूह और कुल योग जावा में एक्स + + और ++ एक्स के बीच क्या कोई अंतर है? सी # – मूल प्रश्न: '?' क्या है? आईफोन पर एक यूआरएल को कैसे मान्यता दी जाए VBS से कमांड लाइन और कमांड चलाएं अस्थिर सामग्री की फ्लैश को हटा दें Javascript में JSON ऑब्जेक्ट की सरणी के लिए JSON स्ट्रिंग कन्वर्ट करें जावा में एक वेब पेज का एक स्क्रीनशॉट लो MySQL एक मेज को छोड़कर डेटाबेस को सभी विशेषाधिकारों को प्रदान करता है MVC3.0 में चेकबॉक्स सूची क्या C ++ में संपूर्ण सी भाषा होती है? विधानसभा एक्स 86 नंबर की तारीख – छोटे वर्गों में एक स्ट्रिंग तोड़कर एक्सेल VBA यदि वर्कशीट ("wsName") मौजूद है डीओएस लाइन के अंत में लिनक्स लाइन के अंत में कनवर्ट करें आप Xcode 4.2 में एआरसी प्रोजेक्ट-वाइड को कैसे सक्षम करते हैं

डेकोरेटिंग डीईएक्स में जावा स्रोतकोड

एक एंड्रॉइड डीईएक्स (वीएम बायटेकोड) फ़ाइलों को संबंधित जावा स्रोतकोड में कैसे डिकंपेल कर सकता है?

Solutions Collecting From Web of "डेकोरेटिंग डीईएक्स में जावा स्रोतकोड"

यह आसान है

इन उपकरणों को प्राप्त करें:

1) डेक्स 2 jar , जो एक चीनी छात्र द्वारा बनाई गई है। यह डेक फ़ाइलों को जार फ़ाइलों में अनुवादित करेगा

2) जार में जावा फाइलों को देखने के लिए jd-gui

स्रोत कोड काफी पठनीय है क्योंकि dex2jar कुछ अनुकूलन करता है।

प्रक्रिया:

और यहाँ कैसे decompile पर प्रक्रिया है:

चरण 1:

Test_apk-debug_dex2jar.jar पर test_apk-debug.apk में classes.dex कन्वर्ट करें

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk 

नोट: विंडोज मशीनों में सभी .sh स्क्रिप्टों को .bat स्क्रिप्ट्स द्वारा प्रतिस्थापित किया जाता है

dex2jar प्रलेखन

चरण 2:

जेडी-जीयूआई में जार खोलें

विघटित स्रोत

कुछ हद तक स्पष्ट करने के लिए, यहां दो प्रमुख मार्ग हैं जिन्हें आप यहां पूरा कर सकते हैं:

डेलविक बाइटकोड (डेक्स) को पठनीय जावा स्रोत में हटाएं। आप इसे आसानी से dex2jar और jd-gui के साथ कर सकते हैं, जैसा फ्रेड का उल्लेख है। परिणामी स्रोत एप की कार्यक्षमता को पढ़ने और समझने में उपयोगी है, लेकिन संभवत: 100% प्रयोग करने योग्य कोड का उत्पादन नहीं होगा। दूसरे शब्दों में, आप स्रोत पढ़ सकते हैं, लेकिन आप वास्तव में इसे संशोधित और पुनर्प्रेषित नहीं कर सकते। ध्यान दें कि यदि प्रोजेक्टर के साथ स्रोत को अस्पष्ट किया गया है, तो परिणामी स्रोत कोड को अनटैसल करने में काफी अधिक मुश्किल होगा।

दूसरा प्रमुख विकल्प, बाईटकोड को स्माली से अलग करना है, इस उद्देश्य के लिए एक असेंबली भाषा को डिज़ाइन किया गया है। मैंने पाया है कि ऐसा करने का सबसे आसान तरीका apktool के साथ है एक बार जब आप अप्कॉल इंस्टॉल कर लेते हैं, तो आप इसे केवल एक एपीके फ़ाइल में इंगित कर सकते हैं, और आपको आवेदन में दी गई प्रत्येक वर्ग के लिए एक स्माली फाइल वापस मिल जाएगी। आप smali को पढ़ और संशोधित कर सकते हैं या नए जावा स्रोत से स्माली जेनरेट करके पूरी तरह से कक्षाओं को बदल सकते हैं (ऐसा करने के लिए, आप जावा। स्रोत के साथ .class फ़ाइलों को javac के साथ संकलित कर सकते हैं, फिर अपने .class फ़ाइलों को एंड्रॉइड के साथ। डीएक्स कंपाइलर, और उसके बाद इस प्रश्न में वर्णित के रूप में .smali फ़ाइलों को .dex कन्वर्ट करने के लिए baksmali (smali disassembler) का उपयोग करें । यहां एक शॉर्टकट हो सकता है)। एक बार जब आप कर लेंगे, तो आप एपीके को फिर से एपकेल के साथ आसानी से पैकेज कर सकते हैं। ध्यान दें कि apktool परिणामी एपीके पर हस्ताक्षर नहीं करता है, इसलिए आपको किसी अन्य एंड्रॉइड एप्लिकेशन की तरह ही इसका ध्यान रखना होगा।

यदि आप स्माली मार्ग पर जाते हैं, तो आप एपीके स्टूडियो , एक आईडीई की कोशिश कर सकते हैं, जो आपको एपीके को दुबारा बनाने और पुनः कंपाइल करने और डिवाइस पर इसे स्थापित करने में मदद करने के लिए ऊपर दिए कुछ चरणों को स्वचालित करता है।

संक्षेप में, आपकी पसंद जावा में डिकंपिल करने के लिए बहुत अधिक हैं, जो कि अधिक पठनीय है लेकिन संभावित रूप से अपरिवर्तनीय है, या स्माली को अलग करने के लिए, जो पढ़ने में कठिन है, लेकिन बदलाव करने और संशोधित ऐप को पुनर्प्रेषित करने के लिए अधिक लचीला है। आप किस दृष्टिकोण को चुनते हैं, उस पर निर्भर करेंगे जो आप प्राप्त करना चाहते हैं।

अंत में, हिम्मत का सुझाव भी नोट का है। जावा। क्लास फाइल में .dex और .apk फ़ाइलों को कनवर्ट करने के लिए यह एक पुनः अनुरेखण उपकरण है, ताकि वे ठेठ जावा स्टैटिक विश्लेषण टूल का उपयोग करके विश्लेषण कर सकें।

मैं वास्तव में यहाँ जाने की सलाह देता हूं: https://github.com/JesusFreke/smali

यह बैक्सलाइ प्रदान करता है, जो डीईएक्स फाइलों के लिए सबसे उत्कृष्ट रिवर्स-इंजीनियरिंग टूल है। यह JesusFreke द्वारा बनाया गया है, वह लड़का है जो एंड्रॉइड के लिए प्रसिद्धिपूर्ण रोम बनाता है।

फ्रेड के उत्तर का एक और पूर्ण संस्करण:

मैनुअल मार्ग

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

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

स्वचालित तरीका

आप APKTool का उपयोग कर सकते हैं यह स्वचालित रूप से सभी वर्गों ( .dex ), संसाधन ( .asrc ) .asrc , फिर यह बाइनरी XML को मानव-पठनीय XML में कनवर्ट करेगा, और यह आपके लिए कक्षाओं को भी अलग करेगा।
असंतुलन हमेशा डिकंपलिंग से अधिक मजबूत होगा, विशेष रूप से
Jars प्रो गार्ड के साथ obfuscated!

बस APKTool को एपीके को एक निर्देशिका में डीकोड करने के लिए कहें, फिर आप जो चाहें संशोधित करें ,
और अंत में एक एपीके में वापस सांकेतिक शब्दों में बदलना । बस इतना ही।

महत्वपूर्ण: APKTool dissassembles यह डिकंपाइल नहीं है
उत्पन्न कोड जावा स्रोत नहीं होगा।
लेकिन आप इसे पढ़ने के लिए सक्षम होना चाहिए, और यहां तक ​​कि इसे संपादित भी अगर आप जाति से परिचित हैं।
यदि आप जावा स्रोत चाहते हैं, तो मैन्युअल तरीके से आगे बढ़ें

कभी-कभी आपको dex2jar / apktool का प्रयोग करते समय, टूटा हुआ कोड मिलता है, सबसे विशेष रूप से लूप में। इस से बचने के लिए, jadx का उपयोग करें , जो जावा एसओएस कोड में dex2jar को dex2jar करता है, बिना किसी .jar / .class फ़ाइल को dex2jar बिना, dex2jar करता है (एपीकेटोल ने मुझे लगता है कि डेक्स 2जर का इस्तेमाल होता है)। यह खुले-स्रोत और सक्रिय विकास में भी है। जीयूआई-कट्टरपंथियों के लिए यहां एक GUI भी है कोशिश करो!

चूंकि किसी ने इसका उल्लेख नहीं किया है, इसलिए एक और उपकरण है: डीईडी होमपेज

कैसे और कुछ स्पष्टीकरण स्थापित करें: स्थापना

इसका उपयोग शीर्ष बाज़ार क्षुधा की सुरक्षा का एक बहुत ही रोचक अध्ययन में किया गया था (वास्तव में संबंधित नहीं है, सिर्फ अगर आप उत्सुक हैं): एंड्रॉइड एप्लिकेशन सुरक्षा का एक सर्वेक्षण

एक बार जब आप अपनी एपीके फ़ाइल डाउनलोड करते हैं, तो आपको संपादन योग्य जावा कोड / दस्तावेज प्राप्त करने के लिए निम्नलिखित चरणों को करना होगा।

  1. अपनी एपीके फ़ाइल को ज़िप में कनवर्ट करें (जब आपका डाउनलोड शुरू होता है तो "सेव" ऑप्शन पर मत जाओ, बस "इस रूप में सहेजें" के साथ जाएं और अपने एक्सटेंशन को .zip के रूप में बताएं) ऐसा करके आप एपीकेटुल से बच सकते हैं …
  2. ज़िप फ़ाइल को निकालें, वहां आप somefilename.dex पा सकते हैं। इसलिए अब हमें डेक्स ->। वर्ग बदलना होगा
  3. ऐसा करने के लिए, आपको "dex2jar" (आप इसे http://code.google.com/p/dex2jar/ से डाउनलोड कर सकते हैं, निकाले जाने के बाद, कमांड प्रॉम्प्ट में आपको इसका उल्लेख करना होगा, [D: \ dex2jar-0.09> dex2jar somefilename.dex] (ध्यान रखें कि आपके somefilename.dex उसी फ़ोल्डर के अंदर होना चाहिए जहां आपने अपने dex2jar को रखा है।)
  4. http://www.viralpatel.net/blogs/download/jad/jad.zip से जेड डाउनलोड करें और इसे निकालें। एक बार निकाले जाने पर आप "jad.exe" और "readme.txt" की तरह दो फ़ाइलों को देख सकते हैं (कभी कभी "jad.txt" "jad.exe" के बजाय हो सकता है, इसलिए चलाने के लिए .exe के रूप में इसका एक्सटेंशन का नाम बदलें)
  5. अंत में, कमांड प्रॉम्प्ट में आपको [D: \ jad> jad -sjava yourfilename.class] का उल्लेख करना होगा, यह आपकी क्लास फाइल को संपादन योग्य जावा दस्तावेज़ में पार्स करेगा।

Dedexer के साथ, आप .dex फ़ाइल को Dalvik bytecode ( .ddx ) में अलग कर सकते हैं।

जहां तक ​​मुझे पता है, जावा की ओर डिकम्पलिंग संभव नहीं है।
आप यहां Dalvik bytecode के बारे में पढ़ सकते हैं।

एंड्रॉइड रिवर्स इंजीनियरिंग संभव है । Apk फ़ाइल से .java फ़ाइल प्राप्त करने के लिए इन चरणों का पालन करें।

चरण 1 । Dex2jar का उपयोग करना

  • .apk फ़ाइल से .jar फ़ाइल जनरेट करें
  • आदेश: dex2jar sampleApp.apk

चरण 2 । Decompiling .jar का उपयोग कर जेडी-जीयूआई

  • यह। वर्ग फाइलों को डीकंपिल करता है, अर्थात्, हमें एपीके से वापस जावा।

इनमें से अधिकतर उत्तर पोस्ट किए जाने के बाद से बहुत कुछ बदल गया है। अब एक दिन जीयूआई के साथ कई आसान उपकरण हैं, जैसे:

 APK Easy Tool for Windows (GUI tool, friendly) Bytecode Viewer - APK/Java Reverse Engineering Suite URET Android Reverser Toolkit 

उन्हें ढूंढने के लिए सर्वश्रेष्ठ स्थान XDA डेवलपर्स मंच पर है

हाल ही में डेबियन में पायथन पैकेज androguard :

 Description-en: full Python tool to play with Android files Androguard is a full Python tool to play with Android files. * DEX, ODEX * APK * Android's binary xml * Android resources * Disassemble DEX/ODEX bytecodes * Decompiler for DEX/ODEX files 

संबंधित पैकेज स्थापित करें:

 sudo apt-get install androguard python-networkx 

Decompile DEX फ़ाइल:

 $ androdd -i classes.dex -o ./dir-for-output 

Apk + Decompile से classes.dex निकालें:

 $ androdd -i app.apk -o ./dir-for-output 

एपीके फाइल कुछ ज्यादा नहीं है कि जावा संग्रह (जेएआर), आप फ़ाइलों को संग्रह से निकाल सकते हैं:

 $ unzip app.apk -d ./dir-for-output 

आप JADX ( https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler ) की कोशिश कर सकते हैं, यह DEX decompilation के लिए एक आदर्श उपकरण है।

और हां, यह ऑनलाइन (my: 0) पर भी उपलब्ध है) नई साइट: http://www.javadecompilers.com/apk/

यह निम्नलिखित पांच चरणों में किया जा सकता है:

यह मणि इन चीजों को आप के लिए स्वचालित रूप से आवश्यक उपकरण की स्थापना भी करता है

  1. ज़िप करने के लिए एपीके फ़ाइल कन्वर्ट
  2. फाइल को अनझिप करें
  3. इसे से classes.dex निकालें
  4. jar फ़ाइल में classes.dex कन्वर्ट करने के लिए डेक का उपयोग करें
  5. jadx GUI को jar फ़ाइल को जावा स्रोत कोड के रूप में खोलने के लिए उपयोग करें

अगर आप dex2jar को डाउनलोड करने के लिए नहीं देख रहे हैं, तो बस apk_grabber अजगर स्क्रिप्ट का उपयोग किसी भी apk_grabber को जार फाइलों में apk_grabber करें। फिर आप उन्हें जेडी-जीआई के साथ पढ़ा

एंड्रॉइड ऐप को डिकंपइल करने के लिए सबसे आसान तरीका Playstore से ShowJava नामक एप डाउनलोड करना है। बस अनुप्रयोग का चयन करें जिसे अनुप्रयोगों की सूची से असंबद्ध होने की आवश्यकता है। तीन अलग-अलग decompiler हैं जो आप ऐप को डीकंपल करने के लिए उपयोग कर सकते हैं –

सीएफआर 0.110, जेएडीएक्स 0.6.1 या फर्न फ्लॉवर (विश्लेषणात्मक डीकंप्लेलर)।

मैंने उपयोग कर लिया है

  1. dex2jar + jd-gui
  2. javadecompilers.com
  3. enjarify
  4. Apktool

लेकिन कोई भी Google के अपने उपकरण नहीं मारता है

1) एंड्रॉइड स्टूडियो 2.x: बिल्ड> एपीके विश्लेषण करें यहां छवि विवरण दर्ज करें

2) एंड्रॉइड स्टूडियो 3.0: प्रोफ़ाइल या डीबग एपीके यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें