
ELF बाइनरी पैकर जो कोड सेक्शन को एन्क्रिप्ट करता है और 64-बिट Linux एक्जीक्यूटेबल के लिए रनटाइम डिक्रिप्शन स्टब इंजेक्ट करता है, जो कोड इंजेक्शन और बाइनरी मैनिपुलेशन तकनीकों को प्रदर्शित करता है।
42 स्कूल प्रोजेक्ट जो 64-बिट ELF निष्पादनयोग्य फ़ाइलों के लिए एक बाइनरी पैकर को लागू करता है। यह पैकर निष्पादनयोग्य फ़ाइल के कोड अनुभागों को एन्क्रिप्ट करता है और उसमें एक डिक्रिप्शन रूटीन इंजेक्ट करता है जो रनटाइम पर निष्पादित होता है।
Woody-Woodpacker एक प्रोग्राम है जो एक 64-बिट ELF बाइनरी को इनपुट के रूप में लेता है और woody नामक एक नया एन्क्रिप्टेड संस्करण बनाता है। जब woody बाइनरी निष्पादित होती है:
यह प्रोजेक्ट निम्नलिखित की पड़ताल करता है:
मूल बाइनरी → [Woody-Woodpacker] → एन्क्रिप्टेड बाइनरी (woody)
woody निष्पादनयोग्य बनाएँ./woody → कोड डिक्रिप्ट करें → "....WOODY...." प्रिंट करें → मूल प्रोग्राम निष्पादित करें
# रिपॉजिटरी को क्लोन करें
git clone https://gitlab.com/Aurh1l/woody-woodpacker.git
cd woody-woodpacker
# प्रोजेक्ट को कंपाइल करें
make
# woody_woodpacker निष्पादनयोग्य अब तैयार है
./woody_woodpacker
./woody_woodpacker <binary_file>
यह वर्तमान निर्देशिका में woody नामक एक नई फ़ाइल बनाता है।
# एक बाइनरी पैक करें
./woody_woodpacker /bin/ls
# पैक की गई बाइनरी को निष्पादित करें
./woody
# आउटपुट: ....WOODY....
# [फिर सामान्य ls आउटपुट]
# मूल और पैक की गई बाइनरी के व्यवहार की तुलना करें
/bin/ls -la
./woody -la
# दोनों को समान आउटपुट उत्पन्न करना चाहिए ("....WOODY...." के बाद)
पैकर निम्नलिखित ELF घटकों में हेरफेर करता है:
.text अनुभागप्रोजेक्ट आमतौर पर एक सरल एन्क्रिप्शन विधि का उपयोग करता है जैसे:
सेगमेंट पैडिंग इंफेक्शन (Silvio Cesare विधि):
┌─────────────────────────┐
│ ELF Header │
├─────────────────────────┤
│ Program Headers │
├─────────────────────────┤
│ Decryption Stub │ ← Injected code
├─────────────────────────┤
│ Encrypted .text │ ← Original code (encrypted)
├─────────────────────────┤
│ Other sections │
├─────────────────────────┤
│ Section Headers │
└─────────────────────────┘
यह प्रोजेक्ट 42 स्कूल पाठ्यक्रम का हिस्सा है और केवल शैक्षिक उद्देश्यों के लिए है।
यह उपकरण 42 स्कूल पाठ्यक्रम के भाग के रूप में शैक्षिक उद्देश्यों के लिए बनाया गया है। केवल उन बाइनरी पर जिम्मेदारी से उपयोग करें जिनके आप स्वामी हैं या जिन्हें संशोधित करने की अनुमति है। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं हैं।