From 28dd94f2ef880126749847a47b9d7d4d9e751d83 Mon Sep 17 00:00:00 2001 From: Maurice Heumann Date: Tue, 27 Dec 2022 16:27:33 +0100 Subject: [PATCH] Extract into library --- src/CMakeLists.txt | 3 +- src/driver/CMakeLists.txt | 5 +- src/driver/driver_main.cpp | 5 +- src/driver/ept.cpp | 2 +- src/driver/ept.hpp | 2 +- src/driver/hypervisor.cpp | 8 +- src/driver/hypervisor.hpp | 2 +- src/library/CMakeLists.txt | 23 ++ src/{runner => library}/driver.cpp | 0 src/{runner => library}/driver.hpp | 1 + src/{runner => library}/driver_device.cpp | 0 src/{runner => library}/driver_device.hpp | 6 + src/{runner => library}/finally.hpp | 0 src/library/main.cpp | 84 +++++++ src/{runner => library}/native_handle.cpp | 0 src/{runner => library}/native_handle.hpp | 0 src/{runner => library}/process.cpp | 0 src/{runner => library}/process.hpp | 0 src/library/resource.hpp | 1 + src/library/resource.rc | 95 ++++++++ src/{runner => library}/service_handle.cpp | 0 src/{runner => library}/service_handle.hpp | 0 src/library/std_include.hpp | 14 ++ src/{runner => library}/utils/io.cpp | 0 src/{runner => library}/utils/io.hpp | 0 src/{runner => library}/utils/nt.cpp | 0 src/{runner => library}/utils/nt.hpp | 0 src/runner/CMakeLists.txt | 9 +- src/runner/main.cpp | 244 +++------------------ src/runner/resource.hpp | 2 - src/runner/resource.rc | 10 +- 31 files changed, 279 insertions(+), 237 deletions(-) create mode 100644 src/library/CMakeLists.txt rename src/{runner => library}/driver.cpp (100%) rename src/{runner => library}/driver.hpp (95%) rename src/{runner => library}/driver_device.cpp (100%) rename src/{runner => library}/driver_device.hpp (89%) rename src/{runner => library}/finally.hpp (100%) create mode 100644 src/library/main.cpp rename src/{runner => library}/native_handle.cpp (100%) rename src/{runner => library}/native_handle.hpp (100%) rename src/{runner => library}/process.cpp (100%) rename src/{runner => library}/process.hpp (100%) create mode 100644 src/library/resource.hpp create mode 100644 src/library/resource.rc rename src/{runner => library}/service_handle.cpp (100%) rename src/{runner => library}/service_handle.hpp (100%) create mode 100644 src/library/std_include.hpp rename src/{runner => library}/utils/io.cpp (100%) rename src/{runner => library}/utils/io.hpp (100%) rename src/{runner => library}/utils/nt.cpp (100%) rename src/{runner => library}/utils/nt.hpp (100%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3140a74..93ca8ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(shared) add_subdirectory(driver) -add_subdirectory(runner) \ No newline at end of file +add_subdirectory(library) +add_subdirectory(runner) diff --git a/src/driver/CMakeLists.txt b/src/driver/CMakeLists.txt index a9b2a18..4aa3f8c 100644 --- a/src/driver/CMakeLists.txt +++ b/src/driver/CMakeLists.txt @@ -37,13 +37,16 @@ target_link_options(driver PRIVATE "/IGNORE:4210" ) +set_target_properties(driver PROPERTIES OUTPUT_NAME "hyperhook") + ################################################ set(DRIVER_FILE "$") +set(DRIVER_NAME "$") file (GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/$>/driver_file.h" - CONTENT "#define DRIVER_FILE \"${DRIVER_FILE}\"\n" + CONTENT "#define DRIVER_FILE \"${DRIVER_FILE}\"\n#define DRIVER_NAME \"${DRIVER_NAME}\"\n" ) add_library(driver_file INTERFACE) diff --git a/src/driver/driver_main.cpp b/src/driver/driver_main.cpp index 9a67bbb..a9c2c7e 100644 --- a/src/driver/driver_main.cpp +++ b/src/driver/driver_main.cpp @@ -70,7 +70,10 @@ private: { if (type == process_callback::type::destroy) { - this->hypervisor_.handle_process_termination(process_id); + if (this->hypervisor_.cleanup_process(process_id)) + { + debug_log("Handled termination of %X\n", process_id); + } } } }; diff --git a/src/driver/ept.cpp b/src/driver/ept.cpp index d45ba06..01b2ee2 100644 --- a/src/driver/ept.cpp +++ b/src/driver/ept.cpp @@ -635,7 +635,7 @@ namespace vmx return this->access_records; } - bool ept::handle_process_termination(const process_id process) + bool ept::cleanup_process(const process_id process) { bool changed = false; diff --git a/src/driver/ept.hpp b/src/driver/ept.hpp index a109130..69b2ac3 100644 --- a/src/driver/ept.hpp +++ b/src/driver/ept.hpp @@ -90,7 +90,7 @@ namespace vmx uint64_t* get_access_records(size_t* count); - bool handle_process_termination(process_id process); + bool cleanup_process(process_id process); private: DECLSPEC_PAGE_ALIGN pml4 epml4[EPT_PML4E_ENTRY_COUNT]; diff --git a/src/driver/hypervisor.cpp b/src/driver/hypervisor.cpp index 7762b71..26abfcf 100644 --- a/src/driver/hypervisor.cpp +++ b/src/driver/hypervisor.cpp @@ -261,15 +261,15 @@ hypervisor* hypervisor::get_instance() return instance; } -void hypervisor::handle_process_termination(const process_id process) +bool hypervisor::cleanup_process(const process_id process) { - if (!this->ept_->handle_process_termination(process)) + if (!this->ept_->cleanup_process(process)) { - return; + return false; } - debug_log("Handled termination of %X\n", process); this->invalidate_cores(); + return true; } void hypervisor::enable() diff --git a/src/driver/hypervisor.hpp b/src/driver/hypervisor.hpp index 4ba6499..d0cb268 100644 --- a/src/driver/hypervisor.hpp +++ b/src/driver/hypervisor.hpp @@ -33,7 +33,7 @@ public: static hypervisor* get_instance(); - void handle_process_termination(process_id process); + bool cleanup_process(process_id process); private: uint32_t vm_state_count_{0}; diff --git a/src/library/CMakeLists.txt b/src/library/CMakeLists.txt new file mode 100644 index 0000000..faf1cef --- /dev/null +++ b/src/library/CMakeLists.txt @@ -0,0 +1,23 @@ +file(GLOB_RECURSE library_sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +file(GLOB_RECURSE library_headers CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) + +add_library(library SHARED + ${library_sources} + ${library_headers} +) + +target_precompile_headers(library PRIVATE + std_include.hpp +) + +target_link_libraries(library PRIVATE + shared + driver_file +) + +set_source_files_properties(resource.rc PROPERTIES LANGUAGE RC) +target_sources(library PRIVATE + resource.rc +) + +set_target_properties(library PROPERTIES OUTPUT_NAME "hyperhook") diff --git a/src/runner/driver.cpp b/src/library/driver.cpp similarity index 100% rename from src/runner/driver.cpp rename to src/library/driver.cpp diff --git a/src/runner/driver.hpp b/src/library/driver.hpp similarity index 95% rename from src/runner/driver.hpp rename to src/library/driver.hpp index b60cd88..4513a6e 100644 --- a/src/runner/driver.hpp +++ b/src/library/driver.hpp @@ -4,6 +4,7 @@ class driver { public: + driver() = default; driver(const std::filesystem::path& driver_file, const std::string& service_name); ~driver(); diff --git a/src/runner/driver_device.cpp b/src/library/driver_device.cpp similarity index 100% rename from src/runner/driver_device.cpp rename to src/library/driver_device.cpp diff --git a/src/runner/driver_device.hpp b/src/library/driver_device.hpp similarity index 89% rename from src/runner/driver_device.hpp rename to src/library/driver_device.hpp index 08c0913..76467af 100644 --- a/src/runner/driver_device.hpp +++ b/src/library/driver_device.hpp @@ -4,6 +4,7 @@ class driver_device { public: + driver_device() = default; driver_device(const std::string& driver_device); ~driver_device() = default; @@ -13,6 +14,11 @@ public: driver_device(driver_device&& obj) noexcept = default; driver_device& operator=(driver_device&& obj) noexcept = default; + operator bool() const + { + return this->device_; + } + using data = std::vector; bool send(DWORD ioctl_code, const data& input) const; bool send(DWORD ioctl_code, const data& input, data& output) const; diff --git a/src/runner/finally.hpp b/src/library/finally.hpp similarity index 100% rename from src/runner/finally.hpp rename to src/library/finally.hpp diff --git a/src/library/main.cpp b/src/library/main.cpp new file mode 100644 index 0000000..4e59398 --- /dev/null +++ b/src/library/main.cpp @@ -0,0 +1,84 @@ +#include "std_include.hpp" + +#include +#include +#include + +#include "driver.hpp" +#include "driver_device.hpp" +#include +#include + +#include "resource.hpp" +#include "utils/io.hpp" + +void patch_data(const driver_device& driver_device, const uint32_t pid, const uint64_t address, const uint8_t* buffer, + const size_t length) +{ + hook_request hook_request{}; + hook_request.process_id = pid; + hook_request.target_address = reinterpret_cast(address); + + hook_request.source_data = buffer; + hook_request.source_data_size = length; + + driver_device::data input{}; + input.assign(reinterpret_cast(&hook_request), + reinterpret_cast(&hook_request) + sizeof(hook_request)); + + (void)driver_device.send(HOOK_DRV_IOCTL, input); +} + +driver_device create_driver_device() +{ + return driver_device{R"(\\.\HyperHook)"}; +} + +driver create_driver() +{ + return driver{std::filesystem::absolute(DRIVER_NAME), "HyperHook"}; +} + +driver_device& get_driver_device() +{ + static driver hypervisor{}; + static driver_device device{}; + + if (device) + { + return device; + } + + try + { + device = create_driver_device(); + } + catch (...) + { + hypervisor = create_driver(); + device = create_driver_device(); + } + + return device; +} + +extern "C" __declspec(dllexport) +int hyperhook_write(const unsigned int process_id, const unsigned long long address, const void* data, + const unsigned long long size) +{ + try + { + const auto& device = get_driver_device(); + if (device) + { + patch_data(device, process_id, address, static_cast(data), size); + return 1; + } + } + catch (const std::exception& e) + { + printf("%s\n", e.what()); + } + + return 0; +} diff --git a/src/runner/native_handle.cpp b/src/library/native_handle.cpp similarity index 100% rename from src/runner/native_handle.cpp rename to src/library/native_handle.cpp diff --git a/src/runner/native_handle.hpp b/src/library/native_handle.hpp similarity index 100% rename from src/runner/native_handle.hpp rename to src/library/native_handle.hpp diff --git a/src/runner/process.cpp b/src/library/process.cpp similarity index 100% rename from src/runner/process.cpp rename to src/library/process.cpp diff --git a/src/runner/process.hpp b/src/library/process.hpp similarity index 100% rename from src/runner/process.hpp rename to src/library/process.hpp diff --git a/src/library/resource.hpp b/src/library/resource.hpp new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/src/library/resource.hpp @@ -0,0 +1 @@ +#pragma once diff --git a/src/library/resource.rc b/src/library/resource.rc new file mode 100644 index 0000000..ebe8d4f --- /dev/null +++ b/src/library/resource.rc @@ -0,0 +1,95 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "windows.h" +#include "resource.hpp" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "#include ""windows.h""\r\n" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "momo5502" + VALUE "FileDescription", "HyperHook" + VALUE "FileVersion", "1.0.0.0" + VALUE "InternalName", "HyperHook" + VALUE "LegalCopyright", "All rights reserved." + VALUE "OriginalFilename", "hyperhook.dll" + VALUE "ProductName", "hyperhook" + VALUE "ProductVersion", "1.0.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/src/runner/service_handle.cpp b/src/library/service_handle.cpp similarity index 100% rename from src/runner/service_handle.cpp rename to src/library/service_handle.cpp diff --git a/src/runner/service_handle.hpp b/src/library/service_handle.hpp similarity index 100% rename from src/runner/service_handle.hpp rename to src/library/service_handle.hpp diff --git a/src/library/std_include.hpp b/src/library/std_include.hpp new file mode 100644 index 0000000..f9bd296 --- /dev/null +++ b/src/library/std_include.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#pragma comment(lib, "Shlwapi.lib") diff --git a/src/runner/utils/io.cpp b/src/library/utils/io.cpp similarity index 100% rename from src/runner/utils/io.cpp rename to src/library/utils/io.cpp diff --git a/src/runner/utils/io.hpp b/src/library/utils/io.hpp similarity index 100% rename from src/runner/utils/io.hpp rename to src/library/utils/io.hpp diff --git a/src/runner/utils/nt.cpp b/src/library/utils/nt.cpp similarity index 100% rename from src/runner/utils/nt.cpp rename to src/library/utils/nt.cpp diff --git a/src/runner/utils/nt.hpp b/src/library/utils/nt.hpp similarity index 100% rename from src/runner/utils/nt.hpp rename to src/library/utils/nt.hpp diff --git a/src/runner/CMakeLists.txt b/src/runner/CMakeLists.txt index 8f21f1f..438d80f 100644 --- a/src/runner/CMakeLists.txt +++ b/src/runner/CMakeLists.txt @@ -6,15 +6,14 @@ add_executable(runner #WIN32 ${runner_headers} ) -target_precompile_headers(runner - PRIVATE std_include.hpp +target_precompile_headers(runner PRIVATE + std_include.hpp ) set_property(TARGET runner APPEND_STRING PROPERTY LINK_FLAGS " /MANIFESTUAC:\"level='requireAdministrator'\"") -target_link_libraries(runner - shared - driver_file +target_link_libraries(runner PRIVATE + library ) set_source_files_properties(resource.rc PROPERTIES LANGUAGE RC) diff --git a/src/runner/main.cpp b/src/runner/main.cpp index 5b7a874..4171148 100644 --- a/src/runner/main.cpp +++ b/src/runner/main.cpp @@ -1,110 +1,28 @@ #include "std_include.hpp" #include -#include #include -#include #include -#include "driver.hpp" -#include "driver_device.hpp" -#include "process.hpp" - -#include - #include "resource.hpp" -#include "utils/io.hpp" -#include "utils/nt.hpp" -#pragma comment(lib, "Shlwapi.lib") +extern "C" __declspec(dllimport) +int hyperhook_write(unsigned int process_id, unsigned long long address, const void* data, + unsigned long long size); -void patch_data(const driver_device& driver_device, const uint32_t pid, const uint64_t addr, const uint8_t* buffer, +bool patch_data(const uint32_t process_id, const uint64_t address, const void* buffer, const size_t length) { - hook_request hook_request{}; - hook_request.process_id = pid; - hook_request.target_address = reinterpret_cast(addr); - - hook_request.source_data = buffer; - hook_request.source_data_size = length; - - driver_device::data input{}; - input.assign(reinterpret_cast(&hook_request), - reinterpret_cast(&hook_request) + sizeof(hook_request)); - - (void)driver_device.send(HOOK_DRV_IOCTL, input); + return hyperhook_write(process_id, address, buffer, length) != 0; } -void insert_nop(const driver_device& driver_device, const uint32_t pid, const uint64_t addr, const size_t length) +bool insert_nop(const uint32_t process_id, const uint64_t address, const size_t length) { std::vector buffer{}; buffer.resize(length); memset(buffer.data(), 0x90, buffer.size()); - patch_data(driver_device, pid, addr, buffer.data(), buffer.size()); -} - -void remove_hooks(const driver_device& driver_device) -{ - (void)driver_device.send(UNHOOK_DRV_IOCTL, driver_device::data{}); -} - -std::vector load_resource(const int id) -{ - auto* const res = FindResource(GetModuleHandleA(nullptr), MAKEINTRESOURCE(id), RT_RCDATA); - if (!res) return {}; - - auto* const handle = LoadResource(nullptr, res); - if (!handle) return {}; - - const auto* data_ptr = static_cast(LockResource(handle)); - const auto data_size = SizeofResource(nullptr, res); - - std::vector data{}; - data.assign(data_ptr, data_ptr + data_size); - return data; -} - -std::filesystem::path extract_driver() -{ - const auto data = load_resource(DRIVER_BINARY); - - auto driver_file = std::filesystem::temp_directory_path() / "driver.sys"; - - std::ofstream out_file{}; - out_file.open(driver_file.generic_string(), std::ios::out | std::ios::binary); - out_file.write(reinterpret_cast(data.data()), static_cast(data.size())); - out_file.close(); - - return driver_file; -} - -std::vector> find_executable_regions(const std::string& pe_file) -{ - std::string data{}; - if (!utils::io::read_file(pe_file, &data)) - { - return {}; - } - - const utils::nt::library library(reinterpret_cast(data.data())); - if (!library.is_valid()) - { - return {}; - } - - const auto section_headers = library.get_section_headers(); - - std::vector> regions{}; - for (const auto& section_header : section_headers) - { - if (section_header->Characteristics & IMAGE_SCN_MEM_EXECUTE) - { - regions.emplace_back(section_header->VirtualAddress, section_header->Misc.VirtualSize); - } - } - - return regions; + return patch_data(process_id, address, buffer.data(), buffer.size()); } uint32_t get_process_id() @@ -116,152 +34,50 @@ uint32_t get_process_id() return atoi(pid_str.data()); } -void watch_regions(const driver_device& driver_device, const uint32_t pid, const HMODULE module, - const std::vector>& regions) +void activate_patches(const uint32_t pid) { - std::vector watch_regions{}; - watch_regions.reserve(regions.size()); - - for (const auto& region : regions) - { - watch_region watch_region{}; - watch_region.virtual_address = reinterpret_cast(module) + region.first; - watch_region.length = region.second; - watch_regions.push_back(watch_region); - } - - watch_request request{}; - request.process_id = pid; - request.watch_regions = watch_regions.data(); - request.watch_region_count = watch_regions.size(); - - driver_device::data out{}; - size_t out_len = 0; - driver_device.send(WATCH_DRV_IOCTL, &request, sizeof(request), out.data(), &out_len); -} - -std::vector query_records(const driver_device& driver_device, const size_t current_size = 0) -{ - std::vector result{}; - result.resize(std::max(size_t(1024), current_size * 2)); - - while (true) - { - char in[1]; - constexpr auto element_len = sizeof(decltype(result)::value_type); - const size_t initial_len = result.size() * element_len; - size_t out_len = initial_len; - if (!driver_device.send(GET_RECORDS_DRV_IOCTL, in, 0, result.data(), &out_len)) - { - return {}; - } - - //if (out_len <= initial_len) - if (result.back() == 0) - { - //result.resize(out_len / element_len); - break; - } - - //result.resize((out_len / element_len) + 10); - //const auto new_size = result.size() * 2; - - result = {}; - result.resize(result.size() * 2); - } - - // Shrink - size_t i; - for (i = result.size(); i > 0; --i) - { - if (result[i - 1] != 0) - { - break; - } - } - - result.resize(i); - - return result; -} - -void report_records(const std::atomic_bool& flag, const driver_device& driver_device, const uint32_t pid, - const HMODULE target_module, const std::vector>& regions) -{ - std::set access_addresses{}; - - int i = 0; - while (!flag) - { - std::this_thread::sleep_for(std::chrono::seconds(1)); - const auto new_records = query_records(driver_device, access_addresses.size()); - - for (const auto& new_record : new_records) - { - if (access_addresses.emplace(new_record).second) - { - printf("%p\n", reinterpret_cast(new_record)); - } - } - - if ((++i) % 5 == 0) - { - watch_regions(driver_device, pid, target_module, regions); - } - } -} - -void unsafe_main(const int /*argc*/, char* /*argv*/[]) -{ - const auto driver_file = extract_driver(); - - driver driver{driver_file, "HyperHook"}; - const driver_device driver_device{R"(\\.\HyperHook)"}; - - const auto pid = get_process_id(); - - printf("Opening process...\n"); - auto proc = process::open(pid, PROCESS_QUERY_INFORMATION | PROCESS_VM_READ); - if (!proc) - { - printf("Failed to open process...\n"); - return; - } - - // IW5 - insert_nop(driver_device, pid, 0x4488A8, 2); // Force calling CG_DrawFriendOrFoeTargetBoxes - insert_nop(driver_device, pid, 0x47F6C7, 2); // Ignore blind-eye perks + insert_nop(pid, 0x4488A8, 2); // Force calling CG_DrawFriendOrFoeTargetBoxes + insert_nop(pid, 0x47F6C7, 2); // Ignore blind-eye perks //insert_nop(driver_device, pid, 0x44894C, 2); // Miniconsole // Always full alpha constexpr uint8_t data1[] = {0xD9, 0xE8, 0xC3}; - patch_data(driver_device, pid, 0x47F0D0, data1, sizeof(data1)); + patch_data(pid, 0x47F0D0, data1, sizeof(data1)); // Compass show enemies constexpr uint8_t data2[] = {0xEB, 0x13}; - patch_data(driver_device, pid, 0x4437A8, data2, sizeof(data2)); + patch_data(pid, 0x4437A8, data2, sizeof(data2)); // Enemy arrows constexpr uint8_t data3[] = {0xEB}; - patch_data(driver_device, pid, 0x443A2A, data3, sizeof(data3)); - patch_data(driver_device, pid, 0x443978, data3, sizeof(data3)); + patch_data(pid, 0x443A2A, data3, sizeof(data3)); + patch_data(pid, 0x443978, data3, sizeof(data3)); +} - printf("Press any key to disable all hooks!\n"); - (void)_getch(); +int safe_main(const int /*argc*/, char* /*argv*/[]) +{ + const auto pid = get_process_id(); - remove_hooks(driver_device); + while (true) + { + activate_patches(pid); - printf("Press any key to exit!\n"); - (void)_getch(); + printf("Press any key to exit!\n"); + if (_getch() != 'r') + { + break; + } + } + + return 0; } int main(const int argc, char* argv[]) { try { - unsafe_main(argc, argv); - return 0; + return safe_main(argc, argv); } catch (std::exception& e) { diff --git a/src/runner/resource.hpp b/src/runner/resource.hpp index b08cce0..6f70f09 100644 --- a/src/runner/resource.hpp +++ b/src/runner/resource.hpp @@ -1,3 +1 @@ #pragma once - -#define DRIVER_BINARY 300 diff --git a/src/runner/resource.rc b/src/runner/resource.rc index 7145013..532bd0e 100644 --- a/src/runner/resource.rc +++ b/src/runner/resource.rc @@ -9,7 +9,6 @@ // #include "windows.h" #include "resource.hpp" -#include ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS @@ -63,12 +62,12 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "momo5502" - VALUE "FileDescription", "Open-IW5" + VALUE "FileDescription", "HyperHook Runner" VALUE "FileVersion", "1.0.0.0" - VALUE "InternalName", "Open-IW5" + VALUE "InternalName", "HyperHook Runner" VALUE "LegalCopyright", "All rights reserved." - VALUE "OriginalFilename", "open-iw5.exe" - VALUE "ProductName", "open-iw5" + VALUE "OriginalFilename", "hyperhook.exe" + VALUE "ProductName", "hyperhook" VALUE "ProductVersion", "1.0.0.0" END END @@ -84,7 +83,6 @@ END // 102 ICON "resources/icon.ico" -DRIVER_BINARY RCDATA DRIVER_FILE