
مكتبة Object Pascal (Delphi) لتحليل وربط وتحميل وتفريغ ملفات Windows PE، مع عمليات النقل والاستيراد وTLS وقراءة ذاكرة العمليات عن بُعد.
NativePe هي مكتبة Windows Portable Executable مكتوبة بلغة Object Pascal لـ Delphi.
يركز المشروع على تحليل PE، والربط (mapping)، والتحميل، وإعادة التوطين (relocation)، ومعالجة الاستيراد والتصدير، والتفريغ (dumping)، وقراءة ذاكرة العمليات، وما يتصل بذلك من Windows internals. يدعم بناء Win32 وWin64 من نفس شجرة المصدر.
NativePe هو مشروع بحثي. تم اختباره مقابل مجموعة كبيرة من ملفات PE العادية وغير المعتادة والتالفة والعدائية، لكنه لا يدّعي القدرة على معالجة كل ملف PE ممكن بشكل صحيح.
جزء من الدافع شخصي. استخدمت Delphi حوالي أوائل العقد 2000 وأردت إعادة استكشاف تطوير Windows منخفض المستوى باستخدام Delphi الحديثة.
NativePe هو أيضاً تجربة عملية لإظهار أن Object Pascal لا يزال قابلاً للاستخدام في أبحاث PE وWindows internals.
نواة معالجة PE في NativePe هي نقل/إعادة تنفيذ بلغة Object Pascal لـ libpeconv من hasherezade.
أُعيدت كتابة الكود بلغة Object Pascal، لكن تقسيم الوحدات الأساسية والعديد من العمليات العامة ومسارات التحقق وقرارات تدفق التحكم وقواعد الاحتياط والتشخيصات والاختبارات مستمدة من مصدر libpeconv. لذلك فإن NativePe ليس تنفيذاً نظيف الغرفة (clean-room) أو مصمماً بشكل مستقل لوظائف libpeconv التي ينقلها.
مراجعة libpeconv المستخدمة بواسطة أداة المقارنة التفاضلية الحالية هي الالتزام 0fc25f680e03699d33ef3b2034a6724365f3d1a4.
شكراً لـ hasherezade لنشر libpeconv. راجع docs/PROVENANCE.md للعلاقة على مستوى المصدر وTHIRD-PARTY-NOTICES.md لإشعارات الإسناد والترخيص.
NativePe أكثر من مجرد ترجمة نحوية لـ libpeconv. يضيف المشروع الحالي وظائف خاصة بـ NativePe وتكاملاً مع Delphi/Windows حول النواة المنقولة.
يشمل ذلك حل API Set، ومزوّدي ذاكرة قابلين للتوصيل لـ WinAPI/NTAPI/الاستدعاء المباشر للنظام (direct-syscall)، وتهيئة security-cookie، ومساعدات إعادة تدوير PE، وكود التكامل ذي الصلة. لا يوجد لهذه الأجزاء نظير مباشر في وحدات المصدر في نواة libpeconv المثبّتة.
يحتوي المستودع أيضاً على مشاريع اختبار Delphi خاصة بـ NativePe، وfixtures من العالم الحقيقي، وأدوات corpus، واختبارات تكامل Windows.
مزيد من التفاصيل في docs/FEATURES.md.
يفصل NativePe منطق PE عن عمليات ذاكرة نظام التشغيل المختارة عبر TNativePeMemoryProvider.
الخلفيات المدمجة الحالية هي:
TWinApiMemoryProviderTNtApiMemoryProviderTSyscallMemoryProvider على Win64كما يحتفظ مسار hook الحالي بمفتاح التوافق الاختياري UseSyscalls لحماية الذاكرة القائمة على الاستدعاء المباشر للنظام.
راجع docs/MEMORY-PROVIDERS.md.
يستخدم NativePe عدة طبقات اختبار:
عالجت المقارنة التفاضلية الموثقة من 25 سبتمبر 2026 عدد 30,159 مسار corpus متطابق مع NativePe وأداة libpeconv المثبّتة. على مستوى النتيجة، تطابق 30,147 مساراً واختلف 12. لم يسجّل NativePe أي انهيار للعاملين في تلك الجولة؛ بينما سجّلت أداة libpeconv ستة. تصف هذه النتائج هذا الـ corpus وهذه الأدوات فقط ولا تثبت تفوقاً عاماً.
لم تكن الجولة بمستوى جودة benchmark، لذا لا تُستخدم بيانات توقيتها لادعاءات الأداء. لا يتم توزيع corpora الخارجية وعينات البرمجيات الخبيثة مع NativePe.
راجع docs/TESTING.md، وdocs/CORPUS-RESULTS.md، وdocs/LIBPECONV-COMPARISON.md.
يُطوَّر NativePe باستخدام Delphi 12 Athens.
افتح NativePe.groupproj لبناء العرض التوضيحي والاختبارات ومشغّل corpus وأداة تفريغ العمليات ومشاريع اختبار العالم الحقيقي المضمّنة.
مصدر المكتبة الرئيسي تحت src. يمكن للمشاريع أيضاً استخدام NativePe مباشرة بإضافة src إلى مسار بحث وحدات Delphi والإشارة إلى وحدات 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.
أضف src إلى مسار بحث وحدات Delphi وشغّل البرنامج مع ملف PE كوسيطته الوحيدة.
يحتوي المستودع على عدة ملفات تنفيذية وسكربتات مساعدة. نقاط الدخول الرئيسية موثقة في docs/BINARIES.md.
مهم: يقوم NativePeDemo.exe بتحميل وتنفيذ ملف PE المقدَّم. استخدمه فقط مع ملفات اختبار موثوقة. صُمم مشغّل corpus لمعالجة PE الساكنة ولا ينفّذ عمداً نقاط دخول PE أو TLS callbacks.
يُستخدم NativePe بنشاط كمشروع بحث واختبار. قد تتغير واجهات API وتفاصيل التنفيذ مع اكتشاف حالات حافة جديدة في PE.
الاختبار المكثف يقلل المخاطر، لكنه ليس دليلاً على الصحة الكاملة. تعامل مع ملفات PE غير الموثوقة كمدخلات غير موثوقة واستخدم عزلاً مناسباً عند العمل مع البرمجيات الخبيثة.
تُصدر مساهمات NativePe الأصلية تحت رخصة MIT.
يحتفظ الكود المستمد من مشاريع الأطراف الثالثة بإشعارات المصدر المطبقة وشروط الترخيص الموضحة في THIRD-PARTY-NOTICES.md.