जैसा कि मैं कह सकता हूं, यह इस पर कॉल करने के लिए बहुत जल्दी तरीका है। मैं व्यक्तिगत रूप से नहीं जानता कि वर्चुअलप्रोटेक्ट(), कोर विनैपी फ़ंक्शन का उपयोग किए बिना एक जिटर कैसे लिखना है जो आपको जिटर द्वारा निष्पादन योग्य कोड में जेनरेट किए गए मशीन कोड के साथ मेमोरी का एक हिस्सा बदल देता है।
WinRT ऐप के लिए कई देशी winapi फ़ंक्शन उपलब्ध हैं। धन्य सिस्टम फ़ंक्शंस की सूची available here है। स्मृति से संबंधित एपिस बहुत सीमित हैं, वर्चुअलक्वियर सूची में केवल एक ही है जो करीब आता है।
तो वर्तमान भाषा अनुमान कैसे करते हैं? चलो देखते हैं। सीएलआर का एक प्रक्षेपण है, यह किसी भी मेट्रो ऐप में लोड हो जाता है जिसे आप प्रबंधित भाषा में लिखते हैं जैसे सी #। C: \ windows \ microsoft.net \ framework \ v4.0.30319 \ clr.dll पर dumpbin.exe/imports चलाना Windows DLL पर निर्भरताओं की एक बहुत बड़ी सूची उत्पन्न करता है। कि डंप से एक टुकड़ा:
Dump of file clr.dll
File Type: DLL
Section contains the following imports:
KERNEL32.dll
...
430 RaiseException
581 VirtualAlloc
584 VirtualFree
589 VirtualQuery
587 VirtualProtect <=== here!
339 HeapDestroy
336 HeapAlloc
342 HeapValidate
540 SleepEx
547 SwitchToThread
... etc
एक और भाषा प्रक्षेपण "चक्र" इंजन में लागू, जावास्क्रिप्ट के लिए है। यह पता लगाने में मुश्किल है कि डीएलएल उस इंजन को लागू करता है, यह सिर्फ एक कोड नाम है। अप्रबंधित डीबगिंग सक्षम के साथ एक नमूना जावास्क्रिप्ट प्रोजेक्ट चला रहा है "jscript9.dll" लोड किया गया है। आइए इस पर dumpbin.exe/आयात करें:
....
6898F4D5 10D DebugBreak
6891FDA1 55E TerminateProcess
6898EF9E 57E UnhandledExceptionFilter
6891FD58 43C RaiseException
68903BB7 59E VirtualProtect <=== here!
6A218590 366 InterlockedPushEntrySList
6A2185A9 365 InterlockedPopEntrySList
6A2195AA 35C InitializeSListHead
689026F9 598 VirtualAlloc
68902852 59B VirtualFree
6890603E 4A2 ResetWriteWatch
...etc
ठीक है, यह वहां है। यह होना होगा। समस्या है, अभी आप इस फ़ंक्शन को कॉल नहीं कर सकते हैं। यह निश्चित रूप से स्टोर सत्यापनकर्ता से जांच पास नहीं करेगा।
इसे कम से कम वास्तविक WinRT उपलब्ध हो जाता है, जो एआरएम कोर पर चलता है।Win32 के शीर्ष पर चलने वाला कोई भी नहीं जो अब आप Windows 8 उपभोक्ता पूर्वावलोकन में चल रहे हैं। और आसानी से छंटनी सूची न केवल मौजूदा winapi कार्यों का लाभ ले सकते हैं। यह शायद साल के अंत में होने वाला है, शायद। अगले वर्ष की गर्मियों तक असली हार्डवेयर आपके हाथों में नहीं होगा।
स्रोत
2012-04-23 18:05:04
WinRT लगभग एक सैंडबॉक्स के रूप में कार्य कर रहा है, इसलिए वर्चुअलअलोक/वर्चुअलप्रोटेक्ट को एपीआई एक्सेस नहीं बदला जा रहा है, क्योंकि एपीआई OEM के लिए लगभग तैयार है। असल में, एनईटी सीएलआर/जेआईटी (और सभी गतिशील .NET भाषाओं के लिए जो भी जा सकते हैं) के अलावा, एक जेआईटी लागू करने का कोई तरीका नहीं होगा। – xoofx
जब मैं विनआरटी के बारे में बात करता हूं, तो मैं पूरे "विनरेट पारिस्थितिक तंत्र" के बारे में बात कर रहा था जिसका मतलब शुद्ध "विनआरटी" + विन 32/COM अधिकृत एपीआई है। विंडोज 8 मेट्रो ऐप के लिए प्रतिबंधित Win32/COM API लगभग सैंडबॉक्स के रूप में कार्य कर रहा है। तो पीई सेक्शन को पढ़ने के लिए कोई रास्ता नहीं होगा + लिखना + निष्पादन योग्य, इसलिए कोई भी जेआईटी नहीं। यह अब तक विंडोज 8 मेट्रो में डिज़ाइन द्वारा है, और मुझे अत्यधिक संदेह है कि यह डिज़ाइन रिलीज पूर्वावलोकन से 1 महीने पहले बदल जाएगा। – xoofx
'HEAP_CREATE_ENABLE_EXECUTE' के साथ 'हेपक्रेट'? –