safing-portmaster/windows_kext/README.md
2025-01-28 14:26:44 +02:00

2.6 KiB

Portmaster Windows kext

Implementation of Safing's Portmaster Windows kernel extension in Rust.

Documentation

Building (For release)

Please refer to release/README.md for details about the release procedure.

Building (For testing and development)

The Windows Portmaster Kernel Extension is currently only developed and tested for the amd64 (64-bit) architecture.

Prerequirements:

Setup Test Signing:

Not recommended for a work machine. Usually done on virtual machine dedicated for testing.

In order to test the driver on your machine, you will have to sign it (starting with Windows 10).

Create a new certificate for test signing:

    # Open a *x64 Free Build Environment* console as Administrator.

    # Run the MakeCert.exe tool to create a test certificate:
    MakeCert -r -pe -ss PrivateCertStore -n "CN=DriverCertificate" DriverCertificate.cer

    # Install the test certificate with CertMgr.exe:
    CertMgr /add DriverCertificate.cer /s /r localMachine root

Enable Test Signing on the dev machine:

    # Before you can load test-signed drivers, you must enable Windows test mode. To do this, run this command:
    Bcdedit.exe -set TESTSIGNING ON
    # Then, restart Windows. For more information, see The TESTSIGNING Boot Configuration Option.

Build driver:

    cd driver
    cargo build --release

Build also works on linux

Link and sign: On a windows machine copy driver.lib from the project target directory (driver/target/x86_64-pc-windows-msvc/release/driver.lib) in the same folder as link-dev.ps1. Run link-dev.ps1.

driver.sys should appear in the folder.

Sign the driver with the test certificate:

  SignTool sign /v /s TestCertStoreName /n TestCertName driver.sys

Load and use the driver.