/nt_wrapper

A wrapper library around native windows sytem APIs

Primary LanguageC++Apache License 2.0Apache-2.0

nt_wrapper

A header only wrapper library around native windows system APIs.

Highlights of currently implemented features

System information:

Object manipulation:

  • Process -> ntw::obj::unique_process
    • Loaded modules enumeration -> ntw::obj::process_module_info
  • Thread -> ntw::obj::unique_thread
  • File -> ntw::obj::unique_file
  • Token -> ntw::obj::unique_token
  • Registry -> ntw::obj::unique_registry
  • Handle -> ntw::obj::unique_handle

Design goals

  • No exceptions - if a function can fail it will return a status code.
  • No overhead - every single abstraction is costless and is as fast as it can be.
  • Strict control over imports - every call is made trough a macro which allows turning the lazy importer off or easy switched to direct syscalls.
  • Ease of developer use - it is a much more consistent and pleasant to work with compared to win32.

Why?

The main reason to choose this library over existing windows constructs are:

  • Speed - even with lazy_importer you code is likely to be faster compared to win32 API.
  • Ease of use - the language of choice is c++ and allows you to use modern alternatives to old C.
  • Obfuscation - it is a lot harder to reverse engineer an application which uses obfuscated imports or direct syscalls.

Acknowledgements

nt_wrapper uses modified headers licensed under GNU GPL v3 that were taken from process hacker.