2011-03-18 5 views
5

OSR Online और NtInternals जैसे विभिन्न पृष्ठों को देखने के बाद, यह NtCreateProcess (और ZwCreateProcess) निर्दिष्ट है कि एक स्मृति खंड के लिए एक संभाल देने वैकल्पिक है की तरह लगता है!निष्पादन योग्य बैक वाली छवि के बिना कोई प्रक्रिया हो सकती है?

क्या इसका मतलब यह है कि हमारे पास ऐसी प्रक्रियाएं हो सकती हैं जो निष्पादन योग्य छवियों द्वारा समर्थित नहीं हैं? यदि हां, तो वे संभावित रूप से क्या हो सकते हैं (या वे हैं)? क्या इसका मतलब है कि हम पूरी तरह से स्मृति में निष्पादन योग्य प्रतिलिपि बना सकते हैं और बाद में डिस्क से फ़ाइल को भी हटा सकते हैं, और प्रक्रिया चल रही है ?? यह वास्तव में उपयोगी सुविधा की तरह प्रतीत होता है।

उत्तर

4

यदि अनुभाग (Win32 भूमि में फ़ाइल मैपिंग) शून्य है, तो यह मूल प्रक्रिया के अनुभाग का उपयोग करता है। एनयूएलएल का उपयोग करना और नई मेमोरी आवंटित करना और उस पर ईआईपी इंगित करना संभव हो सकता है (या पेज फ़ाइल मैपिंग का उपयोग करें), लेकिन एनटीक्रेट प्रोसेस का उपयोग समस्याग्रस्त है, यह अनियंत्रित है और Win32 उपप्रणाली जैसे CreateProcess के साथ पंजीकृत नहीं है। (यदि आप केवल ntdll से निर्यात का उपयोग करना चाहते हैं, तो यह ठीक हो सकता है)

Win9x, NT4 और 2000 पर आप here सूचीबद्ध गंदे चाल का उपयोग करके चलते समय डिस्क से खुद को हटा सकते हैं।

अन्य विकल्प:

  • एक ड्राइवर का उपयोग करें, वे के बाद उनके लोड हो हटाया जा सकता है (sysinternal उपकरण ऐसा करने) एक मेजबान प्रक्रिया
  • उपयोग; explorer.exe, cmd.exe शुरू करने या निलंबित Rundll32.exe और प्रयोग CreateRemoteThread + इंजेक्शन कोड (बेशक इसका मतलब यह है डिस्क पर एक exe फ़ाइल वहाँ है, लेकिन अपने कोड में से कोई भी उस में है)
+0

मैं पॉज़िक्स 'फोर्क 'तंत्र से बहुत परिचित नहीं हूं, लेकिन क्या आप इसे मानते हैं, क्योंकि मूल प्रक्रिया के अनुभाग का उपयोग किया जाता है, इसका उपयोग विंडोज पर' फोर्क 'को लागू करने के लिए किया जा सकता है? (और +1, फ़ाइल हटाने की जानकारी के लिए धन्यवाद, यह दिलचस्प है!) – Mehrdad

+0

@ मेहरदाद: 2008 से http://www.eggheadcafe.com/software/aspnet/32040421/ntcreateprocess-and-fork.aspx के अनुसार, सिगविन लोगों ने फोर्किंग और असफल होने के लिए एनटीसीआरएट प्रोसेस का उपयोग करने की कोशिश की, मुझे नहीं पता कि तब से चीजें बदल गई हैं लेकिन आप उनके स्रोत की जांच कर सकते हैं ... – Anders

+0

: ओ यह बहुत अच्छा है !! मुझे लगता है कि मैं कोशिश करूँगा (अरबवें समय के लिए) यह देखने के लिए कि क्या मैं 'CreateProcess' का अपना संस्करण लिख सकता हूं ... मुझे शुभकामनाएं दें! :] – Mehrdad

2

मैं बस की कोशिश की गैर-छवि-समर्थित अनुभाग ऑब्जेक्ट के साथ स्वयं एक प्रक्रिया बनाने के लिए। :)

परिणाम?

NtCreateProcess लौटे:

STATUS_SECTION_NOT_IMAGE 
// An attempt was made to query image information on a section which 
// does not map an image. 

तो जाहिरा तौर पर हर प्रक्रिया (यह मानते हुए आप अन्यथा करने के लिए कर्नेल हैक नहीं है) छवि समर्थित होने की जरूरत है।

संबंधित मुद्दे