
PE को शेलकोड में परिवर्तित करता है
PE को इस प्रकार रूपांतरित करता है कि इसे सामान्य शेलकोड की तरह इंजेक्ट किया जा सके।
(साथ ही, आउटपुट फ़ाइल एक मान्य PE ही बनी रहती है)।
32 और 64 बिट दोनों PE को समर्थन करता है
लेखक: @hasherezade और @hh86
इस परियोजना का लक्ष्य ऐसी PE फ़ाइलें उत्पन्न करने की संभावना प्रदान करना है जिन्हें न्यूनतम प्रयास से इंजेक्ट किया जा सके। यह Stephen Fewer के ReflectiveDLLInjection से प्रेरित है - लेकिन अंतर यह है कि pe2shc के साथ आप संकलन के बाद रिफ्लेक्टिव लोडिंग स्टब जोड़ सकते हैं। साथ ही, PE फ़ाइल का हेडर इस प्रकार संशोधित किया जाता है कि आप इंजेक्ट किए गए बफर को बिल्कुल शुरू से निष्पादित करना शुरू कर सकते हैं - ठीक वैसे ही जैसे आप शेलकोड के साथ करते हैं। यह स्वचालित रूप से स्टब ढूंढ़ लेगा और पूर्ण PE को लोड करना जारी रखेगा।
🟢 स्टब केवल PE प्रारूप की मूल संरचनाओं का समर्थन करता है, जैसे:
कृपया ध्यान रखें, हालाँकि अधिकांश PE फ़ाइलों के लिए यह पर्याप्त है, कुछ निष्पादन योग्य फ़ाइलें PE प्रारूप के अन्य, अधिक जटिल पहलुओं का उपयोग कर सकती हैं। इसका मतलब है, हर PE को शेलकोड में सफलतापूर्वक रूपांतरित नहीं किया जा सकता।
🚫 वर्तमान में असमर्थित तत्वों के उदाहरण:
📦 ⚙️ नवीनतम रिलीज़ डाउनलोड करें।
सभी सबमॉड्यूल के साथ रिपो को प्राप्त करने के लिए रिकर्सिव क्लोन का उपयोग करें:
git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git
pe2shc.exe <आपकी PE का पथ> [आउटपुट पथ*]
* - वैकल्पिक
यदि PE सफलतापूर्वक रूपांतरित हो जाता है, तो pe2shc आपको बताएगा कि आउटपुट कहाँ सहेजा गया:
[+] फ़ाइल में सहेजा गया: <रूपांतरित फ़ाइल>
जैसे:
[+] फ़ाइल में सहेजा गया: test_file.shc.exe
runshc.exe <रूपांतरित फ़ाइल>
(*)चेतावनी: अपने रूपांतरित एप्लिकेशन के लिए उपयुक्त बिटनेस (32 या 64 बिट) वाले runshc के संस्करण का उपयोग करना याद रखें - अन्यथा एप्लिकेशन क्रैश हो जाएगा!