2013-01-02 12 views
5

दो कहानियो से संबंधित प्रश्न:एफ # MSIL कहानियो

1) वहाँ किसी भी उपकरण है जो एफ # इसके स्रोत प्रपत्र, या यह के पास कुछ करने के लिए वापस कर सकते हैं एकत्रित न MSIL लक्ष्य रूप से, है? यह अस्पष्टता के माध्यम से सुरक्षा का प्रयास नहीं है लेकिन मैं कुछ स्रोत कोड को "चोरी" से सुरक्षित रखना चाहता हूं।

2) मैंने कुछ एफ # कंपाइलर आउटपुट पर संक्षेप में देखा और आम तौर पर सी # संकलित कोड को अलग करते हुए आपको जो कुछ मिलता है उससे तुलना में यह बहुत ही कमजोर दिखाई देता है, संभवतः सी # एमएसआईएल मध्यवर्ती प्रतिनिधित्व के करीब है। सी # कंपाइलर से मैंने देखा है कि केवल आंशिक रूप से उलझा हुआ कोड इटरेटर (और अनुमानतः सी # 5.0 के रूप में async) है।

अब तक मेरी धारणा यह है कि एफ # संकलित कोड उचित रूप से "obfuscated" है, लेकिन क्या यह सच है? (मुझे एहसास है कि यह कुछ हद तक व्यक्तिपरक प्रश्न है।)

+4

आपके विरोधी कितने अच्छे हैं? कोई भी सक्षम मैलवेयर विश्लेषक आपके कोड को मेमोरी डंप से उलट सकता है, आईएल को कभी भी ध्यान न दें। आप किससे अपने स्रोत की रक्षा कर रहे हैं? –

+0

संभावित प्रतियोगी। मुझे यह असंभव लगता है लेकिन माफ की तुलना में बेहतर सुरक्षित है। मैं नहीं चाहता कि कोड सही उपकरण के साथ आसानी से de-obfuscatable हो। यह इतना कठिन होना चाहिए कि कोड को स्वयं लिखना आसान हो। मुझे नहीं लगता कि मैलवेयर विश्लेषकों लक्ष्य सीमा में हैं। एफ # की मध्यवर्ती स्तर की समझ वाले किसी व्यक्ति की तरह। :-) –

+2

मैं नहीं कहूंगा कि यह obfuscated है। यह अभी अनुवादित है। सभी एफ # शर्करा पूर्ववत किया गया है। इसके अलावा यदि आप इसे संकुचित करते हैं तो यह स्पष्ट है कि यह F # से आया है, और किसी भी अर्ध-अनुभवी एफ #/सी # व्यक्तिगत डीकंपिल्ड संस्करण से F # को फिर से संश्लेषित कर सकता है। ऐसे पैटर्न होते हैं जो घटित होते हैं, और आपको बस इतना करना होगा कि डीकंपलर क्या करता है और आप देख सकते हैं कि चीजें कैसे काम की जाती हैं। – devshorts

उत्तर

8
  1. मैंने इस तरह कुछ भी नहीं सुना है; हालांकि, मुझे लगता है कि यह अपेक्षाकृत निकट भविष्य में ऐसा उपकरण दिखाई देगा।
  2. एफ # कंपाइलर (यानी, एमएसआईएल और संबंधित मेटाडाटा) द्वारा उत्पादित असेंबली किसी भी तरह से खराब नहीं हैं। हालांकि, सी कोड या वीबी.नेट कंपाइलर्स द्वारा उत्पादित कोड से कुछ कोड बहुत अलग है, इसलिए यह रिवर्स-इंजीनियर के लिए आसान नहीं होगा (बस इसलिए कि ऐसा करने के लिए टूल उपलब्ध नहीं हैं)। बेशक, जैसा कि @ क्रैग स्टंटज़ ने कहा था, यह एक अनुभवी, प्रेरित हमलावर के खिलाफ अधिक सुरक्षा नहीं लेता है।

यदि आप वास्तव में पागल हैं, तो आप उन्हें फ़िल्टर करने से पहले अपने संकलित असेंबली पर एक obfuscation उपकरण का उपयोग करने पर विचार कर सकते हैं। मैं {SmartAssembly} का उपयोग 2010 के अंत से एफ # के साथ कर रहा हूं, इसलिए मुझे पता है कि एक एफ # के साथ काम करता है; यदि आप किसी अन्य टूल के साथ जाते हैं, तो सुनिश्चित करें कि आप इसे खरीदने से पहले कुछ उचित जटिल F # असेंबली के खिलाफ परीक्षण करें - उस समय जब मैं एक obfuscator की तलाश में था, तो उनमें से कई F # असेंबली के साथ सही ढंग से (या बिल्कुल नहीं) काम नहीं करते थे।

मैं एक समय पहले कुछ नोट लिखा एफ # विधानसभाओं करना मुश्किल होता है, तो आप और अधिक पढ़ना चाहते हैं के बारे में: Any experience using .NET obfuscators on F# assemblies?

1

एफ # .NET भाषा इसलिए यह decompiled किया जा सकता है का हिस्सा है। यदि आप पैसे खर्च करना चाहते हैं या 0xd4d के dnSpy (और हां, यह वही डेवलपर है जो बहुत प्रसिद्ध डीबफ्यूसेटर डी 4 डॉट के रूप में है) तो आप RedGate's Reflector पर एक नज़र डाल सकते हैं। डिकंपील्ड कोड वास्तव में हार्ड-कोड कोड के करीब है, तर्क अभी भी वही है और आप स्रोत कोड कॉपी/पेस्ट कर सकते हैं।

आप एक एफ # आवेदन आप एक अस्पष्टकर्ता उपयोग करने पर विचार हो सकता है की रक्षा करना चाहते हैं, & वर्तमान में वे लगभग सभी De4Dot द्वारा नियंत्रित किया जाता है तो यह, बुद्धिमानी से चुनें हालांकि .NETGuard वास्तव में मजबूत है, यह एफ # अनुप्रयोगों संभाल कर सकते हैं करने के लिए मुश्किल है, यह उत्पादन कर सकते हैं एक देशी आउटपुट & इसमें कुछ मजबूत निरंतर सुरक्षा है और De4Dot इसे संभाल नहीं सकता है।