A Windows DLL and shellcode injection tool with a Direct3D 11 GUI, built entirely in C.
All NT syscall wrappers are resolved dynamically at runtime from ntdll.dll — no static imports of Zw/Nt APIs.
|
|
|
The GUI wires everything automatically. To use the engine headlessly, populate the global PLRing3 struct and call inject():
PLRing3.hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
PLRing3.method = PL_METHOD_MANUAL_MAP;
PLRing3.execMethod = PL_EXEC_NT_CREATE_THREAD_EX;
PLRing3.allocMethod = PL_ALLOC_ZW_ALLOCATE;
PLRing3.iatMode = PL_IAT_LOADLIBRARY;
strncpy(PLRing3.libraryPath, "C:\\path\\to\\payload.dll", MAX_PATH - 1);
inject();
printf. Redirect it to your own function before calling inject():
pl_log = my_log_function;Open PerfectLoader.sln and build in Release or Debug configuration.
[!NOTE] The project links against
ntdll.libfor type resolution only. All actual Zw/Nt function addresses are resolved at runtime viaGetProcAddressthroughResolveZwApi().
- Run
PerfectLoader.exeas Administrator - Enter or browse for the DLL path (not required for shellcode mode)
- Select the Target Process from the dropdown or type the process name
- Choose an Injection Method, Execution Method, and Allocation Method
- SetWindowsHookEx only — enter the name of the exported hook procedure in your DLL
- Shellcode only — paste your payload in
\xNN,0xNN, or bare hex format - Click INJECT
This project is intended for educational and research purposes only (e.g., malware analysis, security research in controlled environments). Do not use against systems you do not own or have explicit permission to test.