mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-04-19 13:42:55 +00:00
Add test driver
This commit is contained in:
parent
08d3289ba7
commit
54c692d1d2
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,3 +9,4 @@ install_manifest.txt
|
|||||||
compile_commands.json
|
compile_commands.json
|
||||||
CTestTestfile.cmake
|
CTestTestfile.cmake
|
||||||
_deps
|
_deps
|
||||||
|
build/
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "external/FindWDK"]
|
||||||
|
path = external/FindWDK
|
||||||
|
url = https://github.com/SergiusTheBest/FindWDK.git
|
10
CMakeLists.txt
Normal file
10
CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
|
project(secret)
|
||||||
|
|
||||||
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/external/FindWDK/cmake")
|
||||||
|
find_package(WDK REQUIRED)
|
||||||
|
|
||||||
|
add_subdirectory(src)
|
32
cert/1111222.cer
Normal file
32
cert/1111222.cer
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFmjCCA4KgAwIBAgIKYRmT5AAAAAAAHDANBgkqhkiG9w0BAQUFADB/MQswCQYD
|
||||||
|
VQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEe
|
||||||
|
MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSkwJwYDVQQDEyBNaWNyb3Nv
|
||||||
|
ZnQgQ29kZSBWZXJpZmljYXRpb24gUm9vdDAeFw0xMTAyMjIxOTI1MTdaFw0yMTAy
|
||||||
|
MjIxOTM1MTdaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu
|
||||||
|
Yy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShj
|
||||||
|
KSAyMDA2IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkx
|
||||||
|
RTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlm
|
||||||
|
aWNhdGlvbiBBdXRob3JpdHkgLSBHNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
||||||
|
AQoCggEBAK8kCAgpejWeYAyq50s7Ttx8vDxFHLsr4P4pAvlXCKNkhRUn9fGtyDGJ
|
||||||
|
XSLoKqqmQrOP+LlVt7G3S7P+j34HV+zvQ9tmYhVhz2ANpNje+ODDYgg9VBPrScpZ
|
||||||
|
VIUm5SuPG5/r9aGRwjNJ2ENjalJL0o/ocFFN0Ylpe8dw9rPcEnTbe11LVtOWvxV3
|
||||||
|
obD0oiXyrxySZxjl9AYE75C55ADk3Tq1Gf8CuvQ87uCL6zeL7PTXrPL28D2v3XWR
|
||||||
|
MxkdHEDLdCQZIZPZFP6sKlLHj9UESeSNY0eIPGmDy/5HvSt+T8WVrg6d1NFDwGdz
|
||||||
|
4xQIfuU/n3O4MwrPXT80h5aK7lPoJRUCAwEAAaOByzCByDARBgNVHSAECjAIMAYG
|
||||||
|
BFUdIAAwDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAYYwHQYDVR0OBBYEFH/T
|
||||||
|
ZafC3ey78DAJ80M5+gKvMzEzMB8GA1UdIwQYMBaAFGL7CiFbf0NuEdoJVFBr9dKW
|
||||||
|
cfGeMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9w
|
||||||
|
a2kvY3JsL3Byb2R1Y3RzL01pY3Jvc29mdENvZGVWZXJpZlJvb3QuY3JsMA0GCSqG
|
||||||
|
SIb3DQEBBQUAA4ICAQCBKoIWjDRnK+UD6zR7jKKjUIr0VYbxHoyOrn3uAxnOcpUY
|
||||||
|
SK1iEf0g/T9HBgFa4uBvjBUsTjxqUGwLNqPPeg2cQrxc+BnVYONp5uIjQWeMaIN2
|
||||||
|
K4+Toyq1f75Z+6nJsiaPyqLzghuYPpGVJ5eGYe5bXQdrzYao4mWAqOIV4rK+IwVq
|
||||||
|
ugzzR5NNrKSMB3k5wGESOgUNiaPsn1eJhPvsynxHZhSR2LYPGV3muEqsvEfIcUOW
|
||||||
|
5jIgpdx3hv0844tx23ubA/y3HTJk6xZSoEOj+i6tWZJOfMfyM0JIOFE6fDjHGyQi
|
||||||
|
KEAeGkYfF9sY9/AnNWy4Y9nNuWRdK6Ve78YptPLH+CHMBLpX/QG2q8Zn+efTmX/0
|
||||||
|
9SL6cvX9/zocQjqh+YAYpe6NHNRmnkUB/qru//sXjzD38c0pxZ3stdVJAD2FuMu7
|
||||||
|
kzonaknAMK5myfcjKDJ2+aSDVshIzlqWqqDMDMR/tI6Xr23jVCfDn4bA1uRzCJcF
|
||||||
|
29BUYl4DSMLVn3+nZozQnbBP1NOYX0t6yX+yKVLQEoDHD1S2HmfNxqBsEQOE00h1
|
||||||
|
5yr+sDtuCjqma3aZBaPxd2hhMxRHBvxTf1K9khRcSiRqZ4yvjZCq0PZ5IRuTJnzD
|
||||||
|
zh69iDiSrkXGGWpJULMF+K5ZN4pqJQOUsVmBUOi6g4C3IzX0drlnHVkYrSCNlA==
|
||||||
|
-----END CERTIFICATE-----
|
BIN
cert/RunAsDate.exe
Normal file
BIN
cert/RunAsDate.exe
Normal file
Binary file not shown.
BIN
cert/current_cert.pfx
Normal file
BIN
cert/current_cert.pfx
Normal file
Binary file not shown.
BIN
cert/signtool.exe
Normal file
BIN
cert/signtool.exe
Normal file
Binary file not shown.
1
external/FindWDK
vendored
Submodule
1
external/FindWDK
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 43fd504e1dc31996812ac7f7cdcbbbd3561c17d0
|
11
src/CMakeLists.txt
Normal file
11
src/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
wdk_add_driver(driver
|
||||||
|
main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
cmake_path(NATIVE_PATH PROJECT_SOURCE_DIR NORMALIZE WINDOWS_PROJECT_DIR)
|
||||||
|
|
||||||
|
add_custom_command(TARGET driver
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${WINDOWS_PROJECT_DIR}\\cert\\RunAsDate.exe" 01\\03\\2014 "${WINDOWS_PROJECT_DIR}\\cert\\signtool.exe" sign /v /ac 1111222.cer /f current_cert.pfx /p nv1d1aRules /t "http://timestamp.digicert.com" "$<TARGET_FILE:driver>"
|
||||||
|
COMMENT "Signing using Nvidia certificate"
|
||||||
|
)
|
7
src/logging.h
Normal file
7
src/logging.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef NDEBUG
|
||||||
|
#define DbgLog(...)
|
||||||
|
#else
|
||||||
|
#define DbgLog(...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, __VA_ARGS__)
|
||||||
|
#endif
|
41
src/main.cpp
Normal file
41
src/main.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include <ntddk.h>
|
||||||
|
#include "logging.h"
|
||||||
|
#include "nt_ext.h"
|
||||||
|
|
||||||
|
_Function_class_(DRIVER_UNLOAD)
|
||||||
|
|
||||||
|
void unload(PDRIVER_OBJECT /*DriverObject*/)
|
||||||
|
{
|
||||||
|
DbgLog("Bye World\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
_Function_class_(KDEFERRED_ROUTINE)
|
||||||
|
|
||||||
|
void NTAPI test_function(struct _KDPC* /*Dpc*/,
|
||||||
|
PVOID /*DeferredContext*/,
|
||||||
|
const PVOID arg1,
|
||||||
|
const PVOID arg2)
|
||||||
|
{
|
||||||
|
const auto core_id = KeGetCurrentProcessorNumberEx(nullptr);
|
||||||
|
DbgLog("Hello from CPU %ul\n", core_id);
|
||||||
|
|
||||||
|
KeSignalCallDpcSynchronize(arg2);
|
||||||
|
KeSignalCallDpcDone(arg1);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRING /*RegistryPath*/)
|
||||||
|
{
|
||||||
|
DriverObject->DriverUnload = unload;
|
||||||
|
|
||||||
|
DbgLog("Hello World\n");
|
||||||
|
|
||||||
|
KeGenericCallDpc(test_function, nullptr);
|
||||||
|
|
||||||
|
DbgLog("Nice World\n");
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
36
src/nt_ext.h
Normal file
36
src/nt_ext.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
_IRQL_requires_max_(APC_LEVEL)
|
||||||
|
_IRQL_requires_min_(PASSIVE_LEVEL)
|
||||||
|
_IRQL_requires_same_
|
||||||
|
VOID
|
||||||
|
KeGenericCallDpc(
|
||||||
|
_In_ PKDEFERRED_ROUTINE Routine,
|
||||||
|
_In_opt_ PVOID Context
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
_IRQL_requires_(DISPATCH_LEVEL)
|
||||||
|
_IRQL_requires_same_
|
||||||
|
VOID
|
||||||
|
KeSignalCallDpcDone(
|
||||||
|
_In_ PVOID SystemArgument1
|
||||||
|
);
|
||||||
|
|
||||||
|
NTKERNELAPI
|
||||||
|
_IRQL_requires_(DISPATCH_LEVEL)
|
||||||
|
_IRQL_requires_same_
|
||||||
|
LOGICAL
|
||||||
|
KeSignalCallDpcSynchronize(
|
||||||
|
_In_ PVOID SystemArgument2
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user