Переглянути джерело

inital commit of the tester

master
aaaaaa aaaaaaa 7 роки тому
джерело
коміт
3d1dddba12
9 змінених файлів з 136 додано та 4 видалено
  1. +23
    -0
      hook_tests.sln
  2. +1
    -1
      test_cases/main.cpp
  3. +17
    -0
      tester/abstracthook.h
  4. +17
    -2
      tester/main.cpp
  5. +28
    -0
      tester/mhook.cpp
  6. +11
    -0
      tester/mhook.h
  7. +14
    -1
      tester/tester.vcxproj
  8. +21
    -0
      tester/tester.vcxproj.filters
  9. +4
    -0
      tester/typedefs.h

+ 23
- 0
hook_tests.sln Переглянути файл

@@ -6,6 +6,13 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cases", "test_cases\test_cases.vcxproj", "{8C444ABC-D25C-4B44-8F27-081B464D9AE4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tester", "tester\tester.vcxproj", "{8182D1BA-E651-4668-9EC1-A3023AAFD5AC}"
ProjectSection(ProjectDependencies) = postProject
{8C444ABC-D25C-4B44-8F27-081B464D9AE4} = {8C444ABC-D25C-4B44-8F27-081B464D9AE4}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mhook-test", "third_party\mhook\mhook-test.vcxproj", "{0E055CAF-C68B-42CB-A302-F775CA5A917F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolyHook", "third_party\poly\PolyHook\PolyHook.vcxproj", "{64269F60-A538-4327-82EE-AB4BF4766CE9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -31,6 +38,22 @@ Global
{8182D1BA-E651-4668-9EC1-A3023AAFD5AC}.Release|x64.Build.0 = Release|x64
{8182D1BA-E651-4668-9EC1-A3023AAFD5AC}.Release|x86.ActiveCfg = Release|Win32
{8182D1BA-E651-4668-9EC1-A3023AAFD5AC}.Release|x86.Build.0 = Release|Win32
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Debug|x64.ActiveCfg = Debug|x64
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Debug|x64.Build.0 = Debug|x64
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Debug|x86.ActiveCfg = Debug|Win32
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Debug|x86.Build.0 = Debug|Win32
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Release|x64.ActiveCfg = Release|x64
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Release|x64.Build.0 = Release|x64
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Release|x86.ActiveCfg = Release|Win32
{0E055CAF-C68B-42CB-A302-F775CA5A917F}.Release|x86.Build.0 = Release|Win32
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Debug|x64.ActiveCfg = Debug|x64
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Debug|x64.Build.0 = Debug|x64
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Debug|x86.ActiveCfg = Debug|Win32
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Debug|x86.Build.0 = Debug|Win32
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Release|x64.ActiveCfg = Release|x64
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Release|x64.Build.0 = Release|x64
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Release|x86.ActiveCfg = Release|Win32
{64269F60-A538-4327-82EE-AB4BF4766CE9}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

+ 1
- 1
test_cases/main.cpp Переглянути файл

@@ -7,7 +7,7 @@

static Catch::Session session;

_declspec(dllexport) void SelfTest() {
void SelfTest() {
session.run();
}


+ 17
- 0
tester/abstracthook.h Переглянути файл

@@ -0,0 +1,17 @@
#pragma once
class AbstractHookEngine {
private:
const char* name_;
public:
AbstractHookEngine(const char* name) : name_(name) {

}

virtual bool hook_all() = 0;
virtual bool unhook_all() = 0;
virtual bool all_hooked() = 0;

const char* name() {
return name_;
}
};

+ 17
- 2
tester/main.cpp Переглянути файл

@@ -1,9 +1,24 @@
#include <Windows.h>
#include <cstdint>
#include <iostream>
#include "../test_cases/test_cases.h"

#pragma comment(lib, "..\\x64\\debug\\test_cases.lib")
#include "abstracthook.h"
#include "mhook.h"

#pragma comment(lib, "..\\x64\\release\\test_cases.lib")

extern AbstractHookEngine* g_mhook;

int main(int argc, char** argv) {
SelfTest();
AbstractHookEngine* engines[] = {
g_mhook,
};

for(auto&& x : engines) {
x->hook_all();
SelfTest();
std::cout << x->name() << ':' << x->all_hooked() << '\n';
x->unhook_all();
}
}

+ 28
- 0
tester/mhook.cpp Переглянути файл

@@ -0,0 +1,28 @@
#include <Windows.h>
#include <cstdint>
#include "../third_party/mhook/mhook-lib/mhook.h"
#include "typedefs.h"
#include "abstracthook.h"
#include "mhook.h"

#pragma comment(lib, "..\\x64\\debug\\test_cases.lib")

static TypeSmall trueSmall = &_small;

AbstractHookEngine* g_mhook = new MHook();

static uint64_t hookSmall(void) {
return trueSmall();
}

bool MHook::hook_all(void) {
return Mhook_SetHook((PVOID*)&trueSmall, hookSmall);
}

bool MHook::unhook_all() {
return Mhook_Unhook((PVOID*)&trueSmall);
}

bool MHook::all_hooked() {
return true;
}

+ 11
- 0
tester/mhook.h Переглянути файл

@@ -0,0 +1,11 @@
#pragma once
class MHook : public AbstractHookEngine {
public:
bool hook_all();
bool unhook_all();
bool all_hooked();

MHook() : AbstractHookEngine("MHook") {

}
};

+ 14
- 1
tester/tester.vcxproj Переглянути файл

@@ -143,11 +143,24 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>test_cases.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="main.cpp" />
<ClCompile Include="mhook.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="abstracthook.h" />
<ClInclude Include="mhook.h" />
<ClInclude Include="typedefs.h" />
</ItemGroup>
<ItemGroup>
<Object Include="..\x64\Debug\cpu.obj" />
<Object Include="..\x64\Debug\disasm.obj" />
<Object Include="..\x64\Debug\disasm_x86.obj" />
<Object Include="..\x64\Debug\mhook.obj" />
<Object Include="..\x64\Debug\misc.obj" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

+ 21
- 0
tester/tester.vcxproj.filters Переглянути файл

@@ -18,5 +18,26 @@
<ClCompile Include="main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="mhook.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="typedefs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="mhook.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="abstracthook.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Object Include="..\x64\Debug\mhook.obj" />
<Object Include="..\x64\Debug\disasm.obj" />
<Object Include="..\x64\Debug\disasm_x86.obj" />
<Object Include="..\x64\Debug\misc.obj" />
<Object Include="..\x64\Debug\cpu.obj" />
</ItemGroup>
</Project>

+ 4
- 0
tester/typedefs.h Переглянути файл

@@ -0,0 +1,4 @@
#pragma once
#include "../test_cases/test_cases.h"

typedef uint64_t(*TypeSmall)(void);

Завантаження…
Відмінити
Зберегти