diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 53aeac8..f924848 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -29,11 +29,6 @@ jobs:
- name: Restore NuGet
run: dotnet restore ${{env.PROJ_LAUNCHER}}
- - name: Install Prospect.Agent dependencies
- run: |
- vcpkg integrate install
- vcpkg install minhook:x64-windows-static
-
- name: Build Prospect.Agent
run: msbuild /m /p:Configuration=Release /p:Platform=x64 ${{env.PROJ_AGENT}}
diff --git a/src/.gitignore b/src/.gitignore
index 003930f..34e158c 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,5 +1,6 @@
# Agent
Prospect.Agent.dll
+vcpkg_installed
# Api
appsettings.Development.json
diff --git a/src/Prospect.Agent/PropertySheet.props b/src/Prospect.Agent/PropertySheet.props
deleted file mode 100644
index e099704..0000000
--- a/src/Prospect.Agent/PropertySheet.props
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- E:\RE\UE-SDKs\Prospect\211021.0949
-
-
-
-
-
- $(UESDK)
- true
-
-
-
diff --git a/src/Prospect.Agent/Prospect.Agent.vcxproj b/src/Prospect.Agent/Prospect.Agent.vcxproj
index 19e075a..0995fda 100644
--- a/src/Prospect.Agent/Prospect.Agent.vcxproj
+++ b/src/Prospect.Agent/Prospect.Agent.vcxproj
@@ -38,11 +38,9 @@
-
-
@@ -63,6 +61,9 @@
true
+
+ true
+
Level3
diff --git a/src/Prospect.Agent/libs/detours/detours.h b/src/Prospect.Agent/libs/detours/detours.h
deleted file mode 100644
index e9acca5..0000000
--- a/src/Prospect.Agent/libs/detours/detours.h
+++ /dev/null
@@ -1,616 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// File: detours.h
-// Module: detours.lib
-//
-// Detours for binary functions. Version 1.5 (Build 46)
-//
-// Copyright 1995-2001, Microsoft Corporation
-//
-
-#pragma once
-#ifndef _DETOURS_H_
-#define _DETOURS_H_
-
-#pragma comment(lib, "detours")
-
-//////////////////////////////////////////////////////////////////////////////
-//
-#ifndef GUID_DEFINED
-#define GUID_DEFINED
-typedef struct _GUID
-{
- DWORD Data1;
- WORD Data2;
- WORD Data3;
- BYTE Data4[ 8 ];
-} GUID;
-#endif // !GUID_DEFINED
-
-#if defined(__cplusplus)
-#ifndef _REFGUID_DEFINED
-#define _REFGUID_DEFINED
-#define REFGUID const GUID &
-#endif // !_REFGUID_DEFINED
-#else // !__cplusplus
-#ifndef _REFGUID_DEFINED
-#define _REFGUID_DEFINED
-#define REFGUID const GUID * const
-#endif // !_REFGUID_DEFINED
-#endif // !__cplusplus
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-/////////////////////////////////////////////////// Instruction Target Macros.
-//
-#define DETOUR_INSTRUCTION_TARGET_NONE ((PBYTE)0)
-#define DETOUR_INSTRUCTION_TARGET_DYNAMIC ((PBYTE)~0ul)
-
-/////////////////////////////////////////////////////////// Trampoline Macros.
-//
-// DETOUR_TRAMPOLINE(trampoline_prototype, target_name)
-//
-// The naked trampoline must be at least DETOUR_TRAMPOLINE_SIZE bytes.
-//
-#define DETOUR_TRAMPOLINE_SIZE 32
-#define DETOUR_SECTION_HEADER_SIGNATURE 0x00727444 // "Dtr\0"
-
-#define DETOUR_TRAMPOLINE(trampoline,target) \
-static PVOID __fastcall _Detours_GetVA_##target(VOID) \
-{ \
- return ⌖ \
-} \
-\
-__declspec(naked) trampoline \
-{ \
- __asm { nop };\
- __asm { nop };\
- __asm { call _Detours_GetVA_##target };\
- __asm { jmp eax };\
- __asm { ret };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
-}
-
-#define DETOUR_TRAMPOLINE_EMPTY(trampoline) \
-__declspec(naked) trampoline \
-{ \
- __asm { nop };\
- __asm { nop };\
- __asm { xor eax, eax };\
- __asm { mov eax, [eax] };\
- __asm { ret };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
- __asm { nop };\
-}
-
-/////////////////////////////////////////////////////////// Binary Structures.
-//
-#pragma pack(push, 8)
-typedef struct _DETOUR_SECTION_HEADER
-{
- DWORD cbHeaderSize;
- DWORD nSignature;
- DWORD nDataOffset;
- DWORD cbDataSize;
-
- DWORD nOriginalImportVirtualAddress;
- DWORD nOriginalImportSize;
- DWORD nOriginalBoundImportVirtualAddress;
- DWORD nOriginalBoundImportSize;
-
- DWORD nOriginalIatVirtualAddress;
- DWORD nOriginalIatSize;
- DWORD nOriginalSizeOfImage;
- DWORD nReserve;
-} DETOUR_SECTION_HEADER, *PDETOUR_SECTION_HEADER;
-
-typedef struct _DETOUR_SECTION_RECORD
-{
- DWORD cbBytes;
- DWORD nReserved;
- GUID guid;
-} DETOUR_SECTION_RECORD, *PDETOUR_SECTION_RECORD;
-#pragma pack(pop)
-
-#define DETOUR_SECTION_HEADER_DECLARE(cbSectionSize) \
-{ \
- sizeof(DETOUR_SECTION_HEADER),\
- DETOUR_SECTION_HEADER_SIGNATURE,\
- sizeof(DETOUR_SECTION_HEADER),\
- (cbSectionSize),\
- \
- 0,\
- 0,\
- 0,\
- 0,\
- \
- 0,\
- 0,\
- 0,\
- 0,\
-}
-
-///////////////////////////////////////////////////////////// Binary Typedefs.
-//
-typedef BOOL (CALLBACK *PF_DETOUR_BINARY_BYWAY_CALLBACK)(PVOID pContext,
- PCHAR pszFile,
- PCHAR *ppszOutFile);
-typedef BOOL (CALLBACK *PF_DETOUR_BINARY_FILE_CALLBACK)(PVOID pContext,
- PCHAR pszOrigFile,
- PCHAR pszFile,
- PCHAR *ppszOutFile);
-typedef BOOL (CALLBACK *PF_DETOUR_BINARY_SYMBOL_CALLBACK)(PVOID pContext,
- DWORD nOrdinal,
- PCHAR pszOrigSymbol,
- PCHAR pszSymbol,
- PCHAR *ppszOutSymbol);
-typedef BOOL (CALLBACK *PF_DETOUR_BINARY_FINAL_CALLBACK)(PVOID pContext);
-typedef BOOL (CALLBACK *PF_DETOUR_BINARY_EXPORT_CALLBACK)(PVOID pContext,
- DWORD nOrdinal,
- PCHAR pszName,
- PBYTE pbCode);
-
-typedef VOID * PDETOUR_BINARY;
-typedef VOID * PDETOUR_LOADED_BINARY;
-
-//////////////////////////////////////////////////////// Trampoline Functions.
-//
-PBYTE WINAPI DetourFunction(PBYTE pbTargetFunction,
- PBYTE pbDetourFunction);
-
-BOOL WINAPI DetourFunctionWithEmptyTrampoline(PBYTE pbTrampoline,
- PBYTE pbTarget,
- PBYTE pbDetour);
-
-BOOL WINAPI DetourFunctionWithEmptyTrampolineEx(PBYTE pbTrampoline,
- PBYTE pbTarget,
- PBYTE pbDetour,
- PBYTE *ppbRealTrampoline,
- PBYTE *ppbRealTarget,
- PBYTE *ppbRealDetour);
-
-BOOL WINAPI DetourFunctionWithTrampoline(PBYTE pbTrampoline,
- PBYTE pbDetour);
-
-BOOL WINAPI DetourFunctionWithTrampolineEx(PBYTE pbTrampoline,
- PBYTE pbDetour,
- PBYTE *ppbRealTrampoline,
- PBYTE *ppbRealTarget);
-
-BOOL WINAPI DetourRemove(PBYTE pbTrampoline, PBYTE pbDetour);
-
-////////////////////////////////////////////////////////////// Code Functions.
-//
-PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction);
-PBYTE WINAPI DetourGetFinalCode(PBYTE pbCode, BOOL fSkipJmp);
-
-PBYTE WINAPI DetourCopyInstruction(PBYTE pbDst, PBYTE pbSrc, PBYTE *ppbTarget);
-PBYTE WINAPI DetourCopyInstructionEx(PBYTE pbDst,
- PBYTE pbSrc,
- PBYTE *ppbTarget,
- LONG *plExtra);
-
-///////////////////////////////////////////////////// Loaded Binary Functions.
-//
-HMODULE WINAPI DetourEnumerateModules(HMODULE hModuleLast);
-PBYTE WINAPI DetourGetEntryPoint(HMODULE hModule);
-BOOL WINAPI DetourEnumerateExports(HMODULE hModule,
- PVOID pContext,
- PF_DETOUR_BINARY_EXPORT_CALLBACK pfExport);
-
-PBYTE WINAPI DetourFindPayload(HMODULE hModule, REFGUID rguid, DWORD *pcbData);
-DWORD WINAPI DetourGetSizeOfPayloads(HMODULE hModule);
-
-///////////////////////////////////////////////// Persistent Binary Functions.
-//
-BOOL WINAPI DetourBinaryBindA(PCHAR pszFile, PCHAR pszDll, PCHAR pszPath);
-BOOL WINAPI DetourBinaryBindW(PWCHAR pwzFile, PWCHAR pwzDll, PWCHAR pwzPath);
-#ifdef UNICODE
-#define DetourBinaryBind DetourBinaryBindW
-#else
-#define DetourBinaryBind DetourBinaryBindA
-#endif // !UNICODE
-
-PDETOUR_BINARY WINAPI DetourBinaryOpen(HANDLE hFile);
-PBYTE WINAPI DetourBinaryEnumeratePayloads(PDETOUR_BINARY pBinary,
- GUID *pGuid,
- DWORD *pcbData,
- DWORD *pnIterator);
-PBYTE WINAPI DetourBinaryFindPayload(PDETOUR_BINARY pBinary,
- REFGUID rguid,
- DWORD *pcbData);
-PBYTE WINAPI DetourBinarySetPayload(PDETOUR_BINARY pBinary,
- REFGUID rguid,
- PBYTE pbData,
- DWORD cbData);
-BOOL WINAPI DetourBinaryDeletePayload(PDETOUR_BINARY pBinary, REFGUID rguid);
-BOOL WINAPI DetourBinaryPurgePayloads(PDETOUR_BINARY pBinary);
-BOOL WINAPI DetourBinaryResetImports(PDETOUR_BINARY pBinary);
-BOOL WINAPI DetourBinaryEditImports(PDETOUR_BINARY pBinary,
- PVOID pContext,
- PF_DETOUR_BINARY_BYWAY_CALLBACK pfByway,
- PF_DETOUR_BINARY_FILE_CALLBACK pfFile,
- PF_DETOUR_BINARY_SYMBOL_CALLBACK pfSymbol,
- PF_DETOUR_BINARY_FINAL_CALLBACK pfFinal);
-BOOL WINAPI DetourBinaryWrite(PDETOUR_BINARY pBinary, HANDLE hFile);
-BOOL WINAPI DetourBinaryClose(PDETOUR_BINARY pBinary);
-
-/////////////////////////////////////////////// First Chance Exception Filter.
-//
-LPTOP_LEVEL_EXCEPTION_FILTER WINAPI
-DetourFirstChanceExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelFilter);
-
-///////////////////////////////////////////////// Create Process & Inject Dll.
-//
-typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEA)
- (LPCSTR lpApplicationName,
- LPSTR lpCommandLine,
- LPSECURITY_ATTRIBUTES lpProcessAttributes,
- LPSECURITY_ATTRIBUTES lpThreadAttributes,
- BOOL bInheritHandles,
- DWORD dwCreationFlags,
- LPVOID lpEnvironment,
- LPCSTR lpCurrentDirectory,
- LPSTARTUPINFOA lpStartupInfo,
- LPPROCESS_INFORMATION lpProcessInformation);
-
-typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEW)
- (LPCWSTR lpApplicationName,
- LPWSTR lpCommandLine,
- LPSECURITY_ATTRIBUTES lpProcessAttributes,
- LPSECURITY_ATTRIBUTES lpThreadAttributes,
- BOOL bInheritHandles,
- DWORD dwCreationFlags,
- LPVOID lpEnvironment,
- LPCWSTR lpCurrentDirectory,
- LPSTARTUPINFOW lpStartupInfo,
- LPPROCESS_INFORMATION lpProcessInformation);
-
-BOOL WINAPI DetourCreateProcessWithDllA(LPCSTR lpApplicationName,
- LPSTR lpCommandLine,
- LPSECURITY_ATTRIBUTES lpProcessAttributes,
- LPSECURITY_ATTRIBUTES lpThreadAttributes,
- BOOL bInheritHandles,
- DWORD dwCreationFlags,
- LPVOID lpEnvironment,
- LPCSTR lpCurrentDirectory,
- LPSTARTUPINFOA lpStartupInfo,
- LPPROCESS_INFORMATION lpProcessInformation,
- LPCSTR lpDllName,
- PDETOUR_CREATE_PROCESS_ROUTINEA
- pfCreateProcessA);
-
-BOOL WINAPI DetourCreateProcessWithDllW(LPCWSTR lpApplicationName,
- LPWSTR lpCommandLine,
- LPSECURITY_ATTRIBUTES lpProcessAttributes,
- LPSECURITY_ATTRIBUTES lpThreadAttributes,
- BOOL bInheritHandles,
- DWORD dwCreationFlags,
- LPVOID lpEnvironment,
- LPCWSTR lpCurrentDirectory,
- LPSTARTUPINFOW lpStartupInfo,
- LPPROCESS_INFORMATION lpProcessInformation,
- LPCWSTR lpDllName,
- PDETOUR_CREATE_PROCESS_ROUTINEW
- pfCreateProcessW);
-
-#ifdef UNICODE
-#define DetourCreateProcessWithDll DetourCreateProcessWithDllW
-#define PDETOUR_CREATE_PROCESS_ROUTINE PDETOUR_CREATE_PROCESS_ROUTINEW
-#else
-#define DetourCreateProcessWithDll DetourCreateProcessWithDllA
-#define PDETOUR_CREATE_PROCESS_ROUTINE PDETOUR_CREATE_PROCESS_ROUTINEA
-#endif // !UNICODE
-
-BOOL WINAPI DetourContinueProcessWithDllA(HANDLE hProcess, LPCSTR lpDllName);
-BOOL WINAPI DetourContinueProcessWithDllW(HANDLE hProcess, LPCWSTR lpDllName);
-
-#ifdef UNICODE
-#define DetourContinueProcessWithDll DetourContinueProcessWithDllW
-#else
-#define DetourContinueProcessWithDll DetourContinueProcessWithDllA
-#endif // !UNICODE
-//
-//////////////////////////////////////////////////////////////////////////////
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-/////////////////////////////////////////////////////////////////// Old Names.
-//
-#define ContinueProcessWithDll DetourContinueProcessWithDll
-#define ContinueProcessWithDllA DetourContinueProcessWithDllA
-#define ContinueProcessWithDllW DetourContinueProcessWithDllW
-#define CreateProcessWithDll DetourCreateProcessWithDll
-#define CreateProcessWithDllA DetourCreateProcessWithDllA
-#define CreateProcessWithDllW DetourCreateProcessWithDllW
-#define DETOUR_TRAMPOLINE_WO_TARGET DETOUR_TRAMPOLINE_EMPTY
-#define DetourBinaryPurgePayload DetourBinaryPurgePayloads
-#define DetourEnumerateExportsForInstance DetourEnumerateExports
-#define DetourEnumerateInstances DetourEnumerateModules
-#define DetourFindEntryPointForInstance DetourGetEntryPoint
-#define DetourFindFinalCode DetourGetFinalCode
-#define DetourFindPayloadInBinary DetourFindPayload
-#define DetourGetSizeOfBinary DetourGetSizeOfPayloads
-#define DetourRemoveWithTrampoline DetourRemove
-#define PCREATE_PROCESS_ROUTINE PDETOUR_CREATE_PROCESS_ROUTINE
-#define PCREATE_PROCESS_ROUTINEA PDETOUR_CREATE_PROCESS_ROUTINEA
-#define PCREATE_PROCESS_ROUTINEW PDETOUR_CREATE_PROCESS_ROUTINEW
-//
-
-//////////////////////////////////////////////// Detours Internal Definitions.
-//
-#ifdef __cplusplus
-#ifdef DETOURS_INTERNAL
-
-//////////////////////////////////////////////////////////////////////////////
-//
-#ifdef IMAGEAPI // defined by IMAGEHLP.H
-typedef LPAPI_VERSION (NTAPI *PF_ImagehlpApiVersionEx)(LPAPI_VERSION AppVersion);
-
-typedef BOOL (NTAPI *PF_SymInitialize)(IN HANDLE hProcess,
- IN LPSTR UserSearchPath,
- IN BOOL fInvadeProcess);
-typedef DWORD (NTAPI *PF_SymSetOptions)(IN DWORD SymOptions);
-typedef DWORD (NTAPI *PF_SymGetOptions)(VOID);
-typedef BOOL (NTAPI *PF_SymLoadModule)(IN HANDLE hProcess,
- IN HANDLE hFile,
- IN PSTR ImageName,
- IN PSTR ModuleName,
- IN DWORD BaseOfDll,
- IN DWORD SizeOfDll);
-typedef BOOL (NTAPI *PF_SymGetModuleInfo)(IN HANDLE hProcess,
- IN DWORD dwAddr,
- OUT PIMAGEHLP_MODULE ModuleInfo);
-typedef BOOL (NTAPI *PF_SymGetSymFromName)(IN HANDLE hProcess,
- IN LPSTR Name,
- OUT PIMAGEHLP_SYMBOL Symbol);
-typedef BOOL (NTAPI *PF_BindImage)(IN LPSTR pszImageName,
- IN LPSTR pszDllPath,
- IN LPSTR pszSymbolPath);
-
-typedef struct _DETOUR_SYM_INFO
-{
- HANDLE hProcess;
- HMODULE hImageHlp;
- PF_ImagehlpApiVersionEx pfImagehlpApiVersionEx;
- PF_SymInitialize pfSymInitialize;
- PF_SymSetOptions pfSymSetOptions;
- PF_SymGetOptions pfSymGetOptions;
- PF_SymLoadModule pfSymLoadModule;
- PF_SymGetModuleInfo pfSymGetModuleInfo;
- PF_SymGetSymFromName pfSymGetSymFromName;
- PF_BindImage pfBindImage;
-} DETOUR_SYM_INFO, *PDETOUR_SYM_INFO;
-
-PDETOUR_SYM_INFO DetourLoadImageHlp(VOID);
-
-#endif // IMAGEAPI
-
-//////////////////////////////////////////////////////////////////////////////
-//
-class CDetourEnableWriteOnCodePage
-{
-public:
- CDetourEnableWriteOnCodePage(PBYTE pbCode, LONG cbCode = DETOUR_TRAMPOLINE_SIZE)
- {
- m_pbCode = pbCode;
- m_cbCode = cbCode;
- m_dwOldPerm = 0;
- m_hProcess = GetCurrentProcess();
-
- if (m_pbCode && m_cbCode) {
- if (!FlushInstructionCache(m_hProcess, pbCode, cbCode)) {
- return;
- }
- if (!VirtualProtect(pbCode,
- cbCode,
- PAGE_EXECUTE_READWRITE,
- &m_dwOldPerm)) {
- return;
- }
- }
- }
-
- ~CDetourEnableWriteOnCodePage()
- {
- if (m_dwOldPerm && m_pbCode && m_cbCode) {
- DWORD dwTemp = 0;
- if (!FlushInstructionCache(m_hProcess, m_pbCode, m_cbCode)) {
- return;
- }
- if (!VirtualProtect(m_pbCode, m_cbCode, m_dwOldPerm, &dwTemp)) {
- return;
- }
- }
- }
-
- BOOL SetPermission(DWORD dwPerms)
- {
- if (m_dwOldPerm && m_pbCode && m_cbCode) {
- m_dwOldPerm = dwPerms;
- return TRUE;
- }
- return FALSE;
- }
-
- BOOL IsValid(VOID)
- {
- return m_pbCode && m_cbCode && m_dwOldPerm;
- }
-
-private:
- HANDLE m_hProcess;
- PBYTE m_pbCode;
- LONG m_cbCode;
- DWORD m_dwOldPerm;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-//
-inline PBYTE DetourGenMovEax(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xB8;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEbx(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBB;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEcx(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xB9;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEdx(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBA;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEsi(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBE;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEdi(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBF;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEbp(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBD;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenMovEsp(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0xBC;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenPush(PBYTE pbCode, UINT32 nValue)
-{
- *pbCode++ = 0x68;
- *((UINT32*&)pbCode)++ = nValue;
- return pbCode;
-}
-
-inline PBYTE DetourGenPushad(PBYTE pbCode)
-{
- *pbCode++ = 0x60;
- return pbCode;
-}
-
-inline PBYTE DetourGenPopad(PBYTE pbCode)
-{
- *pbCode++ = 0x61;
- return pbCode;
-}
-
-inline PBYTE DetourGenJmp(PBYTE pbCode, PBYTE pbJmpDst, PBYTE pbJmpSrc = 0)
-{
- if (pbJmpSrc == 0) {
- pbJmpSrc = pbCode;
- }
- *pbCode++ = 0xE9;
- *((INT32*&)pbCode)++ = pbJmpDst - (pbJmpSrc + 5);
- return pbCode;
-}
-
-inline PBYTE DetourGenCall(PBYTE pbCode, PBYTE pbJmpDst, PBYTE pbJmpSrc = 0)
-{
- if (pbJmpSrc == 0) {
- pbJmpSrc = pbCode;
- }
- *pbCode++ = 0xE8;
- *((INT32*&)pbCode)++ = pbJmpDst - (pbJmpSrc + 5);
- return pbCode;
-}
-
-inline PBYTE DetourGenBreak(PBYTE pbCode)
-{
- *pbCode++ = 0xcc;
- return pbCode;
-}
-
-inline PBYTE DetourGenRet(PBYTE pbCode)
-{
- *pbCode++ = 0xc3;
- return pbCode;
-}
-
-inline PBYTE DetourGenNop(PBYTE pbCode)
-{
- *pbCode++ = 0x90;
- return pbCode;
-}
-#endif DETOURS_INTERAL
-#endif // __cplusplus
-
-#endif // _DETOURS_H_
-//
-//////////////////////////////////////////////////////////////// End of File.
diff --git a/src/Prospect.Agent/libs/detours/detours.lib b/src/Prospect.Agent/libs/detours/detours.lib
deleted file mode 100644
index 56c6a8d..0000000
Binary files a/src/Prospect.Agent/libs/detours/detours.lib and /dev/null differ
diff --git a/src/Prospect.Agent/vcpkg-configuration.json b/src/Prospect.Agent/vcpkg-configuration.json
new file mode 100644
index 0000000..ba06dad
--- /dev/null
+++ b/src/Prospect.Agent/vcpkg-configuration.json
@@ -0,0 +1,14 @@
+{
+ "default-registry": {
+ "kind": "git",
+ "baseline": "2960d7d80e8d09c84ae8abf15c12196c2ca7d39a",
+ "repository": "https://github.com/microsoft/vcpkg"
+ },
+ "registries": [
+ {
+ "kind": "artifact",
+ "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
+ "name": "microsoft"
+ }
+ ]
+}
diff --git a/src/Prospect.Agent/vcpkg.json b/src/Prospect.Agent/vcpkg.json
new file mode 100644
index 0000000..53b61fa
--- /dev/null
+++ b/src/Prospect.Agent/vcpkg.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": [
+ "minhook"
+ ]
+}
diff --git a/src/Prospect.Server.Api/Services/CloudScript/Functions/EnterMatchmaking.cs b/src/Prospect.Server.Api/Services/CloudScript/Functions/EnterMatchmaking.cs
index 1226100..c6fdfc9 100644
--- a/src/Prospect.Server.Api/Services/CloudScript/Functions/EnterMatchmaking.cs
+++ b/src/Prospect.Server.Api/Services/CloudScript/Functions/EnterMatchmaking.cs
@@ -14,7 +14,7 @@ public class EnterMatchmaking : ICloudScriptFunction