
एक शरारती, क्रॉस-प्लेटफॉर्म बाइनरी पार्सिंग क्रेट, रस्ट में लिखा गया

Goblin को rustc 1.85.0 (Rust 2024 संस्करण) की आवश्यकता है।
अपने Cargo.toml में जोड़ें:
[dependencies]
goblin = "0.10"
libgoblin का उद्देश्य बाइनरी पार्सिंग, लोडिंग और विश्लेषण के लिए आपका एक-स्टॉप शॉप बनना है।
Goblin मुख्य रूप से निम्नलिखित महत्वपूर्ण उपयोग-मामलों का समर्थन करता है:
कोर, std-मुक्त #[repr(C)] स्ट्रक्ट, छोटा संकलन समय, आपकी सुविधानुसार 32/64 (या दोनों)।
टाइप पनिंग। एक बार किसी प्रकार पर एक फ़ंक्शन परिभाषित करें, लेकिन इसे 32 या 64-बिट वेरिएंट पर काम करने दें - वास्तव में कुछ भी बदले बिना, और कोई मैक्रो नहीं! एक बुनियादी उदाहरण के लिए examples/automagic.rs देखें।
std मोड। यह Pread और Pwrite के माध्यम से रीड और राइट कार्यान्वयन, फ़ाइल से पढ़ना, सुविधा आवंटन, अतिरिक्त विधियाँ आदि जोड़ता है। यह उन ग्राहकों के लिए है जो आवंटन कर सकते हैं और डिस्क से बाइनरी पढ़ना चाहते हैं।
Endian_fd। एक वास्तव में भयानक नाम 😆 यह panopticon या falcon जैसे बाइनरी विश्लेषण के लिए है, जिसे विदेशी एंडियननेस की बाइनरी पढ़ने की आवश्यकता होती है, या क्रॉस-प्लेटफ़ॉर्म विदेशी आर्किटेक्चर बिनुटिल्स बनाने के आधार के रूप में, उदा. cargo-sym और bingrep इसके सरल उदाहरण हैं, लेकिन सीमा आकाश है।
यहाँ कुछ चीजें हैं जो आप इस क्रेट के साथ कर सकते हैं (या कार्यान्वित करने में मदद कर सकते हैं ताकि वे किए जा सकें):
Pwrite व्युत्पन्न है)।no_std cfg का उपयोग करके बाइनरी लोड करें। यानी, यह मूल रूप से सिर्फ स्ट्रक्ट और कॉन्स्ट डेफिनिशन है (C हेडर की तरह) - कोई fd, कोई आउटपुट, कोई std नहीं।libgoblin को बड़े पैमाने पर कॉन्फ़िगरेबल बनाने के लिए डिज़ाइन किया गया है। वर्तमान फ़्लैग हैं:
repr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफrepr(C) स्ट्रक्ट डेफno_std वातावरण की अनुमति देने के लिएअनुरक्षक उस विशेष बैकएंड के लिए पहले संपर्क समीक्षक होते हैं। इन्हें पिछले योगदान, गतिविधि, मूल ज्ञान और मैत्रीपूर्ण और मिलनसार व्यवहार के आधार पर चुना जाता है :D
वर्तमान में, मेरे (@m4b) पास सभी PR के लिए मर्ज अधिकार हैं। भविष्य में यह संभावना है कि उस दिए गए बैकएंड के अनुरक्षक के पास भी मर्ज अधिकार होंगे।
अंत में, मैं अभी भी सभी PR की सतही समीक्षा करूंगा, लेकिन अधिकतर/पूरी तरह से उस बैकएंड के अनुरक्षक पर निर्भर रहूंगा।
और हमेशा बिल और टेड की बुद्धि को याद रखें: "एक दूसरे के प्रति उत्कृष्ट बनें!"
आप सभी का धन्यवाद ❤️ !
वर्णमाला क्रम में:
जब तक स्पष्ट रूप से अन्यथा न कहा गया हो, आप सहमत हैं कि आपके योगदान साथ में दी गई LICENSE फ़ाइल (MIT) में वर्णित अनुसार लाइसेंस प्राप्त हैं।