aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-03-26 22:02:45 +0100
committerToni Uhlig <matzeton@googlemail.com>2020-03-26 22:02:45 +0100
commit9cf0997ebd7aaabe42dedd617c4984314e546af7 (patch)
treed3f60de406d28af5b535755db799de02fae22bee
parent68bafa869df2165209a1887ce21f345bfdb71a97 (diff)
removed hunt leftover..
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r--Hunted/Hunted.cpp325
-rw-r--r--Hunted/Hunted.vcxproj203
-rw-r--r--Hunted/Hunted.vcxproj.filters36
-rw-r--r--Hunted/pch.cpp5
-rw-r--r--Hunted/pch.h14
-rw-r--r--KMemDriver.sln6
-rw-r--r--TestDLL/HuntClasses.h965
-rw-r--r--TestDLL/TestDLL.vcxproj21
-rw-r--r--TestDLL/TestDLL.vcxproj.filters3
-rw-r--r--TestDLL/dllmain.cpp189
10 files changed, 15 insertions, 1752 deletions
diff --git a/Hunted/Hunted.cpp b/Hunted/Hunted.cpp
deleted file mode 100644
index 0eca6d0..0000000
--- a/Hunted/Hunted.cpp
+++ /dev/null
@@ -1,325 +0,0 @@
-#include "pch.h"
-#include "KMemDriver.h"
-#include "KInterface.h"
-#include "DLLHelper.h"
-#include "PatternScanner.h"
-
-#include <array>
-#include <iostream>
-#include <iomanip>
-#include <windows.h>
-#include <Shlwapi.h>
-
-#define WHEXOUT std::setfill(L'0') << std::setw(16) << std::hex
-
-static BOOL running = false;
-static const wchar_t wName[] = L"HUNT";
-
-
-static bool consoleHandler(int signal) {
- if (signal == CTRL_C_EVENT) {
- if (!running)
- exit(EXIT_FAILURE);
- running = false;
- std::wcout << L"Waiting for graceful shutdown .." << std::endl;
- }
- return true;
-}
-
-static void printBuf(UCHAR *buf, SIZE_T siz, SIZE_T bytesBeforeNewline) {
- unsigned int i, j;
- const unsigned char colors[] = { 10,11,12,13,14,15 };
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
-
- for (i = 0, j = 0; i < siz; ++i) {
- if (i % bytesBeforeNewline == 0) {
- SetConsoleTextAttribute(hConsole, colors[j++ % (sizeof colors)]);
- wprintf(L"\n0x%04X: ", i);
- }
- wprintf(L"%02X ", buf[i]);
- }
- wprintf(L"\n");
- SetConsoleTextAttribute(hConsole, 15);
-}
-
-static BOOL CALLBACK enumWindowsProc(HWND hWnd, LPARAM lParam)
-{
- int length = GetWindowTextLength(hWnd);
- TCHAR* buffer;
- buffer = new TCHAR[length + 1];
- memset(buffer, 0, (length + 1) * sizeof(TCHAR));
- GetWindowText(hWnd, buffer, length + 1);
- if (!wcscmp(buffer, wName))
- *(HWND *)lParam = hWnd;
- delete[] buffer;
- return TRUE;
-}
-
-int wmain(int argc, wchar_t **argv)
-{
- HANDLE targetPID = 0;
- PVOID buf;
- HANDLE kevent;
- HANDLE uevent;
-
- KInterface &ki = KInterface::getInstance();
- std::vector<MEMORY_BASIC_INFORMATION> pages;
- std::vector<MODULE_DATA> modules;
-
- std::wcout << L"Waiting for window title: '" << wName << L"'" << std::endl;
-
- HWND targetHWND = NULL;
- while (1) {
- if (!EnumWindows(enumWindowsProc, (LPARAM)&targetHWND)) {
- return 1;
- }
- if (targetHWND) {
- std::wcout << L"Found window '" << wName << L"' with Handle 0x"
- << std::hex << targetHWND << std::endl;
- break;
- }
- Sleep(1000);
- }
- GetWindowThreadProcessId(targetHWND, (LPDWORD)&targetPID);
-
- SetConsoleCtrlHandler((PHANDLER_ROUTINE)consoleHandler, TRUE);
-
- if (!ki.Init()) {
- std::wcout << L"Kernel Interface Init() failed" << std::endl;
- return 1;
- }
-
- try {
- buf = ki.getBuffer();
- kevent = ki.getKHandle();
- uevent = ki.getUHandle();
- }
- catch (std::runtime_error& err) {
- std::wcout << err.what() << std::endl;
- return 1;
- }
-
- std::wcout << L"Buffer.: " << buf << std::endl;
- std::wcout << L"KHandle: " << kevent << std::endl;
- std::wcout << L"UHandle: " << uevent << std::endl;
-
- if (!ki.Handshake()) {
- std::wcout << L"Kernel Interface Handshake() failed" << std::endl;
- return 1;
- }
- if (targetPID) {
- if (!ki.Modules(targetPID, modules))
- std::wcout << L"Kernel Interface Modules() failed with 0x"
- << std::hex << ki.getLastNtStatus() << std::endl;
- else std::wcout << L"Got " << std::dec << modules.size() << L" modules for pid 0x"
- << std::hex << targetPID << std::endl;
- if (!ki.Pages(targetPID, pages))
- std::wcout << L"Kernel Interface Pages() failed with 0x"
- << std::hex << ki.getLastNtStatus() << std::endl;
- else std::wcout << L"Got " << std::dec << pages.size() << L" mapped pages for pid 0x"
- << std::hex << targetPID << std::endl;
- }
-
- running = TRUE;
- do {
- if (ki.RecvWait() == SRR_TIMEOUT) {
- std::wcout << L"Ping -> ";
- if (!ki.Ping()) {
- std::wcout << L"Got no valid PONG, abort!" << std::endl;
- running = FALSE;
- }
- else std::wcout << L"PONG!" << std::endl;
- }
-
- if (!running)
- break;
-
- try {
- if (targetPID) {
- for (MODULE_DATA& md : modules) {
- if (!strncmp(md.BaseDllName, "CryEntitySystem.dll",
- sizeof md.BaseDllName))
- {
- /* "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe" /Zp2 /c /d1reportSingleClassLayoutCEntitySystem C:\Users\segfault\Source\Repos\CRYENGINE\Code\CryEngine\CryEntitySystem\EntitySystem.cpp /I C:\Users\segfault\Source\Repos\CRYENGINE\Code\CryEngine\CryCommon /I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um" */
-
- static bool first = true;
- if (first) {
- first = false;
-
- SymbolResolver sresolv;
- DLLHelper dll(sresolv);
- if (!dll.Init(targetPID, "./TestDLL.dll")) {
- std::wcout << L"DLL Init failed" << std::endl;
- }
- if (!dll.VerifyHeader()) {
- std::wcout << L"DLL VerifyHeader failed" << std::endl;
- }
- if (!dll.InitTargetMemory(/* 0x7ffe00000000 */)) {
- std::wcout << L"DLL InitTargetMemory failed" << std::endl;
- }
- if (!dll.HasImports())
- {
- std::wcout << L"DLL has no ImportTable" << std::endl;
- }
- else if (!dll.FixImports()) {
- std::wcout << L"DLL FixImports failed" << std::endl;
- }
- if (!dll.HasRelocs()) {
- std::wcout << L"DLL has no RelocTable" << std::endl;
- }
- else if (!dll.FixRelocs()) {
- std::wcout << L"DLL FixRelocs failed" << std::endl;
- }
- if (!dll.CopyHeaderAndSections()) {
- std::wcout << L"DLL CopyHeaderAndSections failed" << std::endl;
- }
- std::wcout << L"DLL mapping succesful, "
- << "BaseAddress: " << WHEXOUT << dll.GetBaseAddress()
- << ", EntryPoint: " << WHEXOUT << dll.GetEntryPoint() << std::endl;
-
- UINT64 targetAddr = dll.GetBaseAddress();
- UINT64 g_pEnvSysSigged = NULL;
- UINT64 g_pCCryActionSigged = NULL;
- UINT64 g_pEntSys = 0;
-
- {
- struct loadlib_user_data llua;
- char * cryDllDir = new char[sizeof md.FullDllPath];
- std::memcpy(cryDllDir, md.FullDllPath, sizeof md.FullDllPath);
- PathRemoveFileSpecA(cryDllDir);
- llua.additionalDllSearchDirectories.push_back(std::string(cryDllDir));
- delete cryDllDir;
-
- PatternScanner pscan(sresolv, &map_loadlib, &llua);
- std::vector<SIZE_T> foundAddresses;
- /* ?g_pIEntitySystem -> EXPORT TABLE [Offset: -0x32 == g_pEntSys] */
- pscan.Scan(md, "3F 67 5F 70 49 45 6E 74 69 74 79 53 79 73 74 65 6D", foundAddresses);
-
- for (auto& addr : foundAddresses) {
- g_pEntSys = KMemory::Rpm<UINT64>(targetPID, (PVOID)(addr - 0x8));
- g_pEntSys >>= 32;
- g_pEntSys += addr;
- std::wcout << "g_pEntSys via SigScan: " << g_pEntSys << std::endl;
- }
- }
-
- for (MODULE_DATA& md : modules) {
- if (!strncmp(md.BaseDllName, "CryAction.dll",
- sizeof md.BaseDllName)) {
-
- struct loadlib_user_data llua;
- char * cryDllDir = new char[sizeof md.FullDllPath];
- std::memcpy(cryDllDir, md.FullDllPath, sizeof md.FullDllPath);
- PathRemoveFileSpecA(cryDllDir);
- llua.additionalDllSearchDirectories.push_back(std::string(cryDllDir));
- delete cryDllDir;
-
- for (auto& dir : llua.additionalDllSearchDirectories) {
- std::wcout << L"AdditionalDLLDir: "
- << std::wstring(dir.begin(), dir.end()) << std::endl;
- }
- {
- PatternScanner pscan(sresolv, &map_loadlib, &llua);
- std::vector<SIZE_T> foundAddresses;
- pscan.Scan(md, "48 8B 48 20 48 8B 01 FF 90 20 01 00 00", foundAddresses);
-
- for (auto& addr : foundAddresses) {
- g_pEnvSysSigged = KMemory::Rpm<UINT64>(targetPID, (PVOID)(addr - 0x8));
- g_pEnvSysSigged >>= 32;
- g_pEnvSysSigged += addr;
- std::wcout << "g_pEnvSys via SigScan: " << g_pEnvSysSigged << std::endl;
- }
- }
- {
- PatternScanner pscan(sresolv, &map_loadlib, &llua);
- std::vector<SIZE_T> foundAddresses;
- pscan.Scan(md, "48 89 6C 24 38 48 8D 2D ?? ?? ?? ?? 48 8B 11", foundAddresses);
-
- for (auto& addr : foundAddresses) {
- g_pCCryActionSigged = KMemory::Rpm<UINT64>(targetPID, (PVOID)(addr - 0x8));
- g_pCCryActionSigged >>= 32;
- g_pCCryActionSigged += addr;
- std::wcout << "g_pCCryAction via SigScan: " << g_pCCryActionSigged << std::endl;
- }
- }
-
- break;
- }
- }
-
- BYTE cc[] = { /* push rax; push rbx; push rcx; push rdx; push rsi;
- push rdi; push rsp; push rbp; push r8; push r9;
- push r10; push r11; push r12; push r13; push r14;
- push r15 */
- 0x50, 0x53, 0x51, 0x52, 0x56, 0x57,
- 0x54, 0x55, 0x41, 0x50, 0x41, 0x51,
- 0x41, 0x52, 0x41, 0x53, 0x41, 0x54,
- 0x41, 0x55, 0x41, 0x56, 0x41, 0x57,
- /* nops */
- 0x90, 0x90, 0x90, 0x90, 0x90,
- /* mov rcx, 0x0000000000000000 */
- 0x48, 0xB9,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* mov rax, 0x0000000000000000 */
- 0x48, 0xB8,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* call rax */
- 0xFF, 0xD0,
- /* nops */
- 0x90, 0x90,
- /* pop r15; pop r14; pop r13; pop r12; pop r11;
- pop r10; pop r9; pop r8; pop rbp; pop rsp;
- pop rdi; pop rsi; pop rdx; pop rcx; pop rbx;
- pop rax */
- 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D,
- 0x41, 0x5C, 0x41, 0x5B, 0x41, 0x5A,
- 0x41, 0x59, 0x41, 0x58, 0x5D, 0x5C,
- 0x5F, 0x5E, 0x5A, 0x59, 0x5B, 0x58,
- /* nops */
- 0x90, 0x90,
- /* mov rax, 0x0000000000000000 */
- 0x48, 0xB8,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* jmp rax */
- 0xFF, 0xE0,
- /* the following is part of the HuntCtx struct */
- /* ptr to ptr to EntitySystem */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* ptr to ptr to GlobalEnv */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* ptr to ptr to CCryAction */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
- *(UINT64 *)((BYTE *)cc + 31) = targetAddr + 91;
- *(UINT64 *)((BYTE *)cc + 41) = dll.GetEntryPoint();
- /* PATTERN: 48 89 4C 24 08 48 83 EC 48 +0x275 */
- UINT64 jumpBackAddr = (UINT64)md.DllBase + 0x70875; /* TODO: SigScan Me! */
- *(UINT64 *)((BYTE *)cc + 81) = jumpBackAddr;
- *(UINT64 *)((BYTE *)cc + 91) = g_pEntSys;
- *(UINT64 *)((BYTE *)cc + 99) = g_pEnvSysSigged;
- *(UINT64 *)((BYTE *)cc + 107) = g_pCCryActionSigged;
-
- printBuf(cc, sizeof cc, 32);
- KMemoryBuf::Wpm<sizeof cc>(targetPID, (PVOID)targetAddr, &cc[0]);
-
- /* mov rax, 0x0000000000000000; jmp rax */
- BYTE dd[] = { 0x48, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0 };
- *(UINT64 *)((BYTE *)dd + 2) = (UINT64)targetAddr;
- printBuf(dd, sizeof dd, 32);
-
- /* PATTERN: 48 89 4C 24 08 48 83 EC 48 +0x9 */
- KMemoryBuf::Wpm<sizeof dd>(targetPID, (PVOID)((UINT64)md.DllBase + 0x70609 /* TODO: SigScan Me! */), &dd[0]);
- }
- }
- }
- }
- }
- catch (std::runtime_error& err) {
- std::wcout << err.what() << std::endl;
- }
- } while (running);
-
- std::wcout << L"Driver shutdown .." << std::endl;
- ki.Exit();
-
- return 0;
-} \ No newline at end of file
diff --git a/Hunted/Hunted.vcxproj b/Hunted/Hunted.vcxproj
deleted file mode 100644
index 14bc425..0000000
--- a/Hunted/Hunted.vcxproj
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <VCProjectVersion>15.0</VCProjectVersion>
- <ProjectGuid>{8661069D-CE09-4A70-8C75-8F33E77732E6}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>Hunted</RootNamespace>
- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
- <ProjectName>Hunted</ProjectName>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- <SpectreMitigation>false</SpectreMitigation>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <SpectreMitigation>false</SpectreMitigation>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- <UseOfMfc>Static</UseOfMfc>
- <SpectreMitigation>false</SpectreMitigation>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v141</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- <SpectreMitigation>false</SpectreMitigation>
- <UseOfMfc>Static</UseOfMfc>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="Shared">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <TargetName>$(ProjectName)-kmem</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <TargetName>$(ProjectName)-kmem</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
- <ExceptionHandling>SyncCThrow</ExceptionHandling>
- <BufferSecurityCheck>true</BufferSecurityCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- <AdditionalDependencies>kernel32.lib;user32.lib;Shlwapi.lib;MemDriverLib.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <ExceptionHandling>SyncCThrow</ExceptionHandling>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <ExceptionHandling>Sync</ExceptionHandling>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
- <ExceptionHandling>Sync</ExceptionHandling>
- <BufferSecurityCheck>false</BufferSecurityCheck>
- <AdditionalIncludeDirectories>$(SolutionDir)include</AdditionalIncludeDirectories>
- <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
- <AdditionalDependencies>kernel32.lib;user32.lib;Shlwapi.lib;MemDriverLib.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\include\KInterface.h" />
- <ClInclude Include="..\include\KMemDriver.h" />
- <ClInclude Include="pch.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="Hunted.cpp" />
- <ClCompile Include="pch.cpp">
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\MemDriverLib\MemDriverLib.vcxproj">
- <Project>{b6790a97-6995-46b6-ad73-ac5bc4ac76db}</Project>
- </ProjectReference>
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Hunted/Hunted.vcxproj.filters b/Hunted/Hunted.vcxproj.filters
deleted file mode 100644
index e3b3430..0000000
--- a/Hunted/Hunted.vcxproj.filters
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="pch.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\include\KInterface.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\include\KMemDriver.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="pch.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="Hunted.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Hunted/pch.cpp b/Hunted/pch.cpp
deleted file mode 100644
index 3a3d12b..0000000
--- a/Hunted/pch.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-// pch.cpp: source file corresponding to pre-compiled header; necessary for compilation to succeed
-
-#include "pch.h"
-
-// In general, ignore this file, but keep it around if you are using pre-compiled headers.
diff --git a/Hunted/pch.h b/Hunted/pch.h
deleted file mode 100644
index b04e71e..0000000
--- a/Hunted/pch.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Tips for Getting Started:
-// 1. Use the Solution Explorer window to add/manage files
-// 2. Use the Team Explorer window to connect to source control
-// 3. Use the Output window to see build output and other messages
-// 4. Use the Error List window to view errors
-// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
-// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
-
-#ifndef PCH_H
-#define PCH_H
-
-// TODO: add headers that you want to pre-compile here
-
-#endif //PCH_H
diff --git a/KMemDriver.sln b/KMemDriver.sln
index 7666726..c508006 100644
--- a/KMemDriver.sln
+++ b/KMemDriver.sln
@@ -5,8 +5,6 @@ VisualStudioVersion = 15.0.28307.421
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KMemDriver", "KMemDriver\KMemDriver.vcxproj", "{5B65BD0E-C43C-41E3-A016-1CD0B092998F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hunted", "Hunted\Hunted.vcxproj", "{8661069D-CE09-4A70-8C75-8F33E77732E6}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemDriverLib", "MemDriverLib\MemDriverLib.vcxproj", "{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemDriverWeb", "MemDriverWeb\MemDriverWeb.vcxproj", "{D36A5026-3729-4CC0-BD26-37177ACE3590}"
@@ -32,10 +30,6 @@ Global
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.ActiveCfg = Release|x64
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.Build.0 = Release|x64
{5B65BD0E-C43C-41E3-A016-1CD0B092998F}.Release|x64.Deploy.0 = Release|x64
- {8661069D-CE09-4A70-8C75-8F33E77732E6}.Debug|x64.ActiveCfg = Debug|x64
- {8661069D-CE09-4A70-8C75-8F33E77732E6}.Debug|x64.Build.0 = Debug|x64
- {8661069D-CE09-4A70-8C75-8F33E77732E6}.Release|x64.ActiveCfg = Release|x64
- {8661069D-CE09-4A70-8C75-8F33E77732E6}.Release|x64.Build.0 = Release|x64
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Debug|x64.ActiveCfg = Debug|x64
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Debug|x64.Build.0 = Debug|x64
{B6790A97-6995-46B6-AD73-AC5BC4AC76DB}.Release|x64.ActiveCfg = Release|x64
diff --git a/TestDLL/HuntClasses.h b/TestDLL/HuntClasses.h
deleted file mode 100644
index e394cf8..0000000
--- a/TestDLL/HuntClasses.h
+++ /dev/null
@@ -1,965 +0,0 @@
-#pragma once
-
-#include <Windows.h>
-#include <stdarg.h>
-
-#include <string>
-#include <map>
-
-struct ISystem;
-
-
-#define ENTITY_FLAG_LOCAL_PLAYER 0x8000000
-
-#define PENTITYSYSTEM_ISYSTEM_OFFSET 104
-
-template<class _I> class _smart_ptr
-{
-private:
- _I* p;
-public:
- _smart_ptr() : p(NULL) {}
- _smart_ptr(_I* p_)
- {
- p = p_;
- if (p)
- p->AddRef();
- }
- _smart_ptr(const _smart_ptr& p_)
- {
- p = p_.p;
- if (p)
- p->AddRef();
- }
- _smart_ptr(_smart_ptr&& p_) noexcept
- {
- p = p_.p;
- p_.p = nullptr;
- }
- template<typename _Y>
- _smart_ptr(const _smart_ptr<_Y>& p_)
- {
- p = p_.get();
- if (p)
- p->AddRef();
- }
- ~_smart_ptr()
- {
- if (p)
- p->Release();
- }
- operator _I*() const { return p; }
-
- _I& operator*() const { return *p; }
- _I* operator->(void) const { return p; }
- _I* get() const { return p; }
- _smart_ptr& operator=(_I* newp)
- {
- if (newp != this->p)
- {
- _I* oldp = p;
- p = newp;
- if (p)
- p->AddRef();
- if (oldp)
- oldp->Release();
- }
- return *this;
- }
- void reset()
- {
- _smart_ptr<_I>().swap(*this);
- }
- void reset(_I* p)
- {
- if (p != this->p)
- {
- _smart_ptr<_I>(p).swap(*this);
- }
- }
- _smart_ptr& operator=(const _smart_ptr& newp)
- {
- if (newp.p != this->p)
- {
- if (newp.p)
- newp.p->AddRef();
- if (p)
- p->Release();
- p = newp.p;
- }
- return *this;
- }
- _smart_ptr& operator=(_smart_ptr&& p_)
- {
- if (this != &p_)
- {
- if (p)
- p->Release();
- p = p_.p;
- p_.p = nullptr;
- }
- return *this;
- }
- template<typename _Y>
- _smart_ptr& operator=(const _smart_ptr<_Y>& newp)
- {
- _I* const p2 = newp.get();
- if (p2 != this->p)
- {
- if (p2)
- p2->AddRef();
- if (p)
- p->Release();
- p = p2;
- }
- return *this;
- }
- void swap(_smart_ptr<_I>& other)
- {
- std::swap(p, other.p);
- }
- void Assign_NoAddRef(_I* ptr)
- {
- CRY_ASSERT(!p, "Assign_NoAddRef should only be used on a default-constructed, not-yet-assigned smart_ptr instance");
- p = ptr;
- }
- _I* ReleaseOwnership()
- {
- _I* ret = p;
- p = 0;
- return ret;
- }
-};
-
-template<typename T, int N>
-struct INumberArray
-{
-};
-
-template<typename T, int N, typename Final>
-struct INumberVector : INumberArray<T, N>
-{
-};
-
-template<typename F> struct Vec3_tpl
- : INumberVector<F, 3, Vec3_tpl<F>>
-{
-public:
- F x, y, z;
- Vec3_tpl(F vx, F vy, F vz) : x(vx), y(vy), z(vz) {}
-};
-typedef Vec3_tpl<float> Vec3;
-
-template<typename F> struct Ang3_tpl
- : INumberVector<F, 3, Ang3_tpl<F>>
-{
-public:
- F x, y, z;
- Ang3_tpl(F vx, F vy, F vz) : x(vx), y(vy), z(vz) {}
-};
-typedef Ang3_tpl<float> Ang3;
-
-template<typename F> struct Quat_tpl
- : INumberVector<F, 4, Quat_tpl<F>>
-{
-public:
- Vec3_tpl<F> v;
- F w;
-};
-typedef Quat_tpl<float> Quat;
-
-class Matrix34 {
-public:
- float m00;
- float m01;
- float m02;
- float m03;
- float m10;
- float m11;
- float m12;
- float m13;
- float m20;
- float m21;
- float m22;
- float m23;
- Vec3 GetTranslation() const { return Vec3(m03, m13, m23); }
-};
-
-enum EDrawTextFlags : UINT32
-{
- eDrawText_Default,
- eDrawText_Center = 1,
- eDrawText_Right = 2,
- eDrawText_CenterV = 4,
- eDrawText_Bottom = 8,
- eDrawText_2D = 16,
- eDrawText_FixedSize = 32,
- eDrawText_800x600 = 64,
- eDrawText_Monospace = 128,
- eDrawText_Framed = 256,
- eDrawText_DepthTest = 512,
- eDrawText_IgnoreOverscan = 1024,
- eDrawText_LegacyBehavior = 2048
-};
-
-template<class T> struct Color_tpl
-{
- T r, g, b, a;
- Color_tpl() {};
- Color_tpl(T _r, T _g, T _b, T _a) : r(_r), g(_g), b(_b), a(_a) {}
-};
-
-typedef Color_tpl<UINT8> ColorB;
-
-struct SAuxGeomRenderFlags
-{
- UINT32 m_renderFlags;
-};
-
-class IRenderAuxGeom
-{
-public:
- virtual ~IRenderAuxGeom() {}
- virtual SAuxGeomRenderFlags SetRenderFlags(const SAuxGeomRenderFlags& renderFlags) = 0;
- virtual SAuxGeomRenderFlags GetRenderFlags() = 0;
- virtual PVOID GetCamera() const = 0;
-};
-
-struct IEntity
-{
-public:
- virtual ~IEntity() {}
- virtual int GetId() const = 0;
- virtual const PVOID GetGuid() const = 0;
- virtual PVOID GetClass() const = 0;
- virtual void fn_00(void) = 0;
- virtual void fn_01(void) = 0;
- virtual UINT32 GetFlags() const = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) const = 0;
- virtual void fn_05(void) = 0;
- virtual UINT32 GetFlagsExtended() const = 0;
- virtual bool IsInitialized() const = 0;
- virtual bool IsGarbage() const = 0;
- virtual UINT8 GetComponentChangeState() const = 0;
- virtual void fn_06(void) = 0;
- virtual const char* GetName() const = 0;
- virtual std::string GetEntityTextDescription() const = 0;
- virtual void fn_07(void) = 0;
- virtual bool IsLoadedFromLevelFile() const = 0;
- virtual void fn_08(void) = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual int GetChildCount() const = 0;
- virtual IEntity* GetChild(int nIndex) const = 0;
- virtual IEntity* GetParent() const = 0;
- virtual IEntity* GetLocalSimParent() const = 0;
- virtual Matrix34 GetParentAttachPointWorldTM() const = 0;
- virtual bool IsParentAttachmentValid() const = 0;
- virtual void fn_11(void) = 0;
- virtual void fn_12(void) = 0;
- virtual const Matrix34& GetWorldTM() const = 0;
- virtual Matrix34 GetLocalTM() const = 0;
- virtual void fn_13(void) const = 0;
- virtual void fn_14(void) const = 0;
- virtual void fn_15(void) = 0;
- virtual void fn_16(void) = 0;
- virtual void fn_17(void) = 0;
- virtual const Vec3& GetPos() const = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) const = 0;
- virtual void fn_20(void) = 0;
- virtual const Vec3& GetScale() const = 0;
- virtual void fn_21(void) = 0;
- virtual Vec3 GetWorldPos() const = 0;
- virtual Ang3 GetWorldAngles() const = 0;
- virtual Quat GetWorldRotation() const = 0;
- virtual Vec3 GetWorldScale() const = 0;
- //virtual IScriptTable* GetScriptTable() const final;
- //GetScriptTable -> VirtualFuncIndex 64
-};
-
-struct IEntityIt
-{
- virtual ~IEntityIt() {}
- virtual void AddRef() = 0;
- virtual void Release() = 0;
- virtual bool IsEnd() = 0;
- virtual IEntity* Next() = 0;
- virtual IEntity* This() = 0;
- virtual void MoveFirst() = 0;
-};
-
-typedef _smart_ptr<IEntityIt> IEntityItPtr;
-
-struct IEntitySystem
-{
- virtual ~IEntitySystem() {}
- virtual void fn_00(void) = 0;
- virtual void fn_01(void) = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) = 0;
- virtual void fn_05(void) = 0;
- virtual void fn_06(void) = 0;
- virtual void fn_07(void) = 0;
- virtual void fn_08(void) const = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual PVOID GetEntity(void) const = 0;
- virtual PVOID FindEntityByName(void) const = 0;
- virtual void fn_11(void) = 0;
- virtual void fn_12(void) = 0;
- virtual void fn_13(void) = 0;
- virtual UINT32 GetNumEntities(void) const = 0;
- virtual IEntityItPtr GetEntityIterator() = 0;
- virtual void fn_14(void) = 0;
- virtual void fn_15(void) = 0;
- virtual void fn_16(void) = 0;
- virtual void fn_17(void) = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) const = 0;
- virtual void fn_20(void) const = 0;
- virtual void fn_21(void) = 0;
- virtual void fn_22(void) = 0;
- virtual void fn_23(void) = 0;
- virtual void fn_24(void) = 0;
- virtual void fn_25(void) const = 0;
- virtual ISystem* GetSystem() const = 0;
-};
-
-struct IRenderer//: public IRendererCallbackServer
-{
- virtual ~IRenderer() {}
- virtual void fn_00(void) = 0;
- virtual void fn_01(void) = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) = 0;
- virtual void fn_05(void) = 0;
- virtual void fn_06(void) = 0;
- virtual void fn_07(void) = 0;
- virtual void fn_08(void) = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual void fn_11(void) = 0;
- virtual int GetFeatures() = 0;
- virtual void fn_12(void) = 0;
- virtual int GetNumGeomInstances() = 0;
- virtual int GetNumGeomInstanceDrawCalls() = 0;
- virtual int GetCurrentNumberOfDrawCalls() = 0;
- virtual void fn_13(void) = 0;
- virtual void fn_14(void) = 0;
- virtual void fn_15(void) = 0;
- virtual void fn_16(void) = 0;
- virtual void fn_17(void) = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) = 0;
- virtual void fn_20(void) = 0;
- virtual void fn_21(void) = 0;
- virtual void fn_22(void) = 0;
- virtual void fn_23(void) = 0;
- virtual void fn_24(void) = 0;
- virtual void fn_25(void) = 0;
- virtual void fn_26(void) = 0;
- virtual void fn_27(void) = 0;
- virtual void fn_28(void) = 0;
- virtual void fn_29(void) = 0;
- virtual void fn_30(void) = 0;
- virtual void fn_31(void) = 0;
- virtual void fn_32(void) = 0;
- virtual void fn_33(void) = 0;
- virtual void fn_34(void) = 0;
- virtual void fn_35(void) = 0;
- virtual void fn_36(void) = 0;
- virtual void fn_37(void) = 0;
- virtual int GetWhiteTextureId() const = 0;
- virtual void fn_38(void) = 0;
- virtual void fn_39(void) = 0;
- virtual int GetHeight() const = 0;
- virtual int GetWidth() const = 0;
- virtual float GetPixelAspectRatio() const = 0;
- virtual int GetOverlayHeight() const = 0;
- virtual int GetOverlayWidth() const = 0;
- virtual void GetMemoryUsage(PVOID Sizer) = 0;
- virtual void GetBandwidthStats(float* fBandwidthRequested) = 0;
- virtual void fn_40(void) = 0;
- virtual void fn_41(void) = 0;
- virtual void fn_42(void) = 0;
- virtual int GetColorBpp() = 0;
- virtual int GetDepthBpp() = 0;
- virtual int GetStencilBpp() = 0;
- virtual bool IsStereoEnabled() const = 0;
- virtual float GetNearestRangeMax() const = 0;
- virtual bool ProjectToScreen(
- float ptx, float pty, float ptz,
- float* sx, float* sy, float* sz) = 0;
- virtual int UnProject(
- float sx, float sy, float sz,
- float* px, float* py, float* pz,
- const float modelMatrix[16],
- const float projMatrix[16],
- const int viewport[4]) = 0;
- virtual int UnProjectFromScreen(
- float sx, float sy, float sz,
- float* px, float* py, float* pz) = 0;
- virtual void fn_43(void) = 0;
- virtual void fn_44(void) = 0;
- virtual void fn_45(void) = 0;
- virtual void fn_46(void) = 0;
- virtual void fn_47(void) = 0;
- virtual void fn_48(void) = 0;
- virtual void fn_49(void) = 0;
- virtual void fn_50(void) = 0;
- virtual int CurThreadList() = 0;
- virtual void fn_51(void) = 0;
- virtual void fn_52(void) = 0;
- virtual void fn_53(void) = 0;
- virtual void fn_54(void) = 0;
- virtual void fn_55(void) = 0;
- virtual void fn_56(void) = 0;
- virtual void fn_57(void) = 0;
- virtual void fn_58(void) = 0;
- virtual void fn_59(void) = 0;
- virtual void fn_60(void) = 0;
- virtual void fn_61(void) = 0;
- virtual void fn_62(void) = 0;
- virtual void fn_63(void) = 0;
- virtual void fn_64(void) = 0;
- virtual void fn_65(void) = 0;
- virtual void fn_66(void) = 0;
- virtual void fn_67(void) = 0;
- virtual void fn_68(void) = 0;
- virtual void fn_69(void) = 0;
- virtual void fn_70(void) = 0;
- virtual void fn_71(void) = 0;
- virtual void fn_72(void) = 0;
- virtual void fn_73(void) = 0;
- virtual void fn_74(void) = 0;
- virtual void fn_75(void) = 0;
- virtual void fn_76(void) = 0;
- virtual void fn_77(void) = 0;
- virtual void fn_78(void) = 0;
- virtual void fn_79(void) const = 0;
- virtual void fn_80(void) = 0;
- virtual void fn_81(void) = 0;
- virtual void fn_82(void) = 0;
- virtual void fn_83(void) = 0;
- virtual void fn_84(void) = 0;
- virtual void fn_85(void) = 0;
- virtual void fn_86(void) = 0;
- virtual void fn_87(void) = 0;
- virtual void fn_88(void) = 0;
- virtual void fn_89(void) = 0;
- virtual void fn_90(void) = 0;
- virtual void fn_91(void) = 0;
- virtual void fn_92(void) = 0;
- virtual void fn_93(void) = 0;
- virtual void fn_94(void) = 0;
- virtual void fn_95(void) = 0;
- virtual void fn_96(void) = 0;
- virtual void fn_97(void) = 0;
- virtual void fn_98(void) = 0;
- virtual void fn_99(void) = 0;
- virtual void fn_100(void) = 0;
- virtual void fn_101(void) = 0;
- virtual void fn_102(void) = 0;
- virtual void fn_103(void) = 0;
- virtual void fn_104(void) const = 0;
- virtual void fn_105(void) = 0;
- virtual void fn_106(void) = 0;
- virtual void fn_107(void) = 0;
- virtual void fn_108(void) = 0;
- virtual void fn_109(void) = 0;
- virtual void fn_110(void) = 0;
- virtual void fn_111(void) = 0;
- virtual void fn_112(void) = 0;
- virtual void fn_113(void) = 0;
- virtual void fn_114(void) = 0;
- virtual void fn_115(void) = 0;
- virtual void fn_116(void) = 0;
- virtual void fn_117(void) = 0;
- virtual void fn_118(void) = 0;
- virtual void fn_119(void) = 0;
- virtual void fn_120(void) = 0;
- virtual void fn_121(void) = 0;
- virtual int GetPolyCount() = 0;
- virtual void fn_122(void) = 0;
- virtual void fn_123(void) = 0;
- virtual void fn_124(void) = 0;
- virtual int GetFrameID(bool bIncludeRecursiveCalls = true) = 0;
- virtual void fn_125(void) = 0;
- virtual float ScaleCoordX(float value) const = 0;
- virtual float ScaleCoordY(float value) const = 0;
- virtual void ScaleCoord(float& x, float& y) const = 0;
- virtual void fn_126(void) = 0;;
- virtual void fn_127(void) = 0;
- virtual void fn_128(void) = 0;
- virtual void fn_129(void) = 0;
- virtual IRenderAuxGeom* GetIRenderAuxGeom() = 0;
- virtual IRenderAuxGeom* GetOrCreateIRenderAuxGeom(const PVOID pCustomCamera = nullptr) = 0;
- virtual void DeleteAuxGeom(IRenderAuxGeom* pRenderAuxGeom) = 0;
- virtual void SubmitAuxGeom(IRenderAuxGeom* pRenderAuxGeom, bool merge = true) = 0;
-};
-
-/* generated with: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe" /Zp2 /c /d1reportSingleClassLayoutIActor C:\Users\segfault\Source\Repos\CRYENGINE\Code\CryEngine\CryAction\ActorSystem.cpp /I C:\Users\segfault\Source\Repos\CRYENGINE\Code\CryEngine\CryCommon /I "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared" /I "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um" /I "C:\Users\segfault\Source\Repos\CRYENGINE\Code\CryEngine\CryAction" */
-struct IActor
-{
- virtual void fn_00(void) = 0;
- virtual ~IActor(void) = 0;
- virtual void fn_01(void) = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) = 0;
- virtual void fn_05(void) = 0;
- virtual void fn_06(void) = 0;
- virtual void fn_07(void) = 0;
- virtual void fn_08(void) = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual void fn_11(void) = 0;
- virtual void fn_12(void) = 0;
- virtual void fn_13(void) = 0;
- virtual void fn_14(void) = 0;
- virtual void fn_15(void) = 0;
- virtual void fn_16(void) = 0;
- virtual void fn_17(void) = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) = 0;
- virtual void fn_20(void) = 0;
- virtual void fn_21(void) = 0;
- virtual void fn_22(void) = 0;
- virtual void fn_23(void) = 0;
- virtual void fn_24(void) = 0;
- virtual void fn_25(void) = 0;
- virtual void fn_26(void) = 0;
- virtual void fn_27(void) = 0;
- virtual void fn_28(void) = 0;
- virtual void fn_29(void) = 0;
- virtual void fn_30(void) = 0;
- virtual void fn_31(void) = 0;
- virtual void fn_32(void) = 0;
- virtual void fn_33(void) = 0;
- virtual void IActor_SetChannelId(void) = 0;
- virtual void fn_34(void) = 0;
- virtual void fn_35(void) = 0;
- virtual void fn_36(void) = 0;
-
- virtual void SetHealth(float health) = 0;
- virtual float GetHealth() const = 0;
- virtual int GetHealthAsRoundedPercentage() const = 0;
- virtual void SetMaxHealth(float maxHealth) = 0;
- virtual float GetMaxHealth() const = 0;
- virtual int GetArmor() const = 0;
- virtual int GetMaxArmor() const = 0;
- virtual int GetTeamId() const = 0;
- virtual bool IsFallen() const = 0;
- virtual bool IsDead() const = 0;
- virtual int IsGod() = 0;
- virtual void Fall(Vec3 hitPos = Vec3(0, 0, 0)) = 0;
- virtual bool AllowLandingBob() = 0;
- virtual void PlayAction(const char* action, const char* extension, bool looping = false) = 0;
- virtual PVOID GetAnimationGraphState() = 0;
- virtual void ResetAnimationState() = 0;
- virtual void CreateScriptEvent(const char* event, float value, const char* str = NULL) = 0;
- virtual bool BecomeAggressiveToAgent(int entityID) = 0;
- virtual void SetFacialAlertnessLevel(int alertness) = 0;
- virtual void RequestFacialExpression(const char* pExpressionName = NULL, float* sequenceLength = NULL) = 0;
- virtual void PrecacheFacialExpression(const char* pExpressionName) = 0;
- virtual int GetGrabbedEntityId() const = 0;
- virtual void HideAllAttachments(bool isHiding) = 0;
- virtual void SetIKPos(const char* pLimbName, const Vec3& goalPos, int priority) = 0;
- virtual void SetViewInVehicle(PVOID viewRotation) = 0;
- virtual void SetViewRotation(PVOID rotation) = 0;
- virtual PVOID GetViewRotation() const = 0;
- virtual bool IsFriendlyEntity(int entityId, bool bUsingAIIgnorePlayer = true) const = 0;
- virtual Vec3 GetLocalEyePos() const = 0;
- virtual void CameraShake(float angle, float shift, float duration, float frequency, Vec3 pos, int ID, const char* source = "") = 0;
- virtual PVOID GetHolsteredItem() const = 0;
- virtual void HolsterItem(bool holster, bool playSelect = true, float selectSpeedBias = 1.0f, bool hideLeftHandObject = true) = 0;
- virtual PVOID GetCurrentItem(bool includeVehicle = false) const = 0;
- virtual bool DropItem(int itemId, float impulseScale = 1.0f, bool selectNext = true, bool byDeath = false) = 0;
- virtual PVOID GetInventory() const = 0;
- virtual void NotifyCurrentItemChanged(PVOID newItem) = 0;
- virtual PVOID GetMovementController() const = 0;
- virtual IEntity* LinkToVehicle(int vehicleId) = 0;
- virtual IEntity* GetLinkedEntity() const = 0;
- virtual UINT8 GetSpectatorMode() const = 0;
- virtual bool IsThirdPerson() const = 0;
- virtual void ToggleThirdPerson() = 0;
- virtual bool IsStillWaitingOnServerUseResponse() const { return false; }
- virtual void SetStillWaitingOnServerUseResponse(bool waiting) { UNREFERENCED_PARAMETER(waiting); }
- virtual void SetFlyMode(UINT8 flyMode) { UNREFERENCED_PARAMETER(flyMode); };
- virtual UINT8 GetFlyMode() const { return 0; };
- virtual void Release() = 0;
- virtual bool IsPlayer() const = 0;
- virtual bool IsClient() const = 0;
- virtual bool IsMigrating() const = 0;
- virtual void SetMigrating(bool isMigrating) = 0;
- virtual void InitLocalPlayer() = 0;
- virtual const char* GetActorClassName() const = 0;
- virtual PVOID GetActorClass() const = 0;
- virtual const char* GetEntityClassName() const = 0;
- virtual void SerializeLevelToLevel(PVOID ser) = 0;
- virtual void ProcessEvent(const PVOID event) = 0;
- virtual PVOID GetAnimatedCharacter() = 0;
- virtual const PVOID GetAnimatedCharacter() const = 0;
- virtual void PlayExactPositioningAnimation(const char* sAnimationName, bool bSignal, const Vec3& vPosition, const Vec3& vDirection, float startWidth, float startArcAngle, float directionTolerance) = 0;
- virtual void CancelExactPositioningAnimation() = 0;
- virtual void PlayAnimation(const char* sAnimationName, bool bSignal) = 0;
- virtual bool Respawn() { return false; }
- virtual void ResetToSpawnLocation() {}
- virtual bool CanBreakGlass() const { return false; }
- virtual bool MustBreakGlass() const { return false; }
- virtual void EnableTimeDemo(bool bTimeDemo) = 0;
- void SetChannelId(UINT16 id) { UNREFERENCED_PARAMETER(id); }
- virtual void SwitchDemoModeSpectator(bool activate) = 0;
- virtual void SetCustomHead(const char* customHead) { UNREFERENCED_PARAMETER(customHead); };
- virtual PVOID GetLinkedVehicle() const = 0;
- virtual bool GetValidPositionNearby(const Vec3& proposedPosition, Vec3& adjustedPosition) const = 0;
- virtual void SetExpectedPhysicsPos(const Vec3& expectedPosition) = 0;
- virtual void OnAIProxyEnabled(bool enabled) = 0;
- virtual void OnReturnedToPool() = 0;
- virtual void OnPreparedFromPool() = 0;
- virtual void OnShiftWorld() {};
- virtual void MountedGunControllerEnabled(bool val) { UNREFERENCED_PARAMETER(val); };
- virtual bool MountedGunControllerEnabled() const { return false; }
- virtual bool ShouldMuteWeaponSoundStimulus() const = 0;
- virtual int GetPhysicalSkipEntities(PVOID pSkipList, const int maxSkipSize) const
- {
- UNREFERENCED_PARAMETER(pSkipList);
- UNREFERENCED_PARAMETER(maxSkipSize);
- return 0;
- }
- virtual void OnReused(IEntity* pEntity, PVOID params) = 0;
- virtual bool IsInteracting() const = 0;
-};
-
-struct IActorIterator
-{
- virtual ~IActorIterator() {}
- virtual size_t Count() = 0;
- virtual IActor* Next() = 0;
- virtual void AddRef() = 0;
- virtual void Release() = 0;
-};
-typedef _smart_ptr<IActorIterator> IActorIteratorPtr;
-
-typedef std::map<int, IActor*> TActorMap;
-
-struct IActorSystem
-{
- virtual ~IActorSystem() {}
- virtual void Reset() = 0;
- virtual void Reload() = 0;
- virtual IActor* GetActor(int entityId) = 0;
- virtual IActor* GetActorByChannelId(UINT16 channelId) = 0;
- virtual IActor* fn_00(void) = 0;
- virtual int GetActorCount() const = 0;
- virtual IActorIteratorPtr CreateActorIterator() = 0;
- virtual void SetDemoPlaybackMappedOriginalServerPlayer(int id) = 0;
- virtual int GetDemoPlaybackMappedOriginalServerPlayer() const = 0;
- virtual void SwitchDemoSpectator(int id = 0) = 0;
- virtual IActor* GetCurrentDemoSpectator() = 0;
- virtual IActor* GetOriginalDemoSpectator() = 0;
- virtual void AddActor(int entityId, IActor* pActor) = 0;
- virtual void RemoveActor(int entityId) = 0;
- virtual void Scan(const char* folderName) = 0;
- virtual bool fn_01(void) = 0;
- virtual const PVOID GetActorParams(const char* actorClass) const = 0;
- virtual bool IsActorClass(PVOID pClass) const = 0;
-};
-
-struct IGameFramework
-{
- virtual void fn_00(void) = 0;
- virtual void fn_01(void) = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) = 0;
- virtual void fn_05(void) = 0;
-
- virtual ~IGameFramework() {}
- virtual void fn_06(void) = 0;
- virtual void fn_07(void) = 0;
- virtual void fn_08(void) = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual void fn_11(void) = 0;
- virtual void fn_12(void) = 0;
- virtual void fn_13(void) = 0;
- virtual void fn_14(void) = 0;
- virtual void fn_15(void) = 0;
- virtual void fn_16(void) = 0;
- virtual bool IsGamePaused() = 0;
- virtual bool IsGameStarted() = 0;
- virtual ISystem* GetISystem() = 0;
- virtual void fn_17(void) = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) = 0;
- virtual void fn_20(void) = 0;
- virtual void fn_21(void) = 0;
- virtual IActorSystem* GetIActorSystem(void) = 0;
- virtual void fn_23(void) = 0;
- virtual void fn_24(void) = 0;
- virtual void fn_25(void) = 0;
- virtual void fn_26(void) = 0;
- virtual void fn_27(void) = 0;
- virtual void fn_28(void) = 0;
- virtual void fn_29(void) = 0;
- virtual void fn_30(void) = 0;
- virtual void fn_31(void) = 0;
- virtual void fn_32(void) = 0;
- virtual void fn_33(void) = 0;
- virtual void fn_34(void) = 0;
- virtual void fn_35(void) = 0;
- virtual void fn_36(void) = 0;
- virtual void fn_37(void) = 0;
- virtual void fn_38(void) = 0;
- virtual void fn_39(void) = 0;
- virtual void fn_40(void) = 0;
- virtual void fn_41(void) = 0;
- virtual void fn_42(void) = 0;
- virtual void fn_43(void) = 0;
- virtual void fn_44(void) = 0;
- virtual void fn_45(void) = 0;
- virtual void fn_46(void) = 0;
- virtual void fn_47(void) = 0;
- virtual void fn_48(void) = 0;
- virtual void fn_49(void) = 0;
- virtual void fn_50(void) = 0;
- virtual void fn_51(void) = 0;
- virtual void fn_52(void) = 0;
- virtual void fn_53(void) = 0;
- virtual void fn_54(void) = 0;
- virtual void fn_55(void) = 0;
- virtual void fn_56(void) = 0;
- virtual void fn_57(void) = 0;
- virtual void fn_58(void) = 0;
- virtual void fn_59(void) = 0;
- virtual void fn_60(void) = 0;
- virtual void fn_61(void) = 0;
- virtual void fn_62(void) = 0;
- virtual void fn_62_1(void) = 0;
- virtual void fn_63(void) = 0;
- virtual IActor* GetClientActor() const = 0;
- virtual int GetClientActorId() const = 0;
- virtual IEntity* GetClientEntity() const = 0;
- virtual int GetClientEntityId() const = 0;
- virtual PVOID GetClientChannel() const = 0;
- virtual void fn_64(void) = 0;
- virtual void fn_65(void) = 0;
- virtual void fn_66(void) = 0;
- virtual void fn_67(void) = 0;
- virtual void fn_68(void) = 0;
- virtual void fn_69(void) = 0;
- virtual void fn_70(void) = 0;
- virtual void fn_71(void) = 0;
- virtual void fn_72(void) = 0;
- virtual void fn_73(void) = 0;
- virtual void fn_74(void) = 0;
- virtual void fn_75(void) = 0;
- virtual void fn_76(void) = 0;
- virtual void fn_77(void) = 0;
- virtual void fn_78(void) = 0;
- virtual void fn_79(void) = 0;
- virtual void fn_80(void) = 0;
- virtual void fn_81(void) = 0;
- virtual UINT8 IsEditing() = 0;
- virtual UINT8 IsInLevelLoad() = 0;
- virtual UINT8 IsLoadingSaveGame() = 0;
- virtual UINT8 IsInTimeDemo() = 0;
- virtual UINT8 IsTimeDemoRecording() = 0;
- virtual void fn_82(void) = 0;
- virtual void fn_83(void) = 0;
- virtual UINT8 CanSave() = 0;
- virtual UINT8 CanLoad() = 0;
- virtual void fn_84(void) = 0;
- virtual UINT8 CanCheat() = 0;
- virtual const char* GetLevelName() = 0;
- virtual void GetAbsLevelPath(char* pPathBuffer, UINT32 pathBufferSize) = 0;
- virtual PVOID GetIPersistantDebug() = 0;
- virtual void fn_85(void) = 0;
- virtual void fn_86(void) = 0;
- virtual void fn_87(void) = 0;
- virtual void fn_88(void) = 0;
- virtual void fn_89(void) = 0;
- virtual void fn_90(void) = 0;
- virtual void fn_91(void) = 0;
- virtual void fn_92(void) = 0;
- virtual void fn_93(void) = 0;
- virtual const char* GetGameGUID() = 0;
-};
-
-struct SSystemGlobalEnvironment {
- UINT64 ukn_00;
- UINT64 ukn_01;
- UINT64 ukn_02;
- UINT64 ukn_03;
- UINT64 ukn_04;
- UINT64 ukn_05;
- UINT64 ukn_06;
- UINT64 ukn_07;
- UINT64 ukn_08;
- UINT64 ukn_09;
- UINT64 ukn_10;
- UINT64 ukn_11;
- UINT64 ukn_12;
- UINT64 ukn_13;
- UINT64 ukn_14;
- UINT64 ukn_15;
- UINT64 ukn_16;
- UINT64 ukn_17;
- IGameFramework* pGameFramework;
- UINT64 ukn_18;
- IEntitySystem* pEntitySystem;
- UINT64 ukn_19;
- UINT64 ukn_20;
- ISystem* pSystem;
- UINT64 ukn_21;
- UINT64 ukn_22;
- UINT64 ukn_23;
- UINT64 ukn_24;
- UINT64 ukn_25;
- UINT64 ukn_26;
- IRenderer* pRenderer;
- IRenderAuxGeom* pAuxGeomRenderer; /* NullAuxGeomRenderer */
- UINT64 ukn_27;
- UINT64 ukn_28;
- UINT64 ukn_29;
- UINT64 ukn_30;
- UINT64 ukn_31;
- UINT64 ukn_32;
- UINT64 ukn_33;
- UINT64 ukn_34;
- UINT64 ukn_35;
- UINT64 ukn_36;
- UINT64 ukn_37;
- UINT64 ukn_38;
- UINT64 ukn_39;
- UINT64 ukn_40;
- UINT64 ukn_41;
- UINT64 ukn_42;
- UINT64 ukn_43;
- UINT64 ukn_44;
- UINT64 ukn_45;
- UINT64 ukn_46;
- UINT32 mMainThreadId;
- UINT32 nMainFrameID;
- LPCSTR szCmdLine;
- CHAR szDebugStatus[128];
- BOOL bServer;
- BOOL bMultiplayer;
- BOOL bHostMigrating;
-};
-
-struct ISystem
-{
- virtual ~ISystem() {}
- virtual void fn_00(void) const = 0;
- virtual SSystemGlobalEnvironment* GetGlobalEnvironment() = 0;
- virtual void fn_01(void) const = 0;
- virtual const char* GetRootFolder() const = 0;
- virtual void fn_02(void) = 0;
- virtual void fn_03(void) = 0;
- virtual void fn_04(void) = 0;
- virtual void fn_05(void) = 0;
- virtual void fn_06(void) = 0;
- virtual void fn_07(void) = 0;
- virtual void fn_08(void) = 0;
- virtual void fn_09(void) = 0;
- virtual void fn_10(void) = 0;
- virtual void fn_11(void) = 0;
- virtual UINT32 GetUsedMemory() = 0;
- virtual const char* GetUserName() = 0;
- virtual UINT32 GetCPUFlags() = 0;
- virtual int GetLogicalCPUCount() = 0;
- virtual void fn_12(void) = 0;
- virtual void Quit() = 0;
- virtual void Relaunch(bool bRelaunch) = 0;
- virtual UINT32 IsQuitting() const = 0;
- virtual void fn_13(void) = 0;
- virtual void fn_14(void) = 0;
- virtual void fn_15(void) = 0;
- virtual UINT32 IsRelaunch() const = 0;
- virtual void fn_16(void) = 0;
- virtual void fn_17(void) = 0;
- virtual void fn_18(void) = 0;
- virtual void fn_19(void) = 0;
- virtual void fn_20(void) = 0;
- virtual void fn_21(void) = 0;
- virtual void fn_22(void) = 0;
- virtual void fn_23(void) = 0;
- virtual void fn_24(void) = 0;
- virtual void fn_25(void) = 0;
- virtual void fn_26(void) = 0;
- virtual void fn_27(void) = 0;
- virtual void fn_28(void) = 0;
- virtual void fn_29(void) = 0;
- virtual void fn_30(void) = 0;
- virtual void fn_31(void) = 0;
- virtual void fn_32(void) = 0;
- virtual void fn_33(void) = 0;
- virtual void fn_34(void) = 0;
- virtual void fn_35(void) = 0;
- virtual void fn_36(void) = 0;
- virtual void fn_37(void) = 0;
- virtual void fn_38(void) = 0;
- virtual void fn_39(void) = 0;
- virtual void fn_40(void) = 0;
- virtual void fn_41(void) = 0;
- virtual void fn_42(void) = 0;
- virtual void fn_43(void) = 0;
- virtual void fn_44(void) = 0;
- virtual void fn_45(void) = 0;
- virtual void fn_46(void) = 0;
- virtual void fn_47(void) = 0;
- virtual void fn_48(void) = 0;
- virtual IEntitySystem* GetIEntitySystem() = 0;
- virtual void fn_50(void) = 0;
- virtual void fn_51(void) = 0;
- virtual void fn_52(void) = 0;
- virtual void fn_53(void) = 0;
- virtual void fn_54(void) = 0;
- virtual void fn_55(void) = 0;
- virtual void fn_56(void) = 0;
- virtual void fn_57(void) = 0;
- virtual void fn_58(void) = 0;
- virtual void fn_59(void) = 0;
- virtual void fn_60(void) = 0;
- virtual void fn_61(void) = 0;
- virtual void fn_62(void) = 0;
- virtual void fn_63(void) = 0;
- virtual void fn_64(void) = 0;
- virtual void fn_65(void) = 0;
- virtual PVOID GetHWND() = 0;
- virtual PVOID GetActiveHWND() = 0;
- virtual void fn_66(void) = 0;
- virtual IRenderer* GetIRenderer() = 0;
-};
-
-static inline bool HProjectToScreen(IRenderer* pIRenderer, float sx, float sy, float sz, float* ox, float* oy, float* oz)
-{
- return pIRenderer->ProjectToScreen(sx, sy, sz, ox, oy, oz);
-}
-
-static inline bool WorldToScreen(SSystemGlobalEnvironment* globalEnv, Vec3 vEntPos, Vec3 &vOut)
-{
- IRenderer* Renderer = globalEnv->pRenderer;
- HProjectToScreen(Renderer, vEntPos.x, vEntPos.y, vEntPos.z,
- &vOut.x, &vOut.y, &vOut.z);
-
- vOut.x *= (Renderer->GetWidth() / 100.0f);
- vOut.y *= (Renderer->GetHeight() / 100.0f);
- vOut.z *= 1.0f;
-
- return ((vOut.z < 1.0f) && (vOut.x > 0) && (vOut.x < (float)Renderer->GetWidth()) && (vOut.y > 0) && (vOut.y < (float)Renderer->GetHeight()));
-}
-
-
-struct HuntCtx {
- IEntitySystem ** ppEntSys;
- SSystemGlobalEnvironment ** ppGlobalEnv;
- IGameFramework ** ppCCryAction;
-}; \ No newline at end of file
diff --git a/TestDLL/TestDLL.vcxproj b/TestDLL/TestDLL.vcxproj
index 107db70..46597ab 100644
--- a/TestDLL/TestDLL.vcxproj
+++ b/TestDLL/TestDLL.vcxproj
@@ -31,6 +31,7 @@
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
+ <SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
@@ -38,6 +39,7 @@
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
+ <SpectreMitigation>false</SpectreMitigation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
@@ -95,13 +97,13 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
- <AdditionalIncludeDirectories>$(SolutionDir)..\GdiRadar\GdiRadarLib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>$(SolutionDir)..\GdiRadar\x64\Debug;$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>kernel32.lib;user32.lib;GdiRadarLib.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalDependencies>kernel32.lib;user32.lib</AdditionalDependencies>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<EntryPointSymbol>LibEntry</EntryPointSymbol>
</Link>
@@ -111,9 +113,10 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
- <SDLCheck>true</SDLCheck>
+ <SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;TESTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -127,9 +130,10 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
+ <SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;TESTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
+ <BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -151,21 +155,20 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <AdditionalIncludeDirectories>$(SolutionDir)..\GdiRadar\GdiRadarLib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>$(SolutionDir)..\GdiRadar\x64\Release-Verbose;$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <AdditionalDependencies>kernel32.lib;user32.lib;GdiRadarLib.lib</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(VCToolsInstallDir)lib\x64;$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalDependencies>kernel32.lib;user32.lib</AdditionalDependencies>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<EntryPointSymbol>LibEntry</EntryPointSymbol>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
- <ClInclude Include="HuntClasses.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
diff --git a/TestDLL/TestDLL.vcxproj.filters b/TestDLL/TestDLL.vcxproj.filters
index 7ebfcff..a11e11a 100644
--- a/TestDLL/TestDLL.vcxproj.filters
+++ b/TestDLL/TestDLL.vcxproj.filters
@@ -21,9 +21,6 @@
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
- <ClInclude Include="HuntClasses.h">
- <Filter>Header Files</Filter>
- </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
diff --git a/TestDLL/dllmain.cpp b/TestDLL/dllmain.cpp
index 63d810f..691c389 100644
--- a/TestDLL/dllmain.cpp
+++ b/TestDLL/dllmain.cpp
@@ -1,222 +1,39 @@
#include "stdafx.h"
-#include "HuntClasses.h"
#include <vector>
#include <string>
#include <sstream>
#include <array>
-#include <GdiRadar.h>
#include <Windows.h>
EXTERN_C BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);
-static gdi_radar_context * ctx = NULL;
-static UINT64 pEntSys = 0x0;
-static IEntitySystem * iEnt = NULL;
-
-
#define SHOW_WARNING(format, ...) \
do { char errbuf[128]; \
snprintf(errbuf, sizeof errbuf, "WARNING: " # format, __VA_ARGS__); \
MessageBoxA(NULL, errbuf, "Hunted WARNING", MB_OK | MB_ICONINFORMATION); \
} while (0);
-static bool ConfigureAndInitGDI(void)
-{
- SetWindowTextA(GetConsoleWindow(), "Hunted");
-
- gdi_radar_config cfg = {};
- cfg.className = L"HR";
- cfg.windowName = L"HRWND";
- cfg.minimumUpdateTime = 0.20f;
- cfg.maximumRedrawFails = 5;
- cfg.reservedEntities = 16;
- cfg.drawAngles = true;
-
- printf("Configure.\n");
- ctx = gdi_radar_configure(&cfg, gdi_radar_get_fake_hinstance());
- if (!ctx)
- {
- printf("Configure failed.\n");
- return false;
- }
-
- gdi_radar_set_game_dimensions(ctx, 1020.0f, 1020.0f);
-
- if (!gdi_radar_init(ctx))
- {
- printf("Init failed.\n");
- return false;
- }
-
- return true;
-}
-
-static bool InitAndCheckPtr(struct HuntCtx * HuntCtx)
-{
- pEntSys = *(UINT64*)(HuntCtx->ppEntSys);
- iEnt = *HuntCtx->ppEntSys;
-
- if (iEnt->GetNumEntities() > 65535) {
- SHOW_WARNING("Invalid number of Entities : VALUE[%u] > 65535\n",
- iEnt->GetNumEntities());
- return false;
- }
- if ((PVOID)(*(UINT64*)(pEntSys + PENTITYSYSTEM_ISYSTEM_OFFSET)) != iEnt->GetSystem()) {
- SHOW_WARNING("ISystem interface instance not equal : MEMBER[%p] != GETSYSTEM[%p]\n",
- (PVOID)(*(UINT64*)(pEntSys + PENTITYSYSTEM_ISYSTEM_OFFSET)), iEnt->GetSystem());
- return false;
- }
- if (iEnt->GetSystem()->GetLogicalCPUCount() < 1 ||
- iEnt->GetSystem()->GetLogicalCPUCount() > 32)
- {
- SHOW_WARNING("GetLogicalCPUCount returned an invalid value: %u",
- iEnt->GetSystem()->GetLogicalCPUCount());
- return false;
- }
- if (iEnt->GetSystem()->IsQuitting() ||
- iEnt->GetSystem()->IsRelaunch())
- {
- SHOW_WARNING("IsQuitting/IsRelaunch returned invalid values: %u/%u",
- iEnt->GetSystem()->IsQuitting(), iEnt->GetSystem()->IsRelaunch());
- return false;
- }
- if (iEnt->GetSystem()->GetHWND() > (PVOID)((ULONG_PTR)0xFFFFFFFF))
- {
- SHOW_WARNING("GetHWND returned an invalid window handle: %p",
- iEnt->GetSystem()->GetHWND());
- return false;
- }
- if ((PVOID)pEntSys != iEnt->GetSystem()->GetIEntitySystem()) {
- SHOW_WARNING("IEntitySystem interface instance not equal: GLOBAL[%p] != GETENTITYSYSTEM[%p]\n",
- (PVOID)pEntSys, iEnt->GetSystem()->GetIEntitySystem());
- return false;
- }
- if ((PVOID)pEntSys != iEnt->GetSystem()->GetGlobalEnvironment()->pEntitySystem) {
- SHOW_WARNING("IEntitySystem interface instance not equal: GLOBAL[%p] != pEntitySystem[%p]\n",
- (PVOID)pEntSys, iEnt->GetSystem()->GetGlobalEnvironment()->pEntitySystem);
- return false;
- }
- if (*HuntCtx->ppGlobalEnv != iEnt->GetSystem()->GetGlobalEnvironment()) {
- SHOW_WARNING("GlobalEnvironment signature not equals GetGlobalEnvironment() instance: ppGlobalEnv[%p] != GetGlobalEnvironment[%p]\n",
- (PVOID)pEntSys, iEnt->GetSystem()->GetGlobalEnvironment()->pEntitySystem);
- return false;
- }
- if ((*HuntCtx->ppCCryAction)->GetIActorSystem() != iEnt->GetSystem()->GetGlobalEnvironment()->pGameFramework->GetIActorSystem()) {
- SHOW_WARNING("CCryAction->GetIActorSystem() signature not equals GameFramework->GetIActorSystem() instance: ppCCryAction[%p] != pGameFramework[%p]\n",
- (*HuntCtx->ppCCryAction)->GetIActorSystem(), iEnt->GetSystem()->GetGlobalEnvironment()->pGameFramework->GetIActorSystem());
- return false;
- }
- if (iEnt->GetSystem() != iEnt->GetSystem()->GetGlobalEnvironment()->pGameFramework->GetISystem()) {
- SHOW_WARNING("ISystem interface instance not equal: IEntitySystem[%p] != pGameFramework[%p]\n",
- iEnt->GetSystem(), iEnt->GetSystem()->GetGlobalEnvironment()->pGameFramework->GetISystem());
- return false;
- }
- if (iEnt->GetSystem() != iEnt->GetSystem()->GetGlobalEnvironment()->pSystem) {
- SHOW_WARNING("ISystem interface instance not equal: IEntitySystem[%p] != pSystem[%p]\n",
- iEnt->GetSystem(), iEnt->GetSystem()->GetGlobalEnvironment()->pSystem);
- return false;
- }
- if (iEnt->GetSystem()->GetGlobalEnvironment()->pRenderer != iEnt->GetSystem()->GetIRenderer()) {
- SHOW_WARNING("ISystem interface instance not equal: IEntitySystem[%p] != pSystem[%p]\n",
- iEnt->GetSystem(), iEnt->GetSystem()->GetGlobalEnvironment()->pSystem);
- return false;
- }
-
- return true;
-}
-void APIENTRY LibEntry(struct HuntCtx * HuntCtx)
+/* function signature depends on used shellcode */
+void APIENTRY LibEntry(/* void * arg */)
{
static bool firstEntry = true;
- if (!HuntCtx || !HuntCtx->ppEntSys || !HuntCtx->ppGlobalEnv || !HuntCtx->ppCCryAction)
- return;
-
if (firstEntry) {
firstEntry = false;
HINSTANCE addr = GetModuleHandle(NULL);
_CRT_INIT(addr, DLL_PROCESS_ATTACH, NULL);
- if (!InitAndCheckPtr(HuntCtx))
- {
- return;
- }
-
AllocConsole();
FILE * conout = NULL;
freopen_s(&conout, "CONOUT$", "w", stdout);
printf("Welcome.\n");
- printf("[thread id: %d][used memory: %u][cpu flags: %u][user name: %s][cpu count: %d]\n",
- GetCurrentThreadId(),
- iEnt->GetSystem()->GetUsedMemory(),
- iEnt->GetSystem()->GetCPUFlags(),
- iEnt->GetSystem()->GetUserName(),
- iEnt->GetSystem()->GetLogicalCPUCount());
-
- if (!ConfigureAndInitGDI()) {
- return;
- }
- }
-
- if (!iEnt || iEnt->GetSystem()->GetGlobalEnvironment()->pGameFramework->IsInLevelLoad()) {
- return;
- }
- if (!gdi_radar_check_if_redraw_necessary(ctx)) {
- return;
- }
-
- gdi_radar_clear_entities(ctx);
-
- SIZE_T i = 1;
- IEntityItPtr pEntIt = iEnt->GetEntityIterator();
- while (IEntity* pEnt = pEntIt->Next()) {
- if (!pEnt->IsInitialized() || pEnt->IsGarbage()) {
- continue;
- }
- const char *name = pEnt->GetName();
- if (strlen(name) < 4) {
- continue;
- }
- if (name[0] != 'H' || name[1] != 'u' || name[2] != 'n' || name[3] != 't') {
- continue;
- }
-
- enum entity_color entCol = entity_color::EC_RED;
- if (pEnt->GetFlags() & ENTITY_FLAG_LOCAL_PLAYER) {
- entCol = entity_color::EC_BLUE;
- }
-
- Vec3 entPos = pEnt->GetPos();
- entPos.x -= 520.0f;
- entPos.y -= 520.0f;
- entPos.y = 1020.0f - entPos.y;
- float entAngle = pEnt->GetWorldAngles().z;
- entAngle *= -1.0f; /* inverse */
- entAngle -= 1.5707963267948966192313216916398f; /* pi/2 == 90deg */
- struct entity radar_entity{
- (int)entPos.x, (int)entPos.y, entAngle,
- (entCol == entity_color::EC_BLUE ? 60 : 0),
- entCol, "test"
- };
- gdi_radar_add_entity(ctx, &radar_entity);
-
- i++;
- }
-
- static UINT64 redraw_retry = 0;
- if (!gdi_radar_redraw_if_necessary(ctx) &&
- ((++redraw_retry) % 250 == 0))
- {
- printf("Reint (redraw failed).\n");
- gdi_radar_close_and_cleanup(&ctx);
- ConfigureAndInitGDI();
- return;
}
- gdi_radar_process_window_events_nonblocking(ctx);
+ /* ... */
} \ No newline at end of file