From 5b1cf81f5566bb5d6e7fb5bf89e73b0af9d94579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joel=20H=C3=B6ner?= Date: Sun, 24 Sep 2017 19:17:19 +0200 Subject: [PATCH] zydis_wrapper: Fixed x32 build --- src/dbg/x64dbg_dbg.vcxproj | 8 ++++---- src/gui/Src/BasicView/Disassembly.cpp | 6 +++++- src/gui/Src/Disassembler/capstone_gui.cpp | 2 +- src/zydis_wrapper/zydis_wrapper.cpp | 4 ++-- src/zydis_wrapper/zydis_wrapper.vcxproj | 2 ++ 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/dbg/x64dbg_dbg.vcxproj b/src/dbg/x64dbg_dbg.vcxproj index 9d3c85b4..d848aaba 100644 --- a/src/dbg/x64dbg_dbg.vcxproj +++ b/src/dbg/x64dbg_dbg.vcxproj @@ -376,14 +376,14 @@ $(ProjectDir)..\..\bin\x32\ $(Platform)\$(Configuration)\ x32dbg - $(ProjectDir)..\capstone_wrapper;$(ProjectDir);$(ProjectDir)analysis;$(ProjectDir)commands;$(IncludePath) + $(ProjectDir)..\zydis_wrapper;$(ProjectDir)..\zydis_wrapper\zydis\include;$(ProjectDir)..\capstone_wrapper;$(ProjectDir);$(ProjectDir)analysis;$(ProjectDir)commands;$(IncludePath) false $(ProjectDir)..\..\bin\x32d\ $(Platform)\$(Configuration)\ x32dbg - $(ProjectDir)..\capstone_wrapper;$(ProjectDir);$(ProjectDir)analysis;$(ProjectDir)commands;$(IncludePath) + $(ProjectDir)..\zydis_wrapper;$(ProjectDir)..\zydis_wrapper\zydis\include;$(ProjectDir)..\capstone_wrapper;$(ProjectDir);$(ProjectDir)analysis;$(ProjectDir)commands;$(IncludePath) false @@ -419,7 +419,7 @@ Windows true true - ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.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;shlwapi.lib;%(AdditionalDependencies) + ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\zydis_wrapper\bin\x32\zydis_wrapper.lib;$(ProjectDir)..\capstone_wrapper\bin\x32\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.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;shlwapi.lib;%(AdditionalDependencies) @@ -440,7 +440,7 @@ Windows false false - ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32d\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.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;shlwapi.lib;%(AdditionalDependencies) + ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\zydis_wrapper\bin\x32d\zydis_wrapper.lib;$(ProjectDir)..\capstone_wrapper\bin\x32d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32d\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.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;shlwapi.lib;%(AdditionalDependencies) diff --git a/src/gui/Src/BasicView/Disassembly.cpp b/src/gui/Src/BasicView/Disassembly.cpp index 81d38992..211621c4 100644 --- a/src/gui/Src/BasicView/Disassembly.cpp +++ b/src/gui/Src/BasicView/Disassembly.cpp @@ -1541,7 +1541,8 @@ Instruction_t Disassembly::DisassembleAt(dsint rva) cs_instr.dump[2] == '\x3e')) goto _exit; if(QRegExp("mov .s,.*").exactMatch(cs_instr.instStr) || - cs_instr.instStr.startsWith("str")) // cs claims it's priviliged (it's not) + cs_instr.instStr.startsWith("str") || + QRegExp("pop .s").exactMatch(cs_instr.instStr)) // cs claims it's priviliged (it's not) goto _exit; if(QRegExp("l[defgs]s.*").exactMatch(cs_instr.instStr)) // cs allows LES (and friends) in 64 bit mode (invalid) goto _exit; @@ -1560,6 +1561,9 @@ Instruction_t Disassembly::DisassembleAt(dsint rva) ; zy_it != zy_instr.tokens.tokens.end() && cs_it != cs_instr.tokens.tokens.end() ; ++zy_it, ++cs_it) { + Zydis zd; + zd.Disassemble(0, (unsigned char*)zy_instr.dump.data(), zy_instr.length); + auto zy_tok_text = zy_it->text.toStdString(); auto cs_tok_text = cs_it->text.toStdString(); diff --git a/src/gui/Src/Disassembler/capstone_gui.cpp b/src/gui/Src/Disassembler/capstone_gui.cpp index 1fa8af00..2e347efb 100644 --- a/src/gui/Src/Disassembler/capstone_gui.cpp +++ b/src/gui/Src/Disassembler/capstone_gui.cpp @@ -575,7 +575,7 @@ bool CapstoneTokenizer::tokenizeMemOperand(const ZydisDecodedOperand & op) TokenValue value(opsize, duint(mem.disp.value)); auto displacementType = DbgMemIsValidReadPtr(duint(mem.disp.value)) ? TokenType::Address : TokenType::Value; QString valueText; - if(mem.disp.value < 0) + if(mem.disp.value < 0 && prependPlus) { operatorText = '-'; valueText = printValue(TokenValue(opsize, duint(mem.disp.value * -1)), false, _maxModuleLength); diff --git a/src/zydis_wrapper/zydis_wrapper.cpp b/src/zydis_wrapper/zydis_wrapper.cpp index 527a71c7..02ac7a82 100644 --- a/src/zydis_wrapper/zydis_wrapper.cpp +++ b/src/zydis_wrapper/zydis_wrapper.cpp @@ -163,8 +163,8 @@ std::string Zydis::OperandText(int opindex) const &mFormatter, &bufPtr, sizeof(buf), - (ZydisDecodedInstruction*)&mInstr, - (ZydisDecodedOperand*)&op + const_cast(&mInstr), + const_cast(&op) ); return buf; diff --git a/src/zydis_wrapper/zydis_wrapper.vcxproj b/src/zydis_wrapper/zydis_wrapper.vcxproj index fa9513c5..105d4254 100644 --- a/src/zydis_wrapper/zydis_wrapper.vcxproj +++ b/src/zydis_wrapper/zydis_wrapper.vcxproj @@ -69,6 +69,7 @@ .lib $(ProjectDir)bin\x32\ $(Platform)\$(Configuration)\ + $(ProjectDir);$(ProjectDir)\zydis\include;$(ProjectDir)\zydis\src;$(IncludePath) .lib @@ -79,6 +80,7 @@ .lib $(ProjectDir)bin\x32d\ $(Platform)\$(Configuration)\ + $(ProjectDir);$(ProjectDir)\zydis\include;$(ProjectDir)\zydis\src;$(IncludePath) .lib