
Object Pascal (Delphi) लाइब्रेरी Windows PE फ़ाइलों को पार्स करने, मैप करने, लोड करने और डंप करने के लिए, रीलोकेशन, इम्पोर्ट, TLS, और रिमोट प्रोसेस मेमोरी रीडिंग के साथ।
NativePe, Delphi के लिए Object Pascal में लिखी गई एक Windows Portable Executable लाइब्रेरी है।
यह प्रोजेक्ट PE पार्सिंग, मैपिंग, लोडिंग, रीलोकेशन, इम्पोर्ट और एक्सपोर्ट हैंडलिंग, डंपिंग, प्रोसेस मेमोरी रीडिंग, और संबंधित Windows इंटरनल्स पर केंद्रित है। यह एक ही सोर्स ट्री से Win32 और Win64 बिल्ड्स का समर्थन करता है।
NativePe एक शोध प्रोजेक्ट है। इसका परीक्षण सामान्य, असामान्य, विकृत (malformed), और शत्रुतापूर्ण PE फ़ाइलों के एक बड़े सेट पर किया गया है, लेकिन यह दावा नहीं करता कि यह हर संभव PE फ़ाइल को सही ढंग से संभाल सकता है।
इसका एक हिस्सा व्यक्तिगत है। मैंने 2000 के दशक की शुरुआत में Delphi का उपयोग किया था और आधुनिक Delphi के साथ लो-लेवल Windows डेवलपमेंट को फिर से देखना चाहता था।
NativePe एक व्यावहारिक प्रयोग भी है जो यह दिखाता है कि Object Pascal का उपयोग अभी भी PE और Windows इंटरनल्स शोध के लिए किया जा सकता है।
NativePe का PE-प्रोसेसिंग कोर hasherezade द्वारा libpeconv का Object Pascal पोर्ट/पुनःकार्यान्वयन है।
कोड को Object Pascal में फिर से लिखा गया था, लेकिन कोर मॉड्यूल विभाजन और कई सार्वजनिक ऑपरेशन, वैलिडेशन पथ, कंट्रोल-फ़्लो निर्णय, फ़ॉलबैक नियम, डायग्नोस्टिक्स, और परीक्षण libpeconv सोर्स से लिए गए थे। इसलिए NativePe, जिस libpeconv कार्यक्षमता को यह पोर्ट करता है, उसका क्लीन-रूम या स्वतंत्र रूप से डिज़ाइन किया गया कार्यान्वयन नहीं है।
वर्तमान डिफ़रेंशियल हार्नेस द्वारा उपयोग किया गया libpeconv रिवीज़न कमिट 0fc25f680e03699d33ef3b2034a6724365f3d1a4 है।
libpeconv प्रकाशित करने के लिए hasherezade को धन्यवाद। सोर्स-स्तरीय संबंध के लिए docs/PROVENANCE.md देखें और एट्रिब्यूशन तथा लाइसेंस सूचनाओं के लिए THIRD-PARTY-NOTICES.md देखें।
NativePe, libpeconv का केवल सिंटैक्स अनुवाद नहीं है। वर्तमान प्रोजेक्ट पोर्ट किए गए कोर के आसपास NativePe-विशिष्ट कार्यक्षमता और Delphi/Windows एकीकरण जोड़ता है।
इसमें API Set रिज़ॉल्यूशन, प्लग करने योग्य WinAPI/NTAPI/डायरेक्ट-सिसकॉल मेमोरी प्रोवाइडर, सिक्योरिटी-कुकी इनिशियलाइज़ेशन, PE रीसाइक्लिंग हेल्पर, और संबंधित एकीकरण कोड शामिल हैं। इन भागों का पिन किए गए libpeconv कोर में कोई सीधा सोर्स-मॉड्यूल समकक्ष नहीं है।
रिपॉज़िटरी में NativePe-विशिष्ट Delphi टेस्ट प्रोजेक्ट, वास्तविक-दुनिया के फ़िक्स्चर, कॉर्पस टूलिंग, और Windows एकीकरण परीक्षण भी शामिल हैं।
अधिक विवरण docs/FEATURES.md में हैं।
NativePe, TNativePeMemoryProvider के माध्यम से PE लॉजिक को चयनित ऑपरेटिंग सिस्टम मेमोरी ऑपरेशन्स से अलग करता है।
वर्तमान अंतर्निहित बैकएंड हैं:
TWinApiMemoryProviderTNtApiMemoryProviderTSyscallMemoryProviderमौजूदा हुक पथ डायरेक्ट सिसकॉल आधारित मेमोरी प्रोटेक्शन के लिए अपना वैकल्पिक UseSyscalls संगतता स्विच भी रखता है।
docs/MEMORY-PROVIDERS.md देखें।
NativePe कई टेस्ट लेयर का उपयोग करता है:
25 सितंबर, 2026 के दस्तावेज़ीकृत डिफ़रेंशियल रन ने NativePe और पिन किए गए libpeconv हार्नेस के साथ 30,159 समान कॉर्पस पथों को प्रोसेस किया। परिणाम स्तर पर, 30,147 पथ मेल खाए और 12 भिन्न थे। उस रन में NativePe ने कोई वर्कर क्रैश दर्ज नहीं किया; libpeconv हार्नेस ने छह दर्ज किए। ये परिणाम केवल इस कॉर्पस और इन हार्नेस का वर्णन करते हैं और सामान्य श्रेष्ठता स्थापित नहीं करते।
यह रन बेंचमार्क-गुणवत्ता वाला प्रदर्शन रन नहीं था, इसलिए इसके टाइमिंग डेटा का उपयोग प्रदर्शन दावों के लिए नहीं किया जाता। बाहरी कॉर्पस और मैलवेयर नमूने NativePe के साथ वितरित नहीं किए जाते।
docs/TESTING.md, docs/CORPUS-RESULTS.md, और docs/LIBPECONV-COMPARISON.md देखें।
NativePe को Delphi 12 Athens के साथ विकसित किया गया है।
शामिल डेमो, टेस्ट, कॉर्पस रनर, प्रोसेस डंप टूल, और वास्तविक-दुनिया टेस्ट प्रोजेक्ट को बिल्ड करने के लिए NativePe.groupproj खोलें।
मुख्य लाइब्रेरी सोर्स src के अंतर्गत है। प्रोजेक्ट Delphi यूनिट सर्च पथ में src जोड़कर और आवश्यक NativePe.* यूनिट्स को संदर्भित करके सीधे NativePe का उपयोग भी कर सकते हैं।
शामिल प्रोजेक्ट द्वारा Win32 और Win64 दोनों का समर्थन किया जाता है।
निम्नलिखित उदाहरण एक PE इमेज को मैप करता है, रीलोकेशन लागू करता है, और इम्पोर्ट को रिज़ॉल्व करता है। यह PE एंट्री पॉइंट को कॉल नहीं करता।
program PeLoaderMinimal;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
NativePe.BufferUtil,
NativePe.PeLoader;
var
Image: TAlignedBuf;
ImageSize: NativeUInt;
begin
if ParamCount <> 1 then
Halt(1);
Image := LoadPeExecutable(ParamStr(1), ImageSize);
if Image = nil then
Halt(1);
try
Writeln('Loaded at: 0x', IntToHex(NativeUInt(Image), SizeOf(Pointer) * 2));
Writeln('Virtual size: ', ImageSize);
finally
FreePeBuffer(Image, ImageSize);
end;
end.
Delphi यूनिट सर्च पथ में src जोड़ें और प्रोग्राम को इसके एकमात्र आर्ग्युमेंट के रूप में एक PE फ़ाइल के साथ चलाएँ।
रिपॉज़िटरी में कई एक्ज़ीक्यूटेबल और हेल्पर स्क्रिप्ट हैं। मुख्य एंट्री पॉइंट docs/BINARIES.md में दस्तावेज़ीकृत हैं।
महत्वपूर्ण: NativePeDemo.exe दी गई PE फ़ाइल को लोड और निष्पादित करता है। इसका उपयोग केवल विश्वसनीय टेस्ट फ़ाइलों के साथ करें। कॉर्पस रनर स्टैटिक PE प्रोसेसिंग के लिए डिज़ाइन किया गया है और जानबूझकर PE एंट्री पॉइंट या TLS कॉलबैक निष्पादित नहीं करता।
NativePe का उपयोग सक्रिय रूप से एक शोध और परीक्षण प्रोजेक्ट के रूप में किया जाता है। जैसे-जैसे नए PE एज केस मिलते हैं, API और कार्यान्वयन विवरण अभी भी बदल सकते हैं।