2016-04-05 24 views
8

जैसा कि आप जानते हैं कि ज़ैमरिन परियोजनाओं को डॉट नेट डीएल असेंबली में संकलित किया गया है और यह एपीके फ़ाइल में पैक हो जाएगा और इसे डॉटपीक जैसे परावर्तकों द्वारा आसानी से प्रतिबिंबित किया जा सकता है।Xamarin परियोजनाओं में Obfuscation

मेरा पहला सवाल है: हम अपने कोड की रक्षा कैसे कर सकते हैं?

मेरी दूसरी सवाल यह है: SmartAssembly तरह Do अस्पष्टकर्ता उपकरण Xamarin परियोजनाओं में प्रयोग करने योग्य हैं या Xamarin परियोजनाओं उन्हें समर्थन नहीं करेंगे?

+0

अधिकांश (सभी?) Obfuscators काम करेंगे क्योंकि आप सीआईएल-आधारित असेंबली (डब्ल्यू/किसी भी नेट/मोनो पर्यावरण के समान प्रो/विपक्ष) से ​​बात कर रहे हैं। Xamarin.Android के लिए यदि आप वीएस एंटरप्राइज़ उपयोगकर्ता हैं तो आप "मूल कोड में असेंबली सक्षम करें" सक्षम भी कर सकते हैं। यह असेंबली को एनडीके-आधारित रनटाइम लाइब्रेरी में एम्बेड करेगा। रिवर्स इंजीनियरों को पॉइंटिंग/एंडिंग पॉइंट्स निकालने के लिए और अधिक समय व्यतीत करना होगा, लेकिन किसी भी सीआईएल-आधारित ओबफुसेशन की तरह कोई भी जो आरई को समय बिताना चाहता है, इससे कोई फर्क नहीं पड़ता कि आप किस परेशानी का उपयोग करते हैं। – SushiHangover

+0

आईओएस टैग का उपयोग क्यों करें? Xamarin.iOS पहले से ही मूल के लिए संकलित करने के लिए एओटी का उपयोग करता है। –

+0

@LexLi इसका उल्लेख करने के लिए धन्यवाद। मैंने बस टैग हटा दिया। –

उत्तर

4

अपने नेट कोड (.DLLS) की रक्षा के लिए सबसे अच्छा तरीका है APK के लिए (AOT) संकलन Ahead Of Time सक्षम करने के लिए है एओटी संकलन आपके अनुप्रयोगों को आईएल कोड (.dlls) को देशी निर्देशों में संकलित करेगा। एपीके में पैक किया गया अंतिम कोड तब प्रबंधित आईएल कोड के बजाय X86, arm आदि निर्देश है।

एओटी संकलन केवल एंटरप्राइज़ और उच्च लाइसेंस में उपलब्ध है।

जबकि एओटी रिवर्स इंजीनियरिंग की कठिनाई को बढ़ाता है, यह अभी भी 100% मूर्ख-सबूत नहीं है। अंतिम बाइनरी अभी भी रूट डिवाइस से खींचा जा सकता है और आईडीए प्रो जैसे सॉफ़्टवेयर का उपयोग करके इंजीनियर को रिवर्स किया जा सकता है। यह डॉटपीक का उपयोग करने से बहुत कठिन है लेकिन यह अभी भी संभव है।

एओटी संकलन को सक्षम करने के नीचे के पक्षों को नोट करना भी महत्वपूर्ण है। एप्लिकेशन में समय बढ़ता है क्योंकि आपके ऐप द्वारा संदर्भित प्रत्येक असेंबली को संकलित करने की आवश्यकता होती है; मेरे अनुभवों से संकेत मिलता है कि एओटी सक्षम होने पर आपको निर्माण के समय में 200% -300% की वृद्धि की उम्मीद करनी चाहिए।

इसके अतिरिक्त, एओटी संकलन अंतिम एपीके आकार में वृद्धि करेगा।

+0

जैसा कि हम सभी जानते हैं कि एओटी संकलन केवल एंटरप्राइज़ लाइसेंस के लिए उपलब्ध था। अब ज़ैमरिन मुफ्त है तो क्या यह विजुअल स्टूडियो समुदाय में उपलब्ध है? –

+0

उस पर प्रकाश डालने के लिए धन्यवाद, एओटी वास्तव में केवल एंटरप्राइज़ लाइसेंस के लिए उपलब्ध है। उत्तर अपडेट कर रहा है। – matthewrdev

+0

इसके अनुसार: https://developer.xamarin.com/guides/android/deployment%2C_testing%2C_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/#aot परिणामी मूल कोड एपीके में असम्बद्ध असेंबली के साथ शामिल किया गया है। क्या इसका मतलब यह है कि संकलित और असम्बद्ध संस्करण दोनों शामिल हैं, और एओटी वास्तव में obfuscation के लिए मदद नहीं करता है? – HelloWorld

3

आपके पहले प्रश्न के लिए, अपने Xamarin कोड को obfuscating के लिए कुछ औजारों का उपयोग करना संभव है। उदाहरण के लिए, Crypto Obfuscator, Babel Obfuscator, और Dotfuscator

आपके दूसरे प्रश्न के लिए, ऐसा लगता है कि SmartAssembly obfuscation संभव है। विंडोज फोन भाग here देखें।

1

कोई तरीका नहीं है कि आप पूरी तरह से 100% को अपने कोड को अपरिवर्तित होने से सुरक्षित रख सकें और देख सकें।

आप अपने सभी तरीकों और चरों को बरकरार रखने में काफी समय व्यतीत कर सकते हैं और फिर कुछ प्रकार का एप्लिकेशन दुभाषिया बनाने में व्यतीत कर सकते हैं जो आपके obfuscated कोड को समझ जाएगा, लेकिन यहां तक ​​कि उसमें भी देखा जाएगा, जांच की जाएगी और अंततः क्रैक ।

यह भी देखें:

enter image description here

: How can I protect my .NET assemblies from decompilation?

Protect .NET code from reverse engineering?

2

डॉटफुस्केटर के पास ज़ैमरिन के लिए समर्थन है और निर्देश ऑनलाइन हैं (Dotfuscator Professional या मुफ्त Community Edition के लिए) इसे एकीकृत करने के लिए।संक्षेप में, प्रक्रिया है:

  1. कॉन्फ़िगर एक AfterBuild के माध्यम से Dotfuscator चलाने के लिए निर्माण को लक्षित
  2. कॉन्फ़िगर Dotfuscator:
    1. निर्दिष्ट आदानों
    2. ,/रूप में की जरूरत का नाम बदलने से चीजें बाहर निकालें हमेशा की तरह
    3. केवल मोनो संगत रूपांतरण (केवल-प्रो)
  3. कॉन्फ़िगर का उपयोग एक कॉपी कार्य या पोस्ट-निर्माण घटना सुलझा बाइनरी वापस उनके मूल स्थानों के लिए,
  4. बिल्ड कॉपी करने के लिए कहानियो को सत्यापित करने, और परीक्षण

पूर्ण प्रकटीकरण: मैं PreEmptive समाधान के लिए काम करते हैं।