क्या सीएलआर/.NET बाइटकोड उपकरण मौजूद हैं?


7

मैं जेवीएम बाइटकोड (एएसएम, सीजीएलआईबी, जाड इत्यादि) को छेड़छाड़ करने, उत्पन्न करने, घटाने के लिए जावा टूल्स के बारे में अच्छी तरह से जानता हूं। सीएलआर बाइटकोड के लिए क्या समान उपकरण मौजूद हैं? क्या लोग सीएलआर के लिए बाइटकोड मैनिपुलेशन करते हैं?

2

बाइटकोड एक बाइनरी प्रारूप है। .NET असेंबली निष्पादन निर्देशों को संग्रहीत करने के तरीके के संदर्भ में बहुत अलग काम करती है।

बाइटकोड जैसी संरचना को संकलित करने के बजाय, .NET भाषाओं को इंटरमीडिएट भाषा में संकलित किया जाता है (वास्तव में, इसे केवल इतना कहा जाता है - आईएल)।

यह एक मानव पठनीय भाषा है जो असेंबलर के ऑब्जेक्ट उन्मुख संस्करण की तरह क्रमबद्ध दिखती है।

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

मैनिपुलेशन थोड़ा अलग है, मैं सुझाव देता हूं कि .NET स्पेस में कुछ एओपी उपकरण देखें। मैं फीनिक्स पर एक नज़र डालने का भी सुझाव दूंगा, जो एक कंपाइलर प्रोजेक्ट है जो एमएस के काम में है। इसमें कुछ वाकई कूल पोस्ट-कंपाइल मैनिपुलेशन फीचर्स हैं।

यदि आप .NET एओपी उपकरण के बारे में और जानना चाहते हैं, तो मैं एक और प्रश्न खोलने का सुझाव दूंगा (यह एक और अन्य कीड़े है)।

ऐसी कई किताबें भी हैं जो आपको आईएल के इंस और आउट सिखाएंगी। यह सीखने के लिए एक बहुत ही जटिल भाषा नहीं है।

+8

"एनईटी असेंबली निष्पादन निर्देशों को कैसे संग्रहीत करते हैं, इस मामले में बहुत अलग काम करते हैं" नहीं, वे नहीं ... सबकुछ अंततः "बाइनरी प्रारूप" । इस बाइनरी प्रारूप में आईएल के साथ 1 से 1 पत्राचार है। 06 aug. 092009-08-06 09:53:04


4

ILDASM और Reflector दिमाग में आते हैं।


14

परावर्तक हमेशा अच्छा होता है, लेकिन मोनो। सेसिल सबसे अच्छा उपकरण है जिसे आप संभवतः समग्र रूप से पूछ सकते हैं। किसी भी तरह से सीआईएल में हेरफेर करने के लिए यह अमूल्य है।


7

Mono.Cecil एएसएम जैसे एक महान उपकरण है। यह मोनो का एक सबप्रोजेक्ट है, और पूरी तरह से खुला स्रोत है। यह System.Reflection से better feature भी प्रदान करता है।


1

NDepend आपको .NET असेंबली स्थिर विश्लेषण (कोड मेट्रिक्स, निर्भरता विश्लेषण इत्यादि) करने की अनुमति देता है। निर्भरता मैट्रिक्स, निर्भरता ग्राफ और ट्रेमैप मेट्रिक्स visualizations का उपयोग करके अपने .NET असेंबली की संरचना का अवलोकन प्राप्त करने के लिए एनडॉन्डेंस बहुत उपयोगी है।

यह भी परावर्तक के साथ एकीकृत है: उदाहरण के लिए आप महत्वपूर्ण प्रकार और अपने विधानसभाओं में तरीकों क्रमशः एक प्रकार/विधि Rank metric (एक कोड मीट्रिक गूगल पेज रैंक के लिए इसी तरह) का उपयोग कर पता लगा सकते हैं, और करने के लिए परावर्तक के NDepend से सीधे कूद सी #, वीबीएनईटी, आदि में अलग कोड प्राप्त करें।