2012-07-29 18 views
11

मैं बस चारों ओर गड़बड़ कर रहा था। मैं dex2jar http://code.google.com/p/dex2jar/ और जावा Decompiler जद-जीयूआई http://java.decompiler.free.fr/?q=jdguiएंड्रॉइड एपीके डिकंपिलेशन आसान लगता है

मैं मेरे अपने apk फ़ाइल मिल गया (पर हस्ताक्षर किए सील और Google Play पर), इस्तेमाल किया dex2jar यह एक जार भंडार में बनाने के लिए डाउनलोड किया।

कमांड लाइन (विंडोज उपयोगकर्ताओं .bat उपयोग करते हैं, बाकी सब .sh):

d2j-dex2jar.bat -f MyAwesomeApp.apk 

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

अग्रिम धन्यवाद।

+1

हा हा हा! क्या आपने अपने एपीके पर प्रोगार्ड लागू नहीं किया है? अगर जवाब नहीं है, तो यह आपका जवाब है! :) – t0mm13b

+0

मैंने प्रोगुआर्ड का उपयोग किया है और प्रोजेक्ट.प्रोपर्टीज फ़ाइल को रिले से पहले संपादित किया है; मेरे ऐप को आसान बनाना। मुझे जिक्र करना चाहिए कि कक्षा के नाम मेरी मूल नहीं हैं लेकिन सभी विधि नाम मूल प्रतीत होते हैं। अर्थात। मेरे ऐप को उलटना आसान है, क्योंकि केवल क्लास नाम बदल गए हैं। संपादित करें: ऐसा लगता है कि स्थैतिक विधि नाम बदल गए हैं। लेकिन इसे उलटना मुश्किल से रॉकेट विज्ञान है। –

+1

क्या आप अपना proguard.cfg पोस्ट कर सकते हैं? और आपने [उदाहरण] की जांच की है (http://proguard.sourceforge.net/index.html#manual/examples.html) – t0mm13b

उत्तर

4

Obfuscators आमतौर पर कक्षाओं, विधियों और फ़ील्ड नामों को उन नामों में बदलते हैं जिनके अर्थ नहीं हैं। इसलिए, यदि आपके पास "ScoreCalculator.computeScore (प्लेयर पी, मैच एम)" है, तो आप "एजेके (एफ एफ, आर आर)" के साथ समाप्त होते हैं। यह जावास्क्रिप्ट के लिए Uglify या क्लोजर कंपाइलर के समान है, सिवाय इसके कि जावास्क्रिप्ट में यह स्रोत की लंबाई को कम करना है।

यह समझना संभव है कि विधि क्या है, यह केवल कठिन है।

असलो, जावा देर से बाध्यकारी (डीएलएल या एसओ फाइलों के रूप में) का उपयोग करता है। तो, कॉल जो आपके कोड के बाहर जाते हैं (जैसे java.util, java.lang आदि .. पैकेज) को obfuscated नहीं किया जा सकता है। साथ ही, यदि आपके कोड को बाहर से कॉल प्राप्त करने की आवश्यकता है (एक सामान्य उदाहरण, बटन पर श्रोता पंजीकृत करें), तो उस कोड को obfuscated नहीं किया जा सकता है। एक डीएलएल के लिए भी होता है, जहां आप स्पष्ट रूप से विधि का नाम देख सकते हैं जिसे डीएलएल के बाहर फॉर्म कहा जाना चाहिए और अन्य डीएलएल को कॉल करना होगा।

हालांकि, एक निश्चित स्रोत कोड और संकलित कोड के बीच मैपिंग जरूरी नहीं है। पुराने सी कंपाइलर एक दिए गए स्रोत निर्देश के लिए एक ही ओप कोड का उत्पादन करते थे, इसलिए डिकंपलर बहुत प्रभावी थे। फिर सी compilers जिसके परिणामस्वरूप सेशन कोड के लिए कई अनुकूलन जोड़ा, और इन अनुकूलन decompiler ज्यादातर अप्रभावी [1]

जावा कभी लागू नहीं (का एक बहुत) संकलन समय पर अनुकूलन, क्योंकि (वहाँ अलग android उपकरणों सहित) विभिन्न प्लेटफार्मों पर चलने के लिए बनाया है, जावा ने चलने वाले डिवाइस के आर्किटेक्चर और हार्डवेयर गुणों के आधार पर रन टाइम पर बाद में गंभीर अनुकूलन लागू करने का निर्णय लिया (यह "हॉटस्पॉट" लगभग [2] है)।

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

यह तकनीक बेकार है जब लोग बाइटकोड पढ़ सकते हैं, क्योंकि किसी भी संभावित सी obfuscation बेकार है अगर कोई व्यक्ति असेंबलर कोड पढ़ सकता है।

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

यदि आपके पास बहुत ही महत्वपूर्ण महत्वपूर्ण कोड है, तो कुछ और धन चोरी करने वाला कुछ मूल्य है, तो मैं इसे सर्वर की ओर चलाने के लिए सुझाव दूंगा, या सर्वर सर्वर को किसी भी तरह सत्यापित करूँगा।

0

मैं यह भी जोड़ सकता हूं कि इस एपीकेटूल-> dex2jar-> जेडी-जीयूआई मार्ग के लिए आधुनिक विकल्प है!

बस खुला स्रोत APK और DEX decompiler Jadx कहा जाता है की कोशिश: https://sourceforge.net/projects/jadx/files/ यह भी है ऑनलाइन यहाँ संस्करण: http://www.javadecompilers.com/apk

संबंधित मुद्दे