
मेमोरी से रिफ्लेक्टिव PE-लोडिंग का एक Nim कार्यान्वयन
मेमोरी से रिफ्लेक्टिव PE-लोडिंग का एक Nim कार्यान्वयन। इस कोड का आधार RunPE-In-Memory से लिया गया था - जिसे मैंने Nim में पोर्ट किया।
आपको निम्नलिखित निर्भरताएँ स्थापित करनी होंगी:
nimble install ptr_math winim
मैंने इसका परीक्षण केवल Nim संस्करण 1.6.2 के साथ किया है, इसलिए परीक्षण के लिए उसी संस्करण का उपयोग करें अन्यथा मैं किसी अन्य संस्करण का उपयोग करने पर त्रुटियों की गारंटी नहीं दे सकता।
यदि आप रनटाइम पर आर्गुमेंट पास करना चाहते हैं या बिल्कुल आर्गुमेंट पास नहीं करना चाहते हैं, तो इस प्रकार संकलित करें:
nim c NimRunPE.nim
यदि आप कस्टम आर्गुमेंट हार्डकोड करना चाहते हैं तो const exeArgs को अपनी आवश्यकतानुसार संशोधित करें और इस प्रकार संकलित करें:
nim c -d:args NimRunPE.nim - यह @glynx द्वारा योगदान किया गया था, धन्यवाद! 😎
यदि आप पूर्ण थ्रेड लोकल स्टोरेज (TLS) कॉलबैक समर्थन चाहते हैं, Rust PE के निष्पादन की अनुमति देते हुए आदि, तो इस प्रकार संकलित करें:
nim c -d:full_tls NimRunPE.nim
full_tls विकल्प के कार्यान्वयन के लिए BlackBone और lander's ब्लॉग/solstice-loader को श्रेय।
यह तकनीक काफी पुरानी है, लेकिन मुझे अभी तक कोई Nim कार्यान्वयन नहीं मिला था। तो अब यह बदल गया है। :)
यदि आप इस तकनीक से जैसे Mimikatz लोड करने की योजना बनाते हैं - तो सुनिश्चित करें कि आप स्वयं स्रोत से एक संस्करण संकलित करें, क्योंकि रिलीज़ बाइनरी इस लोडर द्वारा रिफ्लेक्टिव रूप से लोड होने के बाद आर्गुमेंट स्वीकार नहीं करती हैं। क्यों? मैं वास्तव में नहीं जानता, यह अजीब है लेकिन एक तथ्य है। यदि आप स्वयं संकलित करते हैं तो यह अभी भी काम करेगा:
मेरा निजी Packer भी इस तकनीक से सशस्त्र है - लेकिन वहाँ सभी Win32 फ़ंक्शन को Syscalls से बदल दिया गया है। इससे तकनीक अधिक छिपी हुई (stealthy) हो जाती है।