You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Converting to a Driver Plugin brings a simpler architecture:
Drivers are loaded and unloaded using ZwLoadDriver and ZwUnloadDriver
No manual mapping required which makes symbolic debugging easier
Still use export functions, this requires custom GetProcAddress
Simpler interfaces from kernel to plugin
No more programming as a user dll, but run in kernel.
Architecture Decisions
Keep exports, other ideas that were investigate: Driver Callbacks, Calling Drivers
Minimize Plugin API functions
ZwLoadDriver and ZwUnloadDriver require a Registry path. Since STrace is a single plugin architecture the plugin will always be Registry\Machine\System\CurrentControlSet\Services\StracePlugin, with a binary path of \\systemroot\\system32\drivers\StracePlugin.sys. It will be the responsibility of the CLI to rename the plugin chosen as done prior and copy it to StracePlugin.sys. When debugging the symbols will remain the original binary to help distinguish. Possibly add an IOCTL that returns the plugin name.
The text was updated successfully, but these errors were encountered:
Encountered an unexpected issue importing some c++ headers like type_traits. @tarterp had the idea of making a static lib that wraps up this C++ code and link that to the driver. This seems to be suitable for us.
Converting to a Driver Plugin brings a simpler architecture:
ZwLoadDriver
andZwUnloadDriver
GetProcAddress
Architecture Decisions
ZwLoadDriver
andZwUnloadDriver
require a Registry path. Since STrace is a single plugin architecture the plugin will always beRegistry\Machine\System\CurrentControlSet\Services\StracePlugin
, with a binary path of\\systemroot\\system32\drivers\StracePlugin.sys
. It will be the responsibility of the CLI to rename the plugin chosen as done prior and copy it to StracePlugin.sys. When debugging the symbols will remain the original binary to help distinguish. Possibly add an IOCTL that returns the plugin name.The text was updated successfully, but these errors were encountered: