सबसे अच्छा जावा पर्यवेक्षक? [बन्द है]


107

मैं एक सुरक्षा सॉफ्टवेयर विकसित कर रहा हूं और अपने जावा कोड को बाधित करना चाहता हूं, इसलिए इंजीनियर को उल्टा करना असंभव हो जाएगा। सबसे विश्वसनीय जावा ऑबफसकेटर क्या है?


10
@Xinus "इंजीनियर को उल्टा करना असंभव हो गया" - शायद ही, सबसे अच्छा प्रयास किया और असफल रहा
चींटी

212
मेरे कुछ सहकर्मी थे जिन्होंने कुछ भारी मोटे कोड बनाए थे। लेकिन यह उनका इरादा नहीं था।
स्टीव मैक्लियॉड

7
It was once said that if you had an infinate amount of monkeys on typewiters and an infinate amount of time, they would write all of the great works of Shakespeare.- दिलबर्ट
एंट

7
रिवर्स इंजीनियरिंग से बचना असंभव है।
Mnementh

11
@ मुनीम: यह रिवर्स इंजीनियरिंग को आपके विशेष ऐप के लिए बेहद महंगा बनाने के लिए पर्याप्त है।
दिमित्री लेसकोव

जवाबों:


99

सबसे पहले, आपको वास्तव में यह ध्यान रखना होगा कि कुछ को रिवर्स-इंजीनियर करना असंभव नहीं है। सब कुछ हैक करने योग्य है। एक स्मार्ट आईडीई का उपयोग करने वाला स्मार्ट डेवलपर पहले से ही काफी दूर हो सकता है।

खैर, आप यहाँ एक सूची पा सकते हैं । ProGuard बहुत अच्छा है। मैंने इसे स्वयं उपयोग किया है, लेकिन केवल जावा कोड को "छोटा" करने के लिए।


1
@ बाल्सक: तो आप जावा कोड को बाधित करने के लिए किस टूल का उपयोग करते हैं? आप अपने जावा कोड को बाधित करते हैं, न 'आप?
थिंकबेक

@Thinhbk Obfuscation उपयोगी स्टैक निशान को प्राप्त करना कठिन बनाता है।
थोर्बजोरन रावन एंडरसन

@ ThorbjørnRavnAndersen: सहमत। आईएमओ, ऑबफ्यूजन स्टैक के निशान बना देगा जो ज्यादातर बेकार हो जाते हैं। उस स्थिति में, मैं लॉग संदेश के साथ कुछ चाल का उपयोग कर रहा हूं, जो मदद कर सकता है।
थिंकबेक

2
@Thinhbk Proguard मूल कोड में वापस आड़े हुए स्टैक के निशान का अनुवाद करने के लिए एक मानचित्र बनाता है। अन्यथा, जैसा कि आपने कहा था, स्टैक के निशान बेकार हो जाते हैं (लेकिन जो वैसे भी अपवाद नहीं मिलता है ...; ;-))
Matthieu

@ मैथ्यू: क्या स्वचालित रूप से मूल कोड के लिए स्टैक ट्रेस का अनुवाद करना संभव है? यह मेरे लिए बहुत अच्छा और नया होगा। मुझे पता है कि मैन्युअल रूप से अनुवाद करना मुश्किल हो सकता है यदि कोड आधार बहुत बड़ा है।
थिंकबेक

33

यदि कोई कंप्यूटर इसे चला सकता है, तो एक उपयुक्त रूप से प्रेरित मानव इसे रिवर्स-इंजीनियर कर सकता है।


3
कितने लोग obfuscated कोड पढ़ सकते हैं और तर्क को समझ सकते हैं? मेरे बहुत सारे इंजीनियर दोस्त हैं और वे ऐसा नहीं कर सकते। केवल जॉन नैश ऐसा कर सकते हैं;)
kodmanyagha

5
@kodmanyagha यदि वे पर्याप्त प्रेरित होते तो वे इसे सीखते। यह कठिन नहीं है।
थोरबजोरन रावन एंडरसन

1
गणितीय अर्थ में, इसे रिवर्स-इंजीनियर करने के तरीके के बिना चलाना संभव है। यह होमोमोर्फिक एन्क्रिप्शन के बारे में है, लेकिन काफी कुछ बाधाएं हैं जिन्हें सास के विपरीत कंप्यूटर सॉफ्टवेयर पर व्यावहारिक रूप से उपयोग करने के लिए हल करने की आवश्यकता है। हम वहां धीरे-धीरे आगे बढ़ रहे हैं। पूरी तरह से होमोमोर्फिक एन्क्रिप्शन और "गणितीय पहेली पहेली" पर अमित सहाय एट अल द्वारा जेंट्री के सेमिनल काम करता है। उस दिशा में एक बड़ी छलांग लगाई। बस एक लापता तत्व है (जिसे मैं "बाधा फ़ंक्शन" कहता हूं) जो पूरी योजना को संभव बनाता है। अब जो असंभव है वह भविष्य में संभव होगा।
21

30

मेरे लेख की जाँच करें अपने जावा कोड को सुरक्षित रखें - Obfuscators और Beyond [आर्काइव्ड] के माध्यम से अपने ऐप्स के रिवर्स इंजीनियरिंग को और अधिक महंगा बनाने के लिए तीन अन्य तरीकों, और टूल और आगे पढ़ने की सामग्रियों के लिंक का संग्रह बनाने के लिए बनाम अन्य तरीकों की चर्चा के लिए।


1
यह वही है जो मुझे वास्तव में चाहिए। मैं अपने प्रोजेक्ट्स के लिए PHP obfuscator लिखना चाहता हूं। तर्क हर जगह एक जैसा है। धन्यवाद ...
कोडम्नायघा

1
जावा obfuscation और सॉफ्टवेयर संग्रह के बारे में अच्छा और व्यापक लेख।
m3nda

15

मुझे लगता है कि प्रोगार्ड सबसे अच्छा है। इसे अपने IDE (उदाहरण के लिए NetBeans) के साथ एकीकृत करना भी संभव है। हालाँकि, विचार करें कि यदि आप अपने कोड को मानते हैं तो आपके लॉग में समस्याओं को ट्रैक करना मुश्किल हो सकता है।


6
+1 के लिए "विचार करें कि यदि आप अपने कोड को मानते हैं तो आपके लॉग में समस्याओं को ट्रैक करना मुश्किल हो सकता है"। जब आप सोचते थे कि डिबगिंग काफी कठिन है ...
एडम पेन्न्टर

7
नाम और लाइन नंबर की जानकारी को बदलने वाले एक अच्छे ऑबफसकेटर को एक लॉग का उत्पादन करना चाहिए जिसके साथ प्रक्रिया को उल्टा करना है। इस तरह से कम से कम स्टैक निशान obfuscated बायनेरिज़ के लिए उपयोगी रहते हैं।
जोआचिम सॉउर

3
ProGuard डिबगिंग के लिए ऐसी उल्टी फ़ाइलें बनाता है। :-)
मलैक्स

11

जैसा कि यहां कहीं और कहा गया है, प्रोगार्ड अच्छा है, लेकिन जो नहीं पता हो सकता है वह यह है कि इसके लिए एक तृतीय-पक्ष मावेन प्लगइन भी है यहां http://pyx4me.com/pyx4me-maven-plugins/proguard-maven-plugin/ ... मैंने उन दोनों का एक साथ उपयोग किया है और वे बहुत अच्छे हैं।



7

यह सच है कि इंजीनियर को किसी भी कोड को उलट देना हमेशा संभव होता है, ठीक उसी तरह जैसे घर की सुरक्षा करना असंभव है, इसलिए कोई भी कभी भी इसे चुरा नहीं सकता है। हालांकि यह मुझे दरवाजे पर ताला लगाने से रोकता नहीं है। वास्तव में, मैं जावा दुनिया में नहीं हूं, मैं .net के लिए BitHelmet का उपयोग करता हूं


7
+1 आपको नेट पर वापस लाने के लिए 0. यह उत्तर अनहेल्दी नहीं है।
हेलोवेबस्टर

6

मैं अपनी पिछली कंपनी में क्लासेमास्टर के साथ काम करता था और यह वास्तव में अच्छी तरह से काम करता है और बिल्ड सिस्टम के साथ बहुत अच्छा एकीकृत कर सकता है (मावेन समर्थन उत्कृष्ट है)। लेकिन यह मुफ़्त नहीं है।


6

हम बहुत बेहतर किस्मत के लिए obfuscating के बजाय जार एन्क्रिप्ट किया गया है। हम Classguard का उपयोग करते हैं


7
अगर आपने व्लादिमीर रौबर्टोव द्वारा "क्रैकिंग जावा बाइट-कोड एन्क्रिप्शन" ( javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html ) नहीं पढ़ा है , तो आप अब ऐसा करने की इच्छा कर सकते हैं।
दिमित्री लेसकोव

6

मुझे यकीन नहीं है कि अगर समाधान सुरक्षित है, लेकिन क्लासगार्ड समाधान के बारे में , लेख और टिप्पणी को पढ़ने के लिए दिलचस्प है: http://www.javaworld.com/community/?q=node/1604#comment -12,296


और एक अन्य विकल्प जो डिफेंसक्लास के बजाय देशी कोड का उपयोग करता है, वह है JarCrypt
Renato

ClassGuard को कैसे क्रैक करना है, यह पढ़ाने वाला एक लेख : setrst.blogspot.com/2010/04/classguard-unguarded.html । मुझे अभी पता नहीं है कि क्या यह अभी भी नवीनतम संस्करण पर काम करता है।
रेनाटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.