avatar_razor1995

Podpisywanie modyfikowanych sterowników Windows własnym certyfikatem

Zaczęty przez razor1995, 18 Listopad 2025, 19:43:30

Poprzedni wątek - Następny wątek

0 użytkowników i 1 Gość przegląda ten wątek.

razor1995


Poniższy poradnik opisuje kompletny proces tworzenia własnego podpisu cyfrowego i podpisywania nim sterowników w Windows 10/11.
Metoda działa dla sterowników INF, SYS oraz katalogów CAT.

1. Instalacja Windows SDK oraz Windows Driver Kit (WDK)
Do podpisania sterownika potrzebne są dwa komponenty:
✔ Windows SDK
✔ Windows Driver Kit (WDK)
Pobieramy najnowsze wersje ze strony Microsoftu:
Windows SDK
Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj
Windows Driver Kit (WDK)
Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj
W instalatorach zaznaczamy tylko:
  • Windows SDK Tools
  • Windows Driver Kit Tools
Nie trzeba żadnych debuggerów ani emulatorów.

Po instalacji narzędzia są w katalogach:
C:\Program Files (x86)\Windows Kits\10\bin\<wersja>\x86\
C:\Program Files (x86)\Windows Kits\10\bin\<wersja>\x64\

Najważniejsze pliki:
  • Inf2Cat.exe — generowanie katalogu sygnatur (.cat)
  • signtool.exe — podpisywanie sterownika

2. Tworzenie własnego certyfikatu do podpisywania sterowników
Uruchom PowerShell jako administrator i wpisz:
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MojeSterowniki" -KeyUsage DigitalSignature -CertStoreLocation Cert:\LocalMachine\My
Następnie eksportujemy certyfikat do PFX:
$pwd = ConvertTo-SecureString -String "MojeHaslo123" -AsPlainText -Force
Export-PfxCertificate -Cert (Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -eq "CN=MojeSterowniki" }) -FilePath C:\cert.pfx -Password $pwd

Certyfikat zostanie zapisany jako:
C:\cert.pfx
3. Instalacja certyfikatu w zaufanych magazynach
Aby Windows akceptował sterowniki podpisane naszym certyfikatem, musimy dodać go do:
  • Trusted Root Certification Authorities
  • Trusted Publisher
  • Trusted People
Robimy to tak:
$pwd = ConvertTo-SecureString "MojeHaslo123" -AsPlainText -Force
Import-PfxCertificate -FilePath C:\cert.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath C:\cert.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
Import-PfxCertificate -FilePath C:\cert.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPeople -Password $pwd

4. Przygotowanie sterownika do podpisu (Inf2Cat)
Przechodzimy do katalogu sterownika, np.:
D:\touchpad_driver_win11\driver_win11
W tym folderze musi być:
  • INF
  • SYS
  • pliki sterownika
Uruchamiamy Inf2Cat:
& "C:\Program Files (x86)\Windows Kits\10\bin\<wersja>\x86\Inf2Cat.exe" /driver:. /os:10_X64
Po poprawnym wykonaniu zobaczysz:
Errors: None
Warnings: None
Catalog generation complete.

W katalogu pojawi się plik .cat.

5. Podpisywanie sterownika (signtool)
W katalogu sterownika wykonujemy:
✔ Podpisanie katalogu .cat
signtool sign /f C:\cert.pfx /p MojeHaslo123 /tr http://timestamp.digicert.com /td sha256 /fd sha256 *.cat
✔ Podpisanie plików SYS
signtool sign /f C:\cert.pfx /p MojeHaslo123 /tr http://timestamp.digicert.com /td sha256 /fd sha256 *.sys
6. Weryfikacja podpisu
signtool verify /pa /v *.cat
signtool verify /pa /v *.sys

Jeżeli zobaczysz:
Successfully verified
Sterownik został podpisany prawidłowo.

7. Automatyczny instalator certyfikatu po reinstalacji systemu (plik BAT)
Aby móc instalować podpisane sterowniki na świeżym systemie, warto przygotować plik np.:
D:\touchpad_driver_win11\driver_win11\install_cert.bat
Treść:
@echo off
set CERTPATH=D:\touchpad_driver_win11\driver_win11\cert.pfx
set CERTPASS=MojeHaslo123

powershell -Command ^
    "$pwd = ConvertTo-SecureString '%CERTPASS%' -AsPlainText -Force; ^
    Import-PfxCertificate -FilePath '%CERTPATH%' -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd"

powershell -Command ^
    "$pwd = ConvertTo-SecureString '%CERTPASS%' -AsPlainText -Force; ^
    Import-PfxCertificate -FilePath '%CERTPATH%' -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd"

powershell -Command ^
    "$pwd = ConvertTo-SecureString '%CERTPASS%' -AsPlainText -Force; ^
    Import-PfxCertificate -FilePath '%CERTPATH%' -CertStoreLocation Cert:\LocalMachine\TrustedPeople -Password $pwd"

echo Certyfikat zainstalowany pomyslnie.
pause

Uruchamiać zawsze jako administrator.

GOTOWE!
Od tej chwili możesz:
  • podpisywać dowolne sterowniki
  • instalować je na dowolnym PC (oczywiście po uprzednim zaimportowaniu certu)
  • przenosić certyfikat między systemami
  • obsługiwać sterowniki bez trybu testowego
Laptop: Lenovo ThinkPad T480s | Intel Core i5 8250U | Intel HD 620 | 24GB RAM Hynix | Lexar NM620 NVME 1TB | Windows 10 Pro
Laptop testowy: Lenovo ThinkPad T430 | Intel Core i7 3740QM | Intel HD 4000 | 16GB RAM Hynix | Samsung 850 Pro 256GB | Windows 7 Pro | Windows XP Pro x64
PC: MSI Z87-G43 | Intel Xeon E3-1240 v3 | nVidia RTX 3060Ti 8GB | 32GB RAM Hynix | GoodRAM PX 500 NVME 512GB | Windows 10 Pro
Mobile: Google Pixel 6 | Google Tensor GS101 @2.8 GHz | Mali-G78 MP20 | 8GB RAM | 128GB MMC | Android 15
Sieć: Cudy WR3000 AX OpenWRT | Huawei HG8010H | Netia 1Gb/s
PlayStation 4 | CUH-1116A | 1TB SSD|