अपने नेट कोड (.DLLS) की रक्षा के लिए सबसे अच्छा तरीका है APK के लिए (AOT) संकलन Ahead Of Time सक्षम करने के लिए है एओटी संकलन आपके अनुप्रयोगों को आईएल कोड (.dlls) को देशी निर्देशों में संकलित करेगा। एपीके में पैक किया गया अंतिम कोड तब प्रबंधित आईएल कोड के बजाय X86, arm आदि निर्देश है।
एओटी संकलन केवल एंटरप्राइज़ और उच्च लाइसेंस में उपलब्ध है।
जबकि एओटी रिवर्स इंजीनियरिंग की कठिनाई को बढ़ाता है, यह अभी भी 100% मूर्ख-सबूत नहीं है। अंतिम बाइनरी अभी भी रूट डिवाइस से खींचा जा सकता है और आईडीए प्रो जैसे सॉफ़्टवेयर का उपयोग करके इंजीनियर को रिवर्स किया जा सकता है। यह डॉटपीक का उपयोग करने से बहुत कठिन है लेकिन यह अभी भी संभव है।
एओटी संकलन को सक्षम करने के नीचे के पक्षों को नोट करना भी महत्वपूर्ण है। एप्लिकेशन में समय बढ़ता है क्योंकि आपके ऐप द्वारा संदर्भित प्रत्येक असेंबली को संकलित करने की आवश्यकता होती है; मेरे अनुभवों से संकेत मिलता है कि एओटी सक्षम होने पर आपको निर्माण के समय में 200% -300% की वृद्धि की उम्मीद करनी चाहिए।
इसके अतिरिक्त, एओटी संकलन अंतिम एपीके आकार में वृद्धि करेगा।
अधिकांश (सभी?) Obfuscators काम करेंगे क्योंकि आप सीआईएल-आधारित असेंबली (डब्ल्यू/किसी भी नेट/मोनो पर्यावरण के समान प्रो/विपक्ष) से बात कर रहे हैं। Xamarin.Android के लिए यदि आप वीएस एंटरप्राइज़ उपयोगकर्ता हैं तो आप "मूल कोड में असेंबली सक्षम करें" सक्षम भी कर सकते हैं। यह असेंबली को एनडीके-आधारित रनटाइम लाइब्रेरी में एम्बेड करेगा। रिवर्स इंजीनियरों को पॉइंटिंग/एंडिंग पॉइंट्स निकालने के लिए और अधिक समय व्यतीत करना होगा, लेकिन किसी भी सीआईएल-आधारित ओबफुसेशन की तरह कोई भी जो आरई को समय बिताना चाहता है, इससे कोई फर्क नहीं पड़ता कि आप किस परेशानी का उपयोग करते हैं। – SushiHangover
आईओएस टैग का उपयोग क्यों करें? Xamarin.iOS पहले से ही मूल के लिए संकलित करने के लिए एओटी का उपयोग करता है। –
@LexLi इसका उल्लेख करने के लिए धन्यवाद। मैंने बस टैग हटा दिया। –