A C++ library that grants access to advanced Windows internals, process management, and security token manipulation. Perfect for security research, automation, and low-level Windows programming.
- ⚙️ Process Management: Retrieve process IDs, manage processes, and impersonate different user contexts.
- 🔐 Token Manipulation: Duplicate and elevate process tokens, impersonate SYSTEM or TrustedInstaller.
- ⚡️ Native API Access: Interact directly with low-level NT system calls.
- 💻 Virtualization Detection: Check if the code is running in a virtual machine.
- 💥 Trigger BSOD: Cause a Blue Screen of Death
- 🔑 Windows Registry Access: Create and modify registry keys.
- 🔒 Security Contexts: Query and change process security contexts.
- 🔄 Dynamic Function Calls: Dynamically call functions from loaded DLLs.
- 🖥️ Start Windows Services: Start and manage Windows services programmatically.
- 🗂️ Add Processes to Startup: Automatically add processes to system startup.
To build the tests executable:
- Open your terminal and change to the project directory
- Run the following command in the terminal. Note: Your g++ installation must support C++20!
cmake -B build -G Ninja
- Build the executable with the following command:
cmake --build build
- Run the tests using:
./build/libprocman.exe
Any time you'd like to refactor or implement a new feature, you want to make sure your new features pass all tests.
- Go to the repositorys releases page
- Choose your version; preferbly the latest release.
Depending on your use case, you can choose to pick from different file formats:
- .CPP and .HPP file: simply drag the files into your include directories and include the .hpp file
- .lib or .dll: make sure to link the file to expose the functions.
- Include the procman.hpp and procman.cpp files in your project.
- Create an instance of the ProcessManager class
- Use the features provided by the class. Feel free to add your own functions!
Contributions are welcome! View the contributing guidlines here!
This project is licensed under the MIT License. See the LICENSE file for details.
This software is intended for educational purposes only. By using this library, you acknowledge that you fully understand and accept the risks associated with manipulating system processes, tokens, and security contexts. The author and contributors assume no responsibility for any damage, loss of data, or system instability that may result from the use of this library. Use at your own risk. Unauthorized use or misuse of this library for malicious purposes may violate local laws and regulations.
For inquiries or feature requests, open an issue on GitHub.