संभव डुप्लिकेट:
hiding strings in Obfuscated codeकहानियो: जावा में हार्डकोडेड मूल्यों को छिपाने
मैं यह मुश्किल डिकंपाइल करने के लिए बनाने के लिए एक छोटे से आदेश में अपने एप्लिकेशन में से कुछ स्थिर स्ट्रिंग्स को छिपाने के लिए कोशिश कर रहा हूँ , इस तरह से सिफर एल्गोरिदम नामों जैसे स्थिरांक obfuscated कोड में खोजने के लिए कठिन हैं।
मैं जैसी चीजों पर विचार किया है:
String CONCAT= "concat"+"string";
String RAW_STRING= "raw_string";
String FROM_BYTES=new String("from_bytes".getBytes());
String FROM_CHARS=new String(new char[]{'f','r','o','m','_','c','h','a','r','s'});
String FROM_CHAR2=new String(new char[]{102,114,111,109,95,99,104,97,114,115,95,50});
और पिछले दो विकल्प "गहरा" कच्चे विकल्प से हो रहा है, लेकिन मुझे लगता है वहाँ ऐसा करने के लिए बेहतर तरीके हैं।
मैं इसे कैसे सुधार सकता हूं? धन्यवाद
मैंने कभी एंड्रॉइड के लिए प्रोग्राम नहीं किया है, हालांकि मैं इस सवाल का बिंदु नहीं देख सकता। यदि उपयोगकर्ता को डिकंपाइल करने का तरीका नहीं पता है, तो नोटपैड के माध्यम से कोड को पढ़ने में सक्षम है, तो आप केवल कुछ अप्रयुक्त एल्गोरिदम नाम डालते हैं, और वह नहीं जानता कि कौन सा वास्तव में शामिल है। यदि वह जानता है कि कैसे डिकंपाइल करना है, तो वहां कोई obfuscation नहीं है जो लाइब्रेरी कॉल को बदलने से एस/उसे रोक सकता है (मुझे लगता है कि आप एक सिस्टम के साथ सिफर को तत्काल करने के लिए एक प्रसिद्ध विधि नाम के साथ एक प्रसिद्ध पुस्तकालय का उपयोग करते हैं)। out.println। – ignis
मैं सरल ग्रेडल फ़ंक्शन का उपयोग करके इस तरह के तारों को छुपा रहा हूं। यह केवल नग्न आंख से बचाता है, लेकिन किसी भी मामले में, यह कुछ भी नहीं है: https://gist.github.com/shomeser/68f4fe360be0edac95e4 –