2011-12-18 10 views
9

मैंने अतीत में जावा obfuscators का उपयोग किया है और कुछ इंजीनियर उलटा आसान है। मैंने सोचा है कि शायद यह पर्याप्त रूप से obfuscated नहीं था।क्या यह obfuscated कोड को फिर से obfuscate गलत है?

क्या यह दो-चरणीय obfuscation लागू करने के लिए गलत या समस्याग्रस्त है?

  1. साथ ProGuard
  2. समाप्त इसे बंद अंधेरा करना एक वाणिज्यिक उत्पाद Zelix Klassmaster

साथ -

या कि एक बुरा दृष्टिकोण है? केवल एक obfuscator इस्तेमाल किया जाना चाहिए?

+0

यह इस अर्थ में "ठीक है" कि कुछ भी बुरा नहीं होगा। –

+4

मुझे लगता है कि यह एक अच्छा सवाल है। पता नहीं क्यों इसे "करीबी" वोट मिला। शायद थोड़ा सा refrased किया जाना चाहिए। – MByD

+0

मैंने बंद करने के लिए मतदान किया क्योंकि यह स्पष्ट नहीं है कि "ठीक है" बनाम "बुरा" मतलब, एक उद्देश्य अर्थ में। –

उत्तर

4

जब तक कोड अभी भी सही ढंग से चलता है, तब तक कोई फर्क नहीं पड़ता कि आप कितने obfuscator का उपयोग करते हैं, यह ठीक होना चाहिए। याद रखें कि obfuscator का उपयोग करने की मुख्य चिंता कोड को अपनी शुद्धता बनाए रखने के दौरान जितना संभव हो सके अपठनीय बनाना है।

2

पुन: obfuscating obfuscated कोड unobfuscating कोड की एक अच्छी तरह से पता तरीका है। उदा। आप ऐसे नाम हैं जो की तरह

class COM1 { ... } 

decompiling वैध खिड़कियों फ़ाइल नाम जो कि एक वैध खिड़कियों फ़ाइल नाम नहीं है COM1.java नाम की एक फ़ाइल, में परिणाम होगा फार्म नहीं है के लिए कक्षाओं में अंधेरा कर सकते हैं और इस प्रकार कई डीकम्पाइलर टूट जाता है।

समाधान पहले श्रेणी 1, कक्षा 2, विधि 1, विधि 2, फ़ील्ड 1, फ़ील्ड 2 और फिर डिकंपाइल जैसे नामों के शब्दकोश का उपयोग करके फिर से obfuscate करना होगा। डिकंपील्ड कोड अब न केवल डिकंपाइल के लिए अधिक मान्य होगा, बल्कि अधिक पठनीय भी होगा।

धारावाहिक में obfuscators का उपयोग आमतौर पर obfuscated कोड के रूप में मजबूत obfuscator के रूप में मजबूत के रूप में परिणाम होगा। (यानी श्रृंखला अंतिम लिंक के रूप में मजबूत है)

मेरा सुझाव है कि आप एक obfuscator से चिपके रहें लेकिन सुनिश्चित करें कि आप obfuscation प्रक्रिया में प्रत्येक विकल्प को समझते हैं और इसे पूर्ववत करना कितना आसान है।

+0

कल्पना करें कि आखिरी obfuscater बस कोड कॉपी किया। यह पिछले obfuscation कदम कम प्रभावी कैसे कर सकते हैं? मुझे लगता है कि यह सबसे मजबूत लिंक के रूप में मजबूत है। –

+0

@IraBaxter मैं समझता हूं कि आपका क्या मतलब है, फिर भी कई obfuscation तकनीकों को फिर से obfuscating द्वारा पूर्ववत किया जा सकता है। – Matiaan

+0

'धारावाहिक में obfuscators का उपयोग आमतौर पर obfuscated कोड के रूप में मजबूत obfuscator के रूप में मजबूत के रूप में परिणाम होगा। (यानी श्रृंखला अंतिम लिंक के रूप में मजबूत है) 'क्यों? – EJP

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