2011-07-18 9 views
24

मुझे अपने रिपोर्ट किए गए स्टैक निशान में खुद को और अधिक जानकारी की आवश्यकता है, लेकिन मुझे चिंता है कि अतिरिक्त डेटा (रखरखाव SourceFile, LineNumberTable) का उपयोग करके मैं अपना ऐप रिवर्स इंजीनियर को और भी आसान बना रहा हूं। क्या यह मामला है, और यदि हां, तो कितना?ProGuard के साथ obfuscating, SourceFile करता है, LineNumberTable परिणामस्वरूप एपीके रिवर्स इंजीनियर करने के लिए आसान बनाता है?

उत्तर

33

ProGuard manual > Examples > Producing useful obfuscated stack traces

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

एक समाधान के लिए, ProGuard SourceFile विशेषता को रख सकता है लेकिन अपनी पसंद की अर्थहीन स्ट्रिंग द्वारा इसकी सामग्री को प्रतिस्थापित कर सकता है, उदा।

-renamesourcefileattribute SourceFile 

स्टैक निशान की व्याख्या करने के लिए स्ट्रिंग का मान महत्वपूर्ण नहीं है। "SourceFile" जैसी स्ट्रिंग को चुनना कक्षा फ़ाइल आकार को बढ़ाने से बचाता है, क्योंकि यह स्ट्रिंग परिभाषा द्वारा पहले से मौजूद है।

+0

धन्यवाद एरिक। यह चीजों को स्पष्ट करता है। – wirbly

+0

@Eric, अगर आप स्रोत फ़ाइल विशेषता रखने जा रहे हैं तो गैबल क्लास नाम क्यों हैं? निश्चित रूप से stacktraces बेकार होगा, लेकिन यह नहीं है कि obsfucation का मुद्दा? –

+1

@mP उपरोक्त कॉन्फ़िगरेशन SourceFile विशेषता रखता है, लेकिन इसकी सामग्री को प्रतिस्थापित करता है। JVM तब पूर्ण स्टैक निशान प्रिंट करेगा, लेकिन obfuscated नामों के साथ। ProPuard डेवलपर के लिए जेनरेट करने वाली मैपिंग फ़ाइल की सहायता से, यह obfuscated अनुप्रयोग को डीबग करने के लिए उपयोगी हो सकता है। –

2

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

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