2009-09-03 12 views
5

हम अपने प्रोजेक्ट को खराब करने जा रहे हैं लेकिन रिमोट डीबगिंग और हॉटस्पैपिंग की क्षमता खोना नहीं चाहते हैं।जावा obfuscated कोड डीबगिंग

क्या यह संभव है? कौन सा उपकरण इसे संभाल सकता है? मैं सरल obfuscation से खुश रहूंगा - बस कक्षाओं/विधियों/चर का नाम बदलना।

[संपादित] हम इंटेलिज आईडीईए का उपयोग कर रहे हैं लेकिन इस कार्य के लिए कोई प्लगइन नहीं ढूंढ पाए।

उत्तर

5

हमारे पास समान प्रकार की ज़रूरतें हैं (सरल obfuscation, बाद में डीबग करने की आवश्यकता है) और हम ProGuard का उपयोग करते हैं। यह एक जावा ऐप है, जिसे एक चींटी कार्य में एकीकृत किया जा सकता है।

यह बहुत सी चीजें कर सकता है, लेकिन यह भी पूरी तरह से ट्यून करने योग्य है। तो आप अपने obfuscation सरल रख सकते हैं। विकल्पों में से एक "सिंबल कॉरस्पोन्डेंस टेबल" उत्पन्न करना है, जो आपको अप्रचलित कोड से गैर-अप्राप्य कोड को पुनः प्राप्त करने की अनुमति देता है। (यह ट्रैक रखता है कि कक्षा qxdnqd में परिवर्तनीय xyz वास्तव में कक्षा अर्थात् क्लासनाम में myCuteVarName है)

संपादित करें: Obfuscation मुश्किल हो सकता है। कुछ उदाहरण:

  • आप अपनी मुख्य विधि का नाम नहीं बदल सकते हैं।
  • क्या आप क्लासलोडर का उपयोग करते हैं? क्या यह अभी भी obfuscation के बाद कक्षा को पुनः प्राप्त कर सकते हैं?
  • आपके ओआरएम मानचित्रण के बारे में क्या? आपका वसंत संदर्भ? (यदि कोई हो)

EDIT2: आप यह भी देख सकते हैं:

+0

हाँ, मुझे एससी तालिका के बारे में पता है। लेकिन मैं और मेरी टीम उन गुरु नहीं हैं जो तालिका का उपयोग करके भी आसानी से डीबग और ओबफस्केटेड कोड बदल सकते हैं :) तो मैं सिर्फ एक उपकरण की तलाश कर रहा हूं जो मुझे पारदर्शी रूप से कोड डीबग करने की अनुमति देगा। – Vitaly

+0

आपको गुरु होने की ज़रूरत नहीं है, आप ऐप में टेबल और obfuscated जार प्रदान करते हैं, और वे फिर से पठनीय हो जाते हैं (टिप्पणी कम करें)। आह ... लेकिन मुझे नहीं लगता कि आप इस प्रक्रिया के साथ "हॉटस्पिंग" कर सकते हैं (यह सभी जार को हटाने और बदलने के रूप में है) –

+0

क्या मुझे कुछ समझ में नहीं आ रहा है। क्या मैं "चरण-दर-चरण" को दूरस्थ रूप से obfuscated कोड डीबग करने में सक्षम हूं और किसी भी प्रकार के डीबगर में "सामान्य" कोड को देख सकता हूं (बिना किसी अतिरिक्त क्रिया के जैसे टेबल को देखकर, अन्य ऐप्स लॉन्च करना आदि)? – Vitaly

0

SD Java Obfuscator देखें। यह टिप्पणियों और सफेद जगहों को पट्टी करता है, और सभी सदस्यों/विधियों/वर्ग नामों का नाम बदलता है जो सार्वजनिक नहीं हैं।

यह आपको नक्शा के साथ भी नक्शा प्रदान करता है कि कोड कैसे खराब हो गया था, उदाहरण के लिए, प्रत्येक प्रतीक के लिए खाद्य XYZ के रूप में obfuscated, एक मानचित्र FOO-> XYZ। इसका मतलब है कि यदि आपको एक्सवाईजेड का उल्लेख करने वाला बैकट्रैक मिलता है, तो आप आसानी से मूल प्रतीक फूड निर्धारित कर सकते हैं। बेशक, केवल आप ही (ओबफुसेशन करने वाले व्यक्ति) के पास यह नक्शा है, केवल आप ही ऐसा कर सकते हैं।

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