
تنفيذ بلغة Nim لتحميل PE انعكاسي من الذاكرة
تنفيذ Nim لتحميل PE انعكاسي من الذاكرة. تم أخذ الأساس لهذا الكود من 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)، مما يسمح بتنفيذ ملفات PE من Rust وما إلى ذلك، قم بالتجميع باستخدام:
nim c -d:full_tls NimRunPE.nim
تقدير لـ BlackBone و مدونة lander/solstice-loader
لتنفيذ خيار full_tls.
التقنية نفسها قديمة جدًا، لكنني لم أجد تنفيذًا لها في Nim بعد. لذا تغير هذا الآن. :)
إذا كنت تخطط لتحميل مثلاً Mimikatz بهذه التقنية - تأكد من تجميع إصدار من المصدر بنفسك، لأن الملفات الثنائية للإصدارات لا تقبل الوسائط بعد تحميلها انعكاسيًا بواسطة هذا المحمل. لماذا؟ لا أعرف حقًا إنه غريب لكنه حقيقة. إذا قمت بالتجميع بنفسك فسوف تعمل:
الحزمة الخاصة بي مسلحة أيضًا بهذه التقنية - ولكن جميع دوال Win32 تم استبدالها باستدعاءات النظام هناك. مما يجعل التقنية أكثر خفاءً.