1
0
Fork 0

GUI: intelligent nop recognition (#718)

looking good, thanks!
This commit is contained in:
Torusrxxx 2016-06-05 08:25:21 +00:00 committed by Duncan Ogilvie
parent 7830ec98e5
commit 7691213b90
1 changed files with 10 additions and 11 deletions

View File

@ -247,7 +247,7 @@ void CapstoneTokenizer::addToken(TokenType type, QString text, const TokenValue
}
if(_bUppercase && !value.size)
text = text.toUpper();
_inst.tokens.push_back(SingleToken(type, text, value));
_inst.tokens.push_back(SingleToken(_cp.IsNop() ? TokenType::MnemonicNop : type, text, value));
}
void CapstoneTokenizer::addToken(TokenType type, const QString & text)
@ -327,7 +327,9 @@ bool CapstoneTokenizer::tokenizeMnemonic()
{
auto type = TokenType::MnemonicNormal;
auto id = _cp.GetId();
if(_cp.InGroup(CS_GRP_CALL))
if(_cp.IsNop())
type = TokenType::MnemonicNop;
else if(_cp.InGroup(CS_GRP_CALL))
type = TokenType::MnemonicCall;
else if(_cp.InGroup(CS_GRP_RET))
type = TokenType::MnemonicRet;
@ -343,14 +345,9 @@ bool CapstoneTokenizer::tokenizeMnemonic()
break;
}
}
else if(_cp.IsNop())
type = TokenType::MnemonicNop;
else if(_cp.IsInt3())
type = TokenType::MnemonicInt3;
else if(_cp.InGroup(CS_GRP_PRIVILEGE) || _cp.InGroup(CS_GRP_IRET) || _cp.InGroup(CS_GRP_INVALID)
|| id == X86_INS_RDTSC || id == X86_INS_SYSCALL || id == X86_INS_SYSENTER || id == X86_INS_CPUID || id == X86_INS_RDRAND || id == X86_INS_RDTSCP
|| id == X86_INS_OUT || id == X86_INS_OUTSB || id == X86_INS_OUTSD || id == X86_INS_OUTSW
|| id == X86_INS_IN || id == X86_INS_INSB || id == X86_INS_INSD || id == X86_INS_INSW)
else if(_cp.IsUnusual())
type = TokenType::MnemonicUnusual;
else
{
@ -457,10 +454,13 @@ bool CapstoneTokenizer::tokenizeMemOperand(const cs_x86_op & op)
{
switch(x86_reg(mem.base))
{
case X86_REG_ESP:
#ifdef _WIN64
case X86_REG_RSP:
case X86_REG_EBP:
case X86_REG_RBP:
#else //x86
case X86_REG_ESP:
case X86_REG_EBP:
#endif //_WIN64
segmentText = "ss";
break;
default:
@ -536,7 +536,6 @@ bool CapstoneTokenizer::tokenizeMemOperand(const cs_x86_op & op)
//closing bracket
addToken(bracketsType, "]");
return true;
}