1 #include "DriverTester.h"
4 Initialize(LPCWSTR lpDriverPath
)
6 if (!RegisterDriver(DRIVER_NAME
, lpDriverPath
))
8 wprintf(L
"[%lu] Failed to install %s\n", GetLastError(), DRIVER_NAME
);
16 Uninitialize(LPCWSTR lpDriverPath
)
18 if (!UnregisterDriver(DRIVER_NAME
))
20 wprintf(L
"[%lu] Failed to unregister %s\n", GetLastError(), DRIVER_NAME
);
28 UsermodeMethod(LPCWSTR lpDriverPath
)
30 wprintf(L
"\nStarting %s.sys via the SCM\n", DRIVER_NAME
);
32 if (!StartDriver(DRIVER_NAME
))
34 wprintf(L
"[%lu] Failed to start %s\n", GetLastError(), DRIVER_NAME
);
35 UnregisterDriver(DRIVER_NAME
);
39 wprintf(L
"\tStarted\n");
41 wprintf(L
"Stopping %s.sys via the SCM\n", DRIVER_NAME
);
43 if (!StopDriver(DRIVER_NAME
))
45 wprintf(L
"[%lu] Failed to stop %s\n", GetLastError(), DRIVER_NAME
);
46 UnregisterDriver(DRIVER_NAME
);
50 wprintf(L
"\tStopped\n");
56 UndocumentedMethod(LPCWSTR lpDriverPath
)
58 wprintf(L
"\nStarting %s.sys via native API\n", DRIVER_NAME
);
60 if (!NtStartDriver(DRIVER_NAME
))
62 wprintf(L
"[%lu] Failed to start %s\n", GetLastError(), DRIVER_NAME
);
63 UnregisterDriver(DRIVER_NAME
);
67 wprintf(L
"\tStarted\n");
69 wprintf(L
"Stopping %s.sys via native API\n", DRIVER_NAME
);
71 if (!NtStopDriver(DRIVER_NAME
))
73 wprintf(L
"[%lu] Failed to stop %s\n", GetLastError(), DRIVER_NAME
);
74 UnregisterDriver(DRIVER_NAME
);
78 wprintf(L
"\tStopped\n");
85 SneakyUndocumentedMethods(LPCWSTR lpDriverPath
)
87 WCHAR szDevice
[MAX_PATH
];
89 if (ConvertPath(lpDriverPath
, szDevice
))
91 wprintf(L
"\nStarting %s.sys via NtSetSystemInformation with SystemLoadGdiDriverInformation\n", DRIVER_NAME
);
92 if (LoadVia_SystemLoadGdiDriverInformation(szDevice
))
94 wprintf(L
"\tStarted\n");
96 NtStopDriver(DRIVER_NAME
);
99 wprintf(L
"\nStarting %s.sys via NtSetSystemInformation with SystemExtendServiceTableInformation\n", DRIVER_NAME
);
100 if (LoadVia_SystemExtendServiceTableInformation(szDevice
))
102 wprintf(L
"\tStarted\n");
104 NtStopDriver(DRIVER_NAME
);
114 int __cdecl
wmain(int argc
, wchar_t *argv
[])
120 wprintf(L
"Usage: DriverTester.exe <path>");
124 if (!SearchPathW(NULL
,
131 wprintf(L
"%s does not exist", argv
[1]);
135 if (Initialize(argv
[1]))
138 // Load using conventional SCM methods
140 UsermodeMethod(argv
[1]);
143 // Load using undocumented NtLoad/UnloadDriver
145 UndocumentedMethod(argv
[1]);
148 // Load using hidden unknown methods
150 SneakyUndocumentedMethods(argv
[1]);
152 Uninitialize(argv
[1]);