mirror of https://github.com/x64dbg/GleeBug
Switch to an amalgamated Zydis 4.0.0
This commit is contained in:
parent
6c253bc74d
commit
a9a339ad45
|
|
@ -1,3 +0,0 @@
|
|||
[submodule "GleeBug/zyan-disassembler-engine"]
|
||||
path = GleeBug/zyan-disassembler-engine
|
||||
url = https://github.com/zyantific/zyan-disassembler-engine
|
||||
|
|
@ -1,10 +1,6 @@
|
|||
#include "Debugger.Process.h"
|
||||
#include "Debugger.Thread.Registers.h"
|
||||
|
||||
#define ZYDIS_EXPORTS
|
||||
#define ZYDIS_ENABLE_FEATURE_IMPLICITLY_USED_REGISTERS
|
||||
#define ZYDIS_ENABLE_FEATURE_AFFECTED_FLAGS
|
||||
#include <Zydis/Zydis.h>
|
||||
#include "Zydis/Zydis.h"
|
||||
|
||||
namespace GleeBug
|
||||
{
|
||||
|
|
@ -21,21 +17,45 @@ namespace GleeBug
|
|||
hardwareBreakpoints[i].internal.hardware.enabled = false;
|
||||
}
|
||||
|
||||
static bool IsRepeated(const ZydisInstructionInfo & info)
|
||||
static bool IsRepeated(const ZydisDecodedInstruction & info)
|
||||
{
|
||||
// https://www.felixcloutier.com/x86/rep:repe:repz:repne:repnz
|
||||
// TODO: allow extracting the affected range
|
||||
switch(info.mnemonic)
|
||||
{
|
||||
case ZYDIS_MNEMONIC_INS:
|
||||
case ZYDIS_MNEMONIC_OUTS:
|
||||
case ZYDIS_MNEMONIC_MOVS:
|
||||
// INS
|
||||
case ZYDIS_MNEMONIC_INSB:
|
||||
case ZYDIS_MNEMONIC_INSW:
|
||||
case ZYDIS_MNEMONIC_INSD:
|
||||
// OUTS
|
||||
case ZYDIS_MNEMONIC_OUTSB:
|
||||
case ZYDIS_MNEMONIC_OUTSW:
|
||||
case ZYDIS_MNEMONIC_OUTSD:
|
||||
// MOVS
|
||||
case ZYDIS_MNEMONIC_MOVSB:
|
||||
case ZYDIS_MNEMONIC_MOVSW:
|
||||
case ZYDIS_MNEMONIC_MOVSD:
|
||||
case ZYDIS_MNEMONIC_LODS:
|
||||
case ZYDIS_MNEMONIC_STOS:
|
||||
case ZYDIS_MNEMONIC_CMPS:
|
||||
case ZYDIS_MNEMONIC_MOVSQ:
|
||||
// LODS
|
||||
case ZYDIS_MNEMONIC_LODSB:
|
||||
case ZYDIS_MNEMONIC_LODSW:
|
||||
case ZYDIS_MNEMONIC_LODSD:
|
||||
case ZYDIS_MNEMONIC_LODSQ:
|
||||
// STOS
|
||||
case ZYDIS_MNEMONIC_STOSB:
|
||||
case ZYDIS_MNEMONIC_STOSW:
|
||||
case ZYDIS_MNEMONIC_STOSD:
|
||||
case ZYDIS_MNEMONIC_STOSQ:
|
||||
// CMPS
|
||||
case ZYDIS_MNEMONIC_CMPSB:
|
||||
case ZYDIS_MNEMONIC_CMPSW:
|
||||
case ZYDIS_MNEMONIC_CMPSD:
|
||||
case ZYDIS_MNEMONIC_SCAS:
|
||||
case ZYDIS_MNEMONIC_CMPSQ:
|
||||
// SCAS
|
||||
case ZYDIS_MNEMONIC_SCASB:
|
||||
case ZYDIS_MNEMONIC_SCASW:
|
||||
case ZYDIS_MNEMONIC_SCASD:
|
||||
case ZYDIS_MNEMONIC_SCASQ:
|
||||
return (info.attributes & (ZYDIS_ATTRIB_HAS_REP | ZYDIS_ATTRIB_HAS_REPZ | ZYDIS_ATTRIB_HAS_REPNZ)) != 0;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -47,14 +67,17 @@ namespace GleeBug
|
|||
unsigned char data[16];
|
||||
if(MemReadSafe(gip, data, sizeof(data)))
|
||||
{
|
||||
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))
|
||||
ZydisDisassembledInstruction instruction;
|
||||
if(ZYAN_SUCCESS(ZydisDisassembleIntel(
|
||||
GleeArchValue(ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_MACHINE_MODE_LONG_COMPAT_32),
|
||||
gip,
|
||||
data,
|
||||
sizeof(data),
|
||||
&instruction
|
||||
)))
|
||||
{
|
||||
switch(info.mnemonic)
|
||||
bool stepOver = false;
|
||||
switch(instruction.info.mnemonic)
|
||||
{
|
||||
case ZYDIS_MNEMONIC_CALL:
|
||||
case ZYDIS_MNEMONIC_PUSHF:
|
||||
|
|
@ -63,11 +86,21 @@ namespace GleeBug
|
|||
stepOver = true;
|
||||
break;
|
||||
default:
|
||||
stepOver = IsRepeated(info);
|
||||
stepOver = IsRepeated(instruction.info);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(stepOver)
|
||||
{
|
||||
SetBreakpoint(gip + instruction.info.length, [cbStep](const BreakpointInfo & info)
|
||||
{
|
||||
cbStep();
|
||||
}, true, SoftwareType::ShortInt3);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
thread->StepInto(cbStep);
|
||||
}
|
||||
{
|
||||
SetBreakpoint(gip + info.length, [cbStep](const BreakpointInfo & info)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -68,22 +68,22 @@
|
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x32\</OutDir>
|
||||
<TargetExt>.lib</TargetExt>
|
||||
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
|
||||
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x64\</OutDir>
|
||||
<TargetExt>.lib</TargetExt>
|
||||
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
|
||||
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x32\</OutDir>
|
||||
<TargetExt>.lib</TargetExt>
|
||||
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
|
||||
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>$(ProjectDir)..\bin\$(Configuration)\x64\</OutDir>
|
||||
<TargetExt>.lib</TargetExt>
|
||||
<IncludePath>$(ProjectDir)..;$(ProjectDir)zyan-disassembler-engine\include;$(IncludePath)</IncludePath>
|
||||
<IncludePath>$(ProjectDir)..;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
|
@ -176,18 +176,7 @@
|
|||
<ClCompile Include="Static.Pattern.cpp" />
|
||||
<ClCompile Include="Static.Pe.cpp" />
|
||||
<ClCompile Include="stringutils.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" />
|
||||
<ClCompile Include="Zydis\Zydis.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Debugger.Breakpoint.h" />
|
||||
|
|
@ -211,25 +200,7 @@
|
|||
<ClInclude Include="Static.Pe.Section.h" />
|
||||
<ClInclude Include="Static.Region.h" />
|
||||
<ClInclude Include="stringutils.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" />
|
||||
<ClInclude Include="Zydis\Zydis.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
|
|
|||
|
|
@ -10,13 +10,10 @@
|
|||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\Zydis">
|
||||
<UniqueIdentifier>{087a6721-6324-4dd6-94f3-8cf8ec131db6}</UniqueIdentifier>
|
||||
<UniqueIdentifier>{c334ecd8-b526-42dd-aa95-8eb0acdb8892}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<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>
|
||||
<UniqueIdentifier>{3108807c-0904-48ba-99db-88d28ee6dbd8}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
|
@ -83,30 +80,12 @@
|
|||
<ClCompile Include="Static.Pattern.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>
|
||||
<ClCompile Include="stringutils.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Zydis\Zydis.c">
|
||||
<Filter>Source Files\Zydis</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Debugger.h">
|
||||
|
|
@ -160,39 +139,6 @@
|
|||
<ClInclude Include="Static.Pattern.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<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>
|
||||
<ClInclude Include="oprintf.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -205,25 +151,8 @@
|
|||
<ClInclude Include="ntdll.h">
|
||||
<Filter>Header Files</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>
|
||||
<ClInclude Include="Zydis\Zydis.h">
|
||||
<Filter>Header Files\Zydis</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
|||
Subproject commit d3192a8be7f95f9b6bb040e558e4b4a7e10509a6
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
#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
|
||||
Loading…
Reference in New Issue