diff options
-rw-r--r-- | README.md | 48 | ||||
-rw-r--r-- | utils/README.md | 16 | ||||
-rw-r--r-- | utils/libnt_path_converter/README.md | 15 | ||||
-rw-r--r-- | utils/libservice/README.md | 13 |
4 files changed, 59 insertions, 33 deletions
@@ -8,7 +8,8 @@ This is a collection of drivers for Windows 7, created to amuse and entertain. The drivers are compiled using the Windows Driver Kit Version 7.1.0. -I've developed a set of batch files to facilitate building the drivers and cleaning after the build. +I've developed a set of batch files to facilitate building the drivers and +cleaning after the build. The binaries are copied into the "bin" directory under the root directory. To set up the development environment, start a new `cmd` session, and run @@ -26,21 +27,27 @@ Then navigate to the root directory and call `setenv.bat`: ### Code signing -Driver binaries are signed using the self-signed certificate "Test Certificate" in "Test Certificate Store". -You can create this certificate using `add_cert.bat` (but first make sure you've set up the development environment). +Driver binaries are signed using the self-signed certificate "Test Certificate" +in "Test Certificate Store". +You can create this certificate using `add_cert.bat` (but first make sure +you've set up the development environment). To verify it's there, you can use the `certmgr.msc` utility. -Driver binaries are automatically signed during builds, but you can also sign one manually by passing the path to a .sys file to `sign.bat`. +Driver binaries are automatically signed during builds, but you can also sign +one manually by passing the path to a .sys file to `sign.bat`. ### Build & clean To build every driver under the "src" directory, call `build_drivers.bat`. -To build a particular driver, pass the path to the driver source directory to `build_driver.bat`. +To build a particular driver, pass the path to the driver source directory to +`build_driver.bat`. Driver binaries are copied to the "bin" directory. -Cleaning after a driver build includes deleting log and object files in the driver source directory and deleting the binaries from the "bin" directory. +Cleaning after a driver build includes deleting log and object files in the +driver source directory and deleting the binaries from the "bin" directory. To clean after every driver in the "src" directory, call `clean_drivers.bat`. -To clean after a particular driver, pass the path to the driver source directory to `clean_driver.bat`. +To clean after a particular driver, pass the path to the driver source +directory to `clean_driver.bat`. ## Installation @@ -49,7 +56,8 @@ For example, to install a driver "C:\test.sys" as a "test" service, run sc create test type= kernel binPath= C:\test.sys -You can then load/unload the driver using the `sc` to start/stop the corresponding service. +You can then load/unload the driver using the `sc` to start/stop the +corresponding service. sc start test sc stop test @@ -58,9 +66,11 @@ To uninstall a driver, delete the corresponding service using `sc`. sc delete test -Please note, that on the 64-bit version of Windows 7 loading 32-bit drivers is not allowed. +Please note, that on the 64-bit version of Windows 7 loading 32-bit drivers is +not allowed. -You may also need to explicitly enable loading self-signed drivers on 64-bit versions of Windows. +You may also need to explicitly enable loading self-signed drivers on 64-bit +versions of Windows. One way is to use the `bcdedit` utility: bcdedit /set testsigning on @@ -70,21 +80,27 @@ Then restart your computer and you should be all set! ## Debugging You can debug a driver using WinDbg. -To enable kernel debugging, you can use the `msconfig` utility (navigate to "Boot" -> "Advanced options..." and check "Debug") or the `bcdedit` utility: +To enable kernel debugging, you can use the `msconfig` utility (navigate to +"Boot" -> "Advanced options..." and check "Debug") or the `bcdedit` utility: bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 Restart your computer for these settings to take effect. -If a driver is loaded on a separate physical machine, you can connect to a physical COM port from another host with WinDbg installed and enable kernel debugging via "File" -> "Kernel Debug...". -You might need to restart the debuggee a couple of times in order to enter the kernel debugging mode. +If a driver is loaded on a separate physical machine, you can connect to a +physical COM port from another host with WinDbg installed and enable kernel +debugging via "File" -> "Kernel Debug...". +You might need to restart the debuggee a couple of times in order to enter the +kernel debugging mode. -If a driver is running on a virtual machine, the conventional approach is to expose a COM port via a named pipe. +If a driver is running on a virtual machine, the conventional approach is to +expose a COM port via a named pipe. You can then connect to the pipe from WinDbg installed on the host. Refer to your virtualization software's documentation for more details. ## Licensing -This project, including all of the files and their contents, is licensed under the terms of the MIT License. -See LICENSE.txt for details. +This project, including all of the files and their contents, is licensed under +the terms of the MIT License. +See [LICENSE.txt](LICENSE.txt) for details. diff --git a/utils/README.md b/utils/README.md index a106359..2f6072d 100644 --- a/utils/README.md +++ b/utils/README.md @@ -1,19 +1,23 @@ # Service management utilities -Utilities used to manage (load, start, stop and unload) and communicate with drivers via virtual devices. +Utilities used to manage (load, start, stop and unload) and communicate with +drivers via virtual devices. Usage examples of some of the drivers in this repository are also included. -* [libservice](https://github.com/egor-tensin/windows_drivers/tree/master/utils/libservice) — a simple service management library. +* [libservice](libservice) — a simple service management library. Also includes means of communicating with a driver via virtual devices. -* [libnt_path_converter](https://github.com/egor-tensin/windows_drivers/tree/master/utils/libnt_path_converter) — [nt_path_converter](https://github.com/egor-tensin/windows_drivers/tree/master/src/nt_path_converter) usage examples. +* [libnt_path_converter](libnt_path_converter) — + [nt_path_converter](../src/nt_path_converter) usage examples. ## Building -I've used the compiler shipped with Visual Studio Express 2013 with Update 4 for Windows Desktop. +I've used the compiler shipped with Visual Studio Express 2013 with Update 4 +for Windows Desktop. -You can generate the solution windows_drivers_utils.sln using CMake and build it using Visual Studio. +You can generate the solution windows_drivers_utils.sln using CMake and build +it using Visual Studio. ## Licensing This project is licensed under the terms of the MIT License. -See [Licensing](https://github.com/egor-tensin/windows_drivers#licensing) for details. +See [Licensing](../README.md#licensing) for details. diff --git a/utils/libnt_path_converter/README.md b/utils/libnt_path_converter/README.md index 8d03e5c..b281d10 100644 --- a/utils/libnt_path_converter/README.md +++ b/utils/libnt_path_converter/README.md @@ -1,20 +1,23 @@ # libnt_path_converter -[nt_path_converter](https://github.com/egor-tensin/windows_drivers/tree/master/src/nt_path_converter) usage examples. +[nt_path_converter](../../src/nt_path_converter) usage examples. ## Usage ### libnt_path_converter.lib -Wraps nt_path_converter's virtual device interface using [libservice](https://github.com/egor-tensin/windows_drivers/tree/master/utils/libservice). -Include the headers by `#include`ing `include/libnt_path_converter/all.hpp`, which includes all of the other header files. +Wraps nt_path_converter's virtual device interface using +[libservice](../libservice). +Include the headers by `#include`ing `include/libnt_path_converter/all.hpp`, +which includes all of the other header files. ### convert_nt_path.exe Usage: convert_nt_path.exe [NT_PATH...] Converts a NT-style path to a DOS-style path. -The NT namespace can be explored using the [WinObj](https://technet.microsoft.com/en-us/library/bb896657.aspx) utility. +The NT namespace can be explored using the +[WinObj](https://technet.microsoft.com/en-us/library/bb896657.aspx) utility. Usage example (assuming nt_path_converter is already loaded): >convert_nt_path.exe \Device\HarddiskVolume2\Windows @@ -22,9 +25,9 @@ Usage example (assuming nt_path_converter is already loaded): ## Building -See [Building](https://github.com/egor-tensin/windows_drivers/tree/master/utils#building). +See [Building](../README.md#building). ## Licensing This project is licensed under the terms of the MIT License. -See [Licensing](https://github.com/egor-tensin/windows_drivers#licensing) for details. +See [Licensing](../../README.md#licensing) for details. diff --git a/utils/libservice/README.md b/utils/libservice/README.md index a652f7b..c8dd180 100644 --- a/utils/libservice/README.md +++ b/utils/libservice/README.md @@ -6,11 +6,13 @@ Simple service management library and utilities. ### libservice.lib -Clients may include the headers by `#include`ing `include/libservice/all.hpp`, which includes all of the other header files. +Clients may include the headers by `#include`ing `include/libservice/all.hpp`, +which includes all of the other header files. For service management usage examples, see the utilities descriptions below. -For virtual device usage examples, refer e.g. to [libnt_path_converter](https://github.com/egor-tensin/windows_drivers/tree/master/utils/libnt_path_converter). +For virtual device usage examples, refer e.g. to +[libnt_path_converter](../libnt_path_converter). ### install_service.exe @@ -48,16 +50,17 @@ except that `stop_service.exe` waits until the service is actually stopped. Usage: uninstall_service.exe NAME -Uninstalls the service `NAME`, wiping the corresponding record from the registry. +Uninstalls the service `NAME`, wiping the corresponding record from the +registry. The same as sc delete NAME ## Building -See [Building](https://github.com/egor-tensin/windows_drivers/tree/master/utils#building). +See [Building](../README.md#building). ## Licensing This project is licensed under the terms of the MIT License. -See [Licensing](https://github.com/egor-tensin/windows_drivers#licensing) for details. +See [Licensing](../../README.md#licensing) for details. |