From 6730723d3658bf57a6b556bad67f449434e17a27 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 7 Jun 2022 20:20:21 +0200 Subject: [PATCH] Library support --- src/driver/driver_main.cpp | 1 + src/runner/CMakeLists.txt | 10 +++++----- src/runner/main.cpp | 20 +++++++++++++++++--- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/driver/driver_main.cpp b/src/driver/driver_main.cpp index 6285766..47cec9f 100644 --- a/src/driver/driver_main.cpp +++ b/src/driver/driver_main.cpp @@ -86,6 +86,7 @@ extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT driver_object, PUNICODE_STR { try { + debug_log("Starting driver..."); driver_object->DriverUnload = unload; global_driver_instance = new global_driver(driver_object); } diff --git a/src/runner/CMakeLists.txt b/src/runner/CMakeLists.txt index fb9af94..05d584e 100644 --- a/src/runner/CMakeLists.txt +++ b/src/runner/CMakeLists.txt @@ -1,23 +1,23 @@ file(GLOB_RECURSE runner_sources ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB_RECURSE runner_headers ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) -add_executable(runner #WIN32 +add_library(hyperhook SHARED #WIN32 ${runner_sources} ${runner_headers} ) -target_precompile_headers(runner +target_precompile_headers(hyperhook PRIVATE std_include.hpp ) -set_property(TARGET runner APPEND_STRING PROPERTY LINK_FLAGS " /MANIFESTUAC:\"level='requireAdministrator'\"") +set_property(TARGET hyperhook APPEND_STRING PROPERTY LINK_FLAGS " /MANIFESTUAC:\"level='requireAdministrator'\"") -target_link_libraries(runner +target_link_libraries(hyperhook shared driver_file ) set_source_files_properties(resource.rc PROPERTIES LANGUAGE RC) -target_sources(runner PRIVATE +target_sources(hyperhook PRIVATE resource.rc ) diff --git a/src/runner/main.cpp b/src/runner/main.cpp index c4dd38d..a5af783 100644 --- a/src/runner/main.cpp +++ b/src/runner/main.cpp @@ -333,7 +333,7 @@ void unsafe_main(const int /*argc*/, char* /*argv*/[]) (void)_getch();*/ } -int main(const int argc, char* argv[]) +int _main(const int argc, char* argv[]) { try { @@ -354,7 +354,7 @@ int main(const int argc, char* argv[]) } } -int __stdcall WinMain(HINSTANCE, HINSTANCE, char*, int) +int __stdcall _WinMain(HINSTANCE, HINSTANCE, char*, int) { AllocConsole(); AttachConsole(GetCurrentProcessId()); @@ -364,5 +364,19 @@ int __stdcall WinMain(HINSTANCE, HINSTANCE, char*, int) freopen_s(&fp, "conout$", "w", stdout); freopen_s(&fp, "conout$", "w", stderr); - return main(__argc, __argv); + return _main(__argc, __argv); +} + +const driver_device& get_driver_device() +{ + static const auto driver_file = extract_driver(); + + static driver driver{driver_file, "MomoLul"}; + static const driver_device driver_device{R"(\\.\HelloDev)"}; + return driver_device; +} + +extern "C" __declspec(dllexport) void hyperhook_patch_data(const uint32_t pid, const uint64_t address, const void* data, const size_t length) +{ + patch_data(get_driver_device(), pid, address, static_cast(data), length); }