switch to zyan + various small fixes with lazy registers

This commit is contained in:
mrexodia 2017-05-05 17:32:57 +02:00
parent 14b99382df
commit 75f968fdf0
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
14 changed files with 222 additions and 42 deletions

6
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "capstone_wrapper"]
path = capstone_wrapper
url = https://github.com/x64dbg/capstone_wrapper.git
[submodule "GleeBug/zyan-disassembler-engine"]
path = GleeBug/zyan-disassembler-engine
url = https://github.com/zyantific/zyan-disassembler-engine

View File

@ -1,5 +1,10 @@
#include "Debugger.Process.h"
#define ZYDIS_EXPORTS
#define ZYDIS_ENABLE_FEATURE_IMPLICITLY_USED_REGISTERS
#define ZYDIS_ENABLE_FEATURE_AFFECTED_FLAGS
#include <Zydis/Zydis.h>
namespace GleeBug
{
Process::Process(HANDLE hProcess, uint32 dwProcessId, uint32 dwMainThreadId, const CREATE_PROCESS_DEBUG_INFO & createProcessInfo) :
@ -21,10 +26,29 @@ namespace GleeBug
unsigned char data[16];
if (MemReadSafe(gip, data, sizeof(data)))
{
mCapstone.Disassemble(gip, data);
if(mCapstone.GetId() == X86_INS_CALL)
ZydisInstructionInfo info;
memset(&info, 0, sizeof(info));
auto mode = GleeArchValue(ZYDIS_OPERATING_MODE_32BIT, ZYDIS_OPERATING_MODE_64BIT);
auto status = ZydisDecode(mode, data, sizeof(data), gip, &info);
auto stepOver = false;
if(ZYDIS_SUCCESS(status))
{
SetBreakpoint(gip + mCapstone.Size(), [cbStep](const BreakpointInfo & info)
switch(info.mnemonic)
{
case ZYDIS_MNEMONIC_CALL:
case ZYDIS_MNEMONIC_PUSHF:
case ZYDIS_MNEMONIC_PUSHFD:
case ZYDIS_MNEMONIC_PUSHFQ:
stepOver = true;
break;
default:
auto repAttributes = ZYDIS_ATTRIB_HAS_REP | ZYDIS_ATTRIB_HAS_REPE | ZYDIS_ATTRIB_HAS_REPZ | ZYDIS_ATTRIB_HAS_REPNE | ZYDIS_ATTRIB_HAS_REPNZ;
stepOver = (info.attributes & repAttributes) != 0;
}
}
if (stepOver)
{
SetBreakpoint(gip + info.length, [cbStep](const BreakpointInfo & info)
{
cbStep();
}, true, SoftwareType::ShortInt3);

View File

@ -6,7 +6,6 @@
#include "Debugger.Dll.h"
#include "Debugger.Breakpoint.h"
#include "Static.Pattern.h"
#include <capstone_wrapper/capstone_wrapper.h>
namespace GleeBug
{
@ -411,9 +410,6 @@ namespace GleeBug
result = false;
return result;
}
private:
Capstone mCapstone;
};
};

View File

@ -130,17 +130,21 @@ namespace GleeBug
if(!this->mLazyOldContext || !this->mLazyThread) //assert
__debugbreak();
auto oldContext = this->mLazyOldContext;
auto lazyThread = this->mLazyThread;
this->mLazyOldContext = nullptr;
this->mLazyThread = nullptr;
this->mLazySet = false;
//TODO: handle failure of GetThreadContext
auto result = false;
if(GetThreadContext(this->mLazyThread, this->mLazyOldContext))
if(GetThreadContext(lazyThread, oldContext))
{
this->mContext = *this->mLazyOldContext;
this->mContext = *oldContext;
result = true;
}
this->mLazyOldContext = nullptr;
this->mLazyThread = nullptr;
this->mLazySet = false;
return result;
}
};

View File

@ -161,7 +161,7 @@ namespace GleeBug
private:
CONTEXT mContext;
CONTEXT* mLazyOldContext = nullptr;
LPCONTEXT mLazyOldContext = nullptr;
HANDLE mLazyThread = nullptr;
bool mLazySet = false;

View File

@ -4,7 +4,6 @@
#include "Debugger.Global.h"
#include "Debugger.Process.h"
#include "Debugger.Breakpoint.h"
#include <capstone_wrapper/capstone_wrapper.h>
namespace GleeBug
{
@ -287,7 +286,6 @@ namespace GleeBug
bool mDetach = false;
bool mDetachAndBreak = false;
bool mAttachedToProcess = false;
Capstone mCapstone;
/**
\brief The current process (can be null in some cases).

View File

@ -19,6 +19,23 @@
#define BIND(thisPtr, funcPtr) std::bind(&funcPtr, thisPtr)
#define BIND1(thisPtr, funcPtr) std::bind(&funcPtr, thisPtr, std::placeholders::_1)
#ifdef _WIN64
#define X64DBG_MOD L"x64dbg.dll"
#else
#define X64DBG_MOD L"x32dbg.dll"
#endif //_WIN64
#define DPRINTF() \
static auto dprintf = (int(*)(const char* format, ...))GetProcAddress(GetModuleHandleW(X64DBG_MOD), "_plugin_logprintf"); \
if(!dprintf) \
dprintf = printf
#ifdef _WIN64
#define GleeArchValue(x32value, x64value) x64value
#else
#define GleeArchValue(x32value, x64value) x32value
#endif //_WIN64
namespace GleeBug
{
typedef int8_t int8;

View File

@ -68,22 +68,22 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x32\</OutDir>
<TargetExt>.lib</TargetExt>
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x64\</OutDir>
<TargetExt>.lib</TargetExt>
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x32\</OutDir>
<TargetExt>.lib</TargetExt>
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x64\</OutDir>
<TargetExt>.lib</TargetExt>
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@ -150,7 +150,6 @@
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\capstone_wrapper\capstone_wrapper.cpp" />
<ClCompile Include="Debugger.cpp" />
<ClCompile Include="Debugger.Dll.cpp" />
<ClCompile Include="Debugger.Loop.cpp" />
@ -173,9 +172,20 @@
<ClCompile Include="Static.File.cpp" />
<ClCompile Include="Static.Pattern.cpp" />
<ClCompile Include="Static.Pe.cpp" />
<ClCompile Include="zyan-disassembler-engine\src\Decoder.c" />
<ClCompile Include="zyan-disassembler-engine\src\Formatter.c">
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_CRT_SECURE_NO_WARNINGS;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_CRT_SECURE_NO_WARNINGS;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_CRT_SECURE_NO_WARNINGS;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_CRT_SECURE_NO_WARNINGS;_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\InstructionTable.c" />
<ClCompile Include="zyan-disassembler-engine\src\Mnemonic.c" />
<ClCompile Include="zyan-disassembler-engine\src\Register.c" />
<ClCompile Include="zyan-disassembler-engine\src\Utils.c" />
<ClCompile Include="zyan-disassembler-engine\src\Zydis.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\capstone_wrapper\capstone_wrapper.h" />
<ClInclude Include="Debugger.Breakpoint.h" />
<ClInclude Include="Debugger.Dll.h" />
<ClInclude Include="Debugger.Process.h" />
@ -193,6 +203,25 @@
<ClInclude Include="Static.Pe.h" />
<ClInclude Include="Static.Pe.Section.h" />
<ClInclude Include="Static.Region.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Decoder.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Defines.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Formatter.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\InstructionInfo.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionTable.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Mnemonic.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Register.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Status.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Types.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Utils.h" />
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Zydis.h" />
</ItemGroup>
<ItemGroup>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\GeneratedTypes.inc" />
<None Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionDefinitions.inc" />
<None Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionFilters.inc" />
<None Include="zyan-disassembler-engine\include\Zydis\Internal\MnemonicDefines.inc" />
<None Include="zyan-disassembler-engine\include\Zydis\Internal\MnemonicStrings.inc" />
<None Include="zyan-disassembler-engine\include\Zydis\Internal\OperandDefinitions.inc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -9,11 +9,14 @@
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Header Files\capstone_wrapper">
<UniqueIdentifier>{4215a98e-b5ea-4d74-b38a-b4adaec85570}</UniqueIdentifier>
<Filter Include="Source Files\Zydis">
<UniqueIdentifier>{087a6721-6324-4dd6-94f3-8cf8ec131db6}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\capstone_wrapper">
<UniqueIdentifier>{0f772f56-25cc-40aa-85b4-be2140c10d27}</UniqueIdentifier>
<Filter Include="Header Files\Zydis">
<UniqueIdentifier>{a3b02551-ba19-40b2-a117-90b9f44d3dcd}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Zydis\Internal">
<UniqueIdentifier>{2bc2d721-bce0-440e-947e-e74497e76fa6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -80,12 +83,30 @@
<ClCompile Include="Static.Pattern.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\capstone_wrapper\capstone_wrapper.cpp">
<Filter>Source Files\capstone_wrapper</Filter>
</ClCompile>
<ClCompile Include="GleeBug.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Decoder.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Formatter.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\InstructionTable.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Mnemonic.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Register.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Utils.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
<ClCompile Include="zyan-disassembler-engine\src\Zydis.c">
<Filter>Source Files\Zydis</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Debugger.h">
@ -139,8 +160,58 @@
<ClInclude Include="Static.Pattern.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\capstone_wrapper\capstone_wrapper.h">
<Filter>Header Files\capstone_wrapper</Filter>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionTable.h">
<Filter>Header Files\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Decoder.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Defines.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Formatter.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\InstructionInfo.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Mnemonic.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Register.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Status.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Types.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Utils.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
<ClInclude Include="zyan-disassembler-engine\include\Zydis\Zydis.h">
<Filter>Header Files\Zydis</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\GeneratedTypes.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionDefinitions.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\InstructionFilters.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\MnemonicDefines.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\MnemonicStrings.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
<None Include="zyan-disassembler-engine\include\Zydis\Internal\OperandDefinitions.inc">
<Filter>Header Files\Zydis\Internal</Filter>
</None>
</ItemGroup>
</Project>

@ -0,0 +1 @@
Subproject commit baa1bc243ac9e2b8c0930d6e7bed7065d0e2e5e0

View File

@ -90,7 +90,7 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -103,7 +103,7 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -120,7 +120,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x86.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -137,7 +137,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>

View File

@ -98,7 +98,7 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x86.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -111,7 +111,7 @@
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -128,7 +128,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x86.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x32\GleeBug.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -145,7 +145,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;$(SolutionDir)capstone_wrapper\capstone\capstone_x64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>$(SolutionDir)bin\$(Configuration)\x64\GleeBug.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>

41
ZydisExportConfig.h Normal file
View File

@ -0,0 +1,41 @@
#ifndef ZYDIS_EXPORT_H
#define ZYDIS_EXPORT_H
#ifdef ZYDIS_STATIC_DEFINE
# define ZYDIS_EXPORT
# define ZYDIS_NO_EXPORT
#else
# ifndef ZYDIS_EXPORT
# ifdef Zydis_EXPORTS
/* We are building this library */
# define ZYDIS_EXPORT
# else
/* We are using this library */
# define ZYDIS_EXPORT
# endif
# endif
# ifndef ZYDIS_NO_EXPORT
# define ZYDIS_NO_EXPORT
# endif
#endif
#ifndef ZYDIS_DEPRECATED
# define ZYDIS_DEPRECATED __declspec(deprecated)
#endif
#ifndef ZYDIS_DEPRECATED_EXPORT
# define ZYDIS_DEPRECATED_EXPORT ZYDIS_EXPORT ZYDIS_DEPRECATED
#endif
#ifndef ZYDIS_DEPRECATED_NO_EXPORT
# define ZYDIS_DEPRECATED_NO_EXPORT ZYDIS_NO_EXPORT ZYDIS_DEPRECATED
#endif
#if 0 /* DEFINE_NO_DEPRECATED */
# ifndef ZYDIS_NO_DEPRECATED
# define ZYDIS_NO_DEPRECATED
# endif
#endif
#endif

@ -1 +0,0 @@
Subproject commit 2034d2a0151866ae56fa51171788217d59c47a7b