हमारे पास समान प्रकार की ज़रूरतें हैं (सरल obfuscation, बाद में डीबग करने की आवश्यकता है) और हम ProGuard का उपयोग करते हैं। यह एक जावा ऐप है, जिसे एक चींटी कार्य में एकीकृत किया जा सकता है।
यह बहुत सी चीजें कर सकता है, लेकिन यह भी पूरी तरह से ट्यून करने योग्य है। तो आप अपने obfuscation सरल रख सकते हैं। विकल्पों में से एक "सिंबल कॉरस्पोन्डेंस टेबल" उत्पन्न करना है, जो आपको अप्रचलित कोड से गैर-अप्राप्य कोड को पुनः प्राप्त करने की अनुमति देता है। (यह ट्रैक रखता है कि कक्षा qxdnqd में परिवर्तनीय xyz वास्तव में कक्षा अर्थात् क्लासनाम में myCuteVarName है)
संपादित करें: Obfuscation मुश्किल हो सकता है। कुछ उदाहरण:
- आप अपनी मुख्य विधि का नाम नहीं बदल सकते हैं।
- क्या आप क्लासलोडर का उपयोग करते हैं? क्या यह अभी भी obfuscation के बाद कक्षा को पुनः प्राप्त कर सकते हैं?
- आपके ओआरएम मानचित्रण के बारे में क्या? आपका वसंत संदर्भ? (यदि कोई हो)
EDIT2: आप यह भी देख सकते हैं:
स्रोत
2009-09-03 07:50:31
हाँ, मुझे एससी तालिका के बारे में पता है। लेकिन मैं और मेरी टीम उन गुरु नहीं हैं जो तालिका का उपयोग करके भी आसानी से डीबग और ओबफस्केटेड कोड बदल सकते हैं :) तो मैं सिर्फ एक उपकरण की तलाश कर रहा हूं जो मुझे पारदर्शी रूप से कोड डीबग करने की अनुमति देगा। – Vitaly
आपको गुरु होने की ज़रूरत नहीं है, आप ऐप में टेबल और obfuscated जार प्रदान करते हैं, और वे फिर से पठनीय हो जाते हैं (टिप्पणी कम करें)। आह ... लेकिन मुझे नहीं लगता कि आप इस प्रक्रिया के साथ "हॉटस्पिंग" कर सकते हैं (यह सभी जार को हटाने और बदलने के रूप में है) –
क्या मुझे कुछ समझ में नहीं आ रहा है। क्या मैं "चरण-दर-चरण" को दूरस्थ रूप से obfuscated कोड डीबग करने में सक्षम हूं और किसी भी प्रकार के डीबगर में "सामान्य" कोड को देख सकता हूं (बिना किसी अतिरिक्त क्रिया के जैसे टेबल को देखकर, अन्य ऐप्स लॉन्च करना आदि)? – Vitaly