#pragma once #include #include #include #include #ifndef member_at #define member_at(T, offset, name) \ __forceinline auto &name() \ { \ return *reinterpret_cast(reinterpret_cast(this) + offset); \ } \ __forceinline auto &name() const \ { \ return *reinterpret_cast(reinterpret_cast(this) + offset); \ } #endif class FeatureManager { public: static inline size_t m_map_offset{}; member_at(uintptr_t, m_map_offset, m_feature_map); }; uintptr_t get_current_process_handle(); std::optional> get_section_info(std::string_view name); std::optional sig_scan(const uintptr_t start, const uintptr_t end, std::string_view pattern); uint64_t hook_is_feature_available(uintptr_t rcx, const char** guid); uint64_t* hook_map_find(uintptr_t* rcx, uintptr_t rdx, const char** str); FeatureManager* hook_feature_manager_init(FeatureManager* rcx); void hook();