1
0
Fork 0

GUI: rename CapstoneTokenizer to ZydisTokenizer

This commit is contained in:
Bálint Faragó 2018-10-29 04:29:04 +01:00 committed by Duncan Ogilvie
parent c7107374d2
commit a3b5812908
16 changed files with 106 additions and 106 deletions

View File

@ -134,7 +134,7 @@ void Disassembly::updateColors()
mConditionalTruePen = QPen(mConditionalJumpLineTrueColor);
mConditionalFalsePen = QPen(mConditionalJumpLineFalseColor);
CapstoneTokenizer::UpdateColors();
ZydisTokenizer::UpdateColors();
mDisasm->UpdateConfig();
}
@ -496,9 +496,9 @@ QString Disassembly::paintContent(QPainter* painter, dsint rowBase, int rowOffse
RichTextPainter::List richText;
auto & token = mInstBuffer[rowOffset].tokens;
if(mHighlightToken.text.length())
CapstoneTokenizer::TokenToRichText(token, richText, &mHighlightToken);
ZydisTokenizer::TokenToRichText(token, richText, &mHighlightToken);
else
CapstoneTokenizer::TokenToRichText(token, richText, 0);
ZydisTokenizer::TokenToRichText(token, richText, 0);
int xinc = 4;
RichTextPainter::paintRichText(painter, x + loopsize, y, getColumnWidth(col) - loopsize, getRowHeight(), xinc, richText, mFontMetrics);
token.x = x + loopsize + xinc;
@ -578,9 +578,9 @@ QString Disassembly::paintContent(QPainter* painter, dsint rowBase, int rowOffse
{
char brief[MAX_STRING_SIZE] = "";
QString mnem;
for(const CapstoneTokenizer::SingleToken & token : mInstBuffer.at(rowOffset).tokens.tokens)
for(const ZydisTokenizer::SingleToken & token : mInstBuffer.at(rowOffset).tokens.tokens)
{
if(token.type != CapstoneTokenizer::TokenType::Space && token.type != CapstoneTokenizer::TokenType::Prefix)
if(token.type != ZydisTokenizer::TokenType::Space && token.type != ZydisTokenizer::TokenType::Prefix)
{
mnem = token.text;
break;
@ -690,9 +690,9 @@ duint Disassembly::getDisassemblyPopupAddress(int mousex, int mousey)
int rowOffset = getIndexOffsetFromY(transY(mousey));
if(rowOffset < mInstBuffer.size())
{
CapstoneTokenizer::SingleToken token;
ZydisTokenizer::SingleToken token;
auto & instruction = mInstBuffer.at(rowOffset);
if(CapstoneTokenizer::TokenFromX(instruction.tokens, token, mousex, mFontMetrics))
if(ZydisTokenizer::TokenFromX(instruction.tokens, token, event->x(), mFontMetrics))
{
duint addr = token.value.value;
bool isCodePage = DbgFunctions()->MemIsCodePage(addr, false);
@ -729,30 +729,30 @@ void Disassembly::mousePressEvent(QMouseEvent* event)
int rowOffset = getIndexOffsetFromY(transY(event->y()));
if(rowOffset < mInstBuffer.size())
{
CapstoneTokenizer::SingleToken token;
if(CapstoneTokenizer::TokenFromX(mInstBuffer.at(rowOffset).tokens, token, event->x(), mFontMetrics))
ZydisTokenizer::SingleToken token;
if(ZydisTokenizer::TokenFromX(mInstBuffer.at(rowOffset).tokens, token, event->x(), mFontMetrics))
{
if(CapstoneTokenizer::IsHighlightableToken(token))
if(ZydisTokenizer::IsHighlightableToken(token))
{
if(!CapstoneTokenizer::TokenEquals(&token, &mHighlightToken) || event->button() == Qt::RightButton)
if(!ZydisTokenizer::TokenEquals(&token, &mHighlightToken) || event->button() == Qt::RightButton)
mHighlightToken = token;
else
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
}
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
if(!mPermanentHighlightingMode)
return;
@ -1976,7 +1976,7 @@ void Disassembly::disassembleAt(dsint parVA, dsint parCIP)
void Disassembly::disassembleClear()
{
mHighlightingMode = false;
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
historyClear();
mMemPage->setAttributes(0, 0);
mDisasm->getEncodeMap()->setMemoryRegion(0);
@ -2134,7 +2134,7 @@ void Disassembly::unfold(dsint rva)
}
}
bool Disassembly::hightlightToken(const CapstoneTokenizer::SingleToken & token)
bool Disassembly::hightlightToken(const ZydisTokenizer::SingleToken & token)
{
mHighlightToken = token;
mHighlightingMode = false;

View File

@ -103,7 +103,7 @@ public:
void setCodeFoldingManager(CodeFoldingHelper* CodeFoldingManager);
duint getDisassemblyPopupAddress(int mousex, int mousey) override;
void unfold(dsint rva);
bool hightlightToken(const CapstoneTokenizer::SingleToken & token);
bool hightlightToken(const ZydisTokenizer::SingleToken & token);
bool isHighlightMode() const;
signals:
@ -247,7 +247,7 @@ protected:
bool mShowMnemonicBrief;
XREF_INFO mXrefInfo;
CodeFoldingHelper* mCodeFoldingManager;
CapstoneTokenizer::SingleToken mHighlightToken;
ZydisTokenizer::SingleToken mHighlightToken;
bool mPermanentHighlightingMode;
bool mNoCurrentModuleText;
};

View File

@ -6,7 +6,7 @@
QBeaEngine::QBeaEngine(int maxModuleSize)
: _tokenizer(maxModuleSize), mCodeFoldingManager(nullptr), _bLongDataInst(false)
{
CapstoneTokenizer::UpdateColors();
ZydisTokenizer::UpdateColors();
UpdateDataInstructionMap();
this->mEncodeMap = new EncodeMap();
}
@ -190,11 +190,11 @@ Instruction_t QBeaEngine::DisassembleAt(byte_t* data, duint size, duint origBase
return DecodeDataAt(data, size, origBase, origInstRVA, type);
}
//tokenize
CapstoneTokenizer::InstructionToken cap;
ZydisTokenizer::InstructionToken cap;
_tokenizer.Tokenize(origBase + origInstRVA, data, size, cap);
int len = _tokenizer.Size();
const auto & cp = _tokenizer.GetCapstone();
const auto & cp = _tokenizer.GetZydis();
bool success = cp.Success();
@ -270,7 +270,7 @@ Instruction_t QBeaEngine::DisassembleAt(byte_t* data, duint size, duint origBase
Instruction_t QBeaEngine::DecodeDataAt(byte_t* data, duint size, duint origBase, duint origInstRVA, ENCODETYPE type)
{
//tokenize
CapstoneTokenizer::InstructionToken cap;
ZydisTokenizer::InstructionToken cap;
auto infoIter = dataInstMap.find(type);
if(infoIter == dataInstMap.end())

View File

@ -3,7 +3,7 @@
#include <QString>
#include <vector>
#include "capstone_gui.h"
#include "ZydisTokenizer.h"
class EncodeMap;
class CodeFoldingHelper;
@ -33,7 +33,7 @@ struct Instruction_t
int length;
duint branchDestination;
BranchType branchType;
CapstoneTokenizer::InstructionToken tokens;
ZydisTokenizer::InstructionToken tokens;
std::vector<std::pair<const char*, uint8_t>> regsReferenced;
};
@ -63,7 +63,7 @@ private:
};
void UpdateDataInstructionMap();
CapstoneTokenizer _tokenizer;
ZydisTokenizer _tokenizer;
QHash<ENCODETYPE, DataInstructionInfo> dataInstMap;
bool _bLongDataInst;
EncodeMap* mEncodeMap;

View File

@ -1,9 +1,9 @@
#include "capstone_gui.h"
#include "ZydisTokenizer.h"
#include "Configuration.h"
#include "StringUtil.h"
#include "CachedFontMetrics.h"
CapstoneTokenizer::CapstoneTokenizer(int maxModuleLength)
ZydisTokenizer::ZydisTokenizer(int maxModuleLength)
: _maxModuleLength(maxModuleLength),
_success(false),
isNop(false),
@ -12,16 +12,16 @@ CapstoneTokenizer::CapstoneTokenizer(int maxModuleLength)
SetConfig(false, false, false, false, false, false, false, false, false);
}
static CapstoneTokenizer::TokenColor colorNamesMap[CapstoneTokenizer::TokenType::Last];
QHash<QString, int> CapstoneTokenizer::stringPoolMap;
int CapstoneTokenizer::poolId = 0;
static ZydisTokenizer::TokenColor colorNamesMap[ZydisTokenizer::TokenType::Last];
QHash<QString, int> ZydisTokenizer::stringPoolMap;
int ZydisTokenizer::poolId = 0;
void CapstoneTokenizer::addColorName(TokenType type, QString color, QString backgroundColor)
void ZydisTokenizer::addColorName(TokenType type, QString color, QString backgroundColor)
{
colorNamesMap[int(type)] = TokenColor(color, backgroundColor);
}
void CapstoneTokenizer::addStringsToPool(const QString & strings)
void ZydisTokenizer::addStringsToPool(const QString & strings)
{
QStringList stringList = strings.split(' ', QString::SkipEmptyParts);
for(const QString & string : stringList)
@ -29,7 +29,7 @@ void CapstoneTokenizer::addStringsToPool(const QString & strings)
poolId++;
}
void CapstoneTokenizer::UpdateColors()
void ZydisTokenizer::UpdateColors()
{
//filling
addColorName(TokenType::Comma, "InstructionCommaColor", "InstructionCommaBackgroundColor");
@ -70,7 +70,7 @@ void CapstoneTokenizer::UpdateColors()
addColorName(TokenType::ZmmRegister, "InstructionZmmRegisterColor", "InstructionZmmRegisterBackgroundColor");
}
void CapstoneTokenizer::UpdateStringPool()
void ZydisTokenizer::UpdateStringPool()
{
poolId = 0;
stringPoolMap.clear();
@ -109,7 +109,7 @@ void CapstoneTokenizer::UpdateStringPool()
addStringsToPool("xmm15 ymm15");
}
bool CapstoneTokenizer::Tokenize(duint addr, const unsigned char* data, int datasize, InstructionToken & instruction)
bool ZydisTokenizer::Tokenize(duint addr, const unsigned char* data, int datasize, InstructionToken & instruction)
{
_inst = InstructionToken();
@ -154,7 +154,7 @@ bool CapstoneTokenizer::Tokenize(duint addr, const unsigned char* data, int data
return true;
}
bool CapstoneTokenizer::TokenizeData(const QString & datatype, const QString & data, InstructionToken & instruction)
bool ZydisTokenizer::TokenizeData(const QString & datatype, const QString & data, InstructionToken & instruction)
{
_inst = InstructionToken();
isNop = false;
@ -169,7 +169,7 @@ bool CapstoneTokenizer::TokenizeData(const QString & datatype, const QString & d
return true;
}
void CapstoneTokenizer::UpdateConfig()
void ZydisTokenizer::UpdateConfig()
{
SetConfig(ConfigBool("Disassembler", "Uppercase"),
ConfigBool("Disassembler", "TabbedMnemonic"),
@ -184,7 +184,7 @@ void CapstoneTokenizer::UpdateConfig()
UpdateStringPool();
}
void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bHidePointerSizes, bool bHideNormalSegments, bool bMemorySpaces, bool bNoHighlightOperands, bool bNoCurrentModuleText, bool b0xPrefixValues)
void ZydisTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bHidePointerSizes, bool bHideNormalSegments, bool bMemorySpaces, bool bNoHighlightOperands, bool bNoCurrentModuleText, bool b0xPrefixValues)
{
_bUppercase = bUppercase;
_bTabbedMnemonic = bTabbedMnemonic;
@ -197,17 +197,17 @@ void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bA
_b0xPrefixValues = b0xPrefixValues;
}
int CapstoneTokenizer::Size() const
int ZydisTokenizer::Size() const
{
return _success ? _cp.Size() : 1;
}
const Zydis & CapstoneTokenizer::GetCapstone() const
const Zydis & ZydisTokenizer::GetZydis() const
{
return _cp;
}
void CapstoneTokenizer::TokenToRichText(const InstructionToken & instr, RichTextPainter::List & richTextList, const SingleToken* highlightToken)
void ZydisTokenizer::TokenToRichText(const InstructionToken & instr, RichTextPainter::List & richTextList, const SingleToken* highlightToken)
{
QColor highlightColor = ConfigColor("InstructionHighlightColor");
for(const auto & token : instr.tokens)
@ -228,7 +228,7 @@ void CapstoneTokenizer::TokenToRichText(const InstructionToken & instr, RichText
}
}
bool CapstoneTokenizer::TokenFromX(const InstructionToken & instr, SingleToken & token, int x, CachedFontMetrics* fontMetrics)
bool ZydisTokenizer::TokenFromX(const InstructionToken & instr, SingleToken & token, int x, CachedFontMetrics* fontMetrics)
{
if(x < instr.x) //before the first token
return false;
@ -248,7 +248,7 @@ bool CapstoneTokenizer::TokenFromX(const InstructionToken & instr, SingleToken &
return false; //not found
}
bool CapstoneTokenizer::IsHighlightableToken(const SingleToken & token)
bool ZydisTokenizer::IsHighlightableToken(const SingleToken & token)
{
switch(token.type)
{
@ -266,7 +266,7 @@ bool CapstoneTokenizer::IsHighlightableToken(const SingleToken & token)
return true;
}
bool CapstoneTokenizer::tokenTextPoolEquals(const QString & a, const QString & b)
bool ZydisTokenizer::tokenTextPoolEquals(const QString & a, const QString & b)
{
if(a.compare(b, Qt::CaseInsensitive) == 0)
return true;
@ -277,7 +277,7 @@ bool CapstoneTokenizer::tokenTextPoolEquals(const QString & a, const QString & b
return found1.value() == found2.value();
}
bool CapstoneTokenizer::TokenEquals(const SingleToken* a, const SingleToken* b, bool ignoreSize)
bool ZydisTokenizer::TokenEquals(const SingleToken* a, const SingleToken* b, bool ignoreSize)
{
if(!a || !b)
return false;
@ -291,7 +291,7 @@ bool CapstoneTokenizer::TokenEquals(const SingleToken* a, const SingleToken* b,
return tokenTextPoolEquals(a->text, b->text);
}
void CapstoneTokenizer::addToken(TokenType type, QString text, const TokenValue & value)
void ZydisTokenizer::addToken(TokenType type, QString text, const TokenValue & value)
{
switch(type)
{
@ -308,12 +308,12 @@ void CapstoneTokenizer::addToken(TokenType type, QString text, const TokenValue
_inst.tokens.push_back(SingleToken(isNop ? TokenType::MnemonicNop : type, text, value));
}
void CapstoneTokenizer::addToken(TokenType type, const QString & text)
void ZydisTokenizer::addToken(TokenType type, const QString & text)
{
addToken(type, text, TokenValue());
}
void CapstoneTokenizer::addMemoryOperator(char operatorText)
void ZydisTokenizer::addMemoryOperator(char operatorText)
{
if(_bMemorySpaces)
addToken(TokenType::MemoryOperatorSpace, " ");
@ -324,7 +324,7 @@ void CapstoneTokenizer::addMemoryOperator(char operatorText)
addToken(TokenType::MemoryOperatorSpace, " ");
}
QString CapstoneTokenizer::printValue(const TokenValue & value, bool expandModule, int maxModuleLength) const
QString ZydisTokenizer::printValue(const TokenValue & value, bool expandModule, int maxModuleLength) const
{
QString labelText;
char label_[MAX_LABEL_SIZE] = "";
@ -337,7 +337,7 @@ QString CapstoneTokenizer::printValue(const TokenValue & value, bool expandModul
if(_bNoCurrentModuleText)
{
duint size, base;
base = DbgMemFindBaseAddr(this->GetCapstone().Address(), &size);
base = DbgMemFindBaseAddr(this->GetZydis().Address(), &size);
if(addr >= base && addr < base + size)
bHasModule = false;
else
@ -365,7 +365,7 @@ QString CapstoneTokenizer::printValue(const TokenValue & value, bool expandModul
return finalText;
}
bool CapstoneTokenizer::tokenizePrefix()
bool ZydisTokenizer::tokenizePrefix()
{
//TODO: what happens with multiple prefixes?
bool hasPrefix = true;
@ -399,7 +399,7 @@ bool CapstoneTokenizer::tokenizePrefix()
return true;
}
bool CapstoneTokenizer::tokenizeMnemonic()
bool ZydisTokenizer::tokenizeMnemonic()
{
QString mnemonic = QString(_cp.Mnemonic().c_str());
_mnemonicType = TokenType::MnemonicNormal;
@ -427,7 +427,7 @@ bool CapstoneTokenizer::tokenizeMnemonic()
return tokenizeMnemonic(_mnemonicType, mnemonic);
}
bool CapstoneTokenizer::tokenizeMnemonic(TokenType type, const QString & mnemonic)
bool ZydisTokenizer::tokenizeMnemonic(TokenType type, const QString & mnemonic)
{
addToken(type, mnemonic);
if(_bTabbedMnemonic)
@ -443,7 +443,7 @@ bool CapstoneTokenizer::tokenizeMnemonic(TokenType type, const QString & mnemoni
return true;
}
bool CapstoneTokenizer::tokenizeOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizeOperand(const ZydisDecodedOperand & op)
{
switch(op.type)
{
@ -460,7 +460,7 @@ bool CapstoneTokenizer::tokenizeOperand(const ZydisDecodedOperand & op)
}
}
bool CapstoneTokenizer::tokenizeRegOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizeRegOperand(const ZydisDecodedOperand & op)
{
auto registerType = TokenType::GeneralRegister;
auto reg = op.reg;
@ -492,7 +492,7 @@ bool CapstoneTokenizer::tokenizeRegOperand(const ZydisDecodedOperand & op)
return true;
}
bool CapstoneTokenizer::tokenizeImmOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizeImmOperand(const ZydisDecodedOperand & op)
{
duint value;
TokenType valueType;
@ -513,7 +513,7 @@ bool CapstoneTokenizer::tokenizeImmOperand(const ZydisDecodedOperand & op)
return true;
}
bool CapstoneTokenizer::tokenizeMemOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizeMemOperand(const ZydisDecodedOperand & op)
{
auto opsize = op.size / 8;
@ -608,7 +608,7 @@ bool CapstoneTokenizer::tokenizeMemOperand(const ZydisDecodedOperand & op)
return true;
}
bool CapstoneTokenizer::tokenizePtrOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizePtrOperand(const ZydisDecodedOperand & op)
{
auto segValue = TokenValue(2, op.ptr.segment);
addToken(TokenType::MemorySegment, printValue(segValue, true, _maxModuleLength), segValue);
@ -621,7 +621,7 @@ bool CapstoneTokenizer::tokenizePtrOperand(const ZydisDecodedOperand & op)
return true;
}
bool CapstoneTokenizer::tokenizeInvalidOperand(const ZydisDecodedOperand & op)
bool ZydisTokenizer::tokenizeInvalidOperand(const ZydisDecodedOperand & op)
{
addToken(TokenType::MnemonicUnusual, "???");
return true;

View File

@ -1,5 +1,5 @@
#ifndef _CAPSTONE_GUI_H
#define _CAPSTONE_GUI_H
#ifndef ZYDISTOKENIZER_H
#define ZYDISTOKENIZER_H
#include <zydis_wrapper.h>
#include "RichTextPainter.h"
@ -8,7 +8,7 @@
#include <QHash>
#include <QtCore>
class CapstoneTokenizer
class ZydisTokenizer
{
public:
enum class TokenType
@ -153,13 +153,13 @@ public:
}
};
CapstoneTokenizer(int maxModuleLength);
ZydisTokenizer(int maxModuleLength);
bool Tokenize(duint addr, const unsigned char* data, int datasize, InstructionToken & instruction);
bool TokenizeData(const QString & datatype, const QString & data, InstructionToken & instruction);
void UpdateConfig();
void SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bHidePointerSizes, bool bHideNormalSegments, bool bMemorySpaces, bool bNoHighlightOperands, bool bNoCurrentModuleText, bool b0xPrefixValues);
int Size() const;
const Zydis & GetCapstone() const;
const Zydis & GetZydis() const;
static void UpdateColors();
static void UpdateStringPool();
@ -207,4 +207,4 @@ private:
bool tokenizeInvalidOperand(const ZydisDecodedOperand & op);
};
#endif //_CAPSTONE_GUI_H
#endif // ZYDISTOKENIZER_H

View File

@ -282,7 +282,7 @@ void BreakpointsView::updateBreakpointsSlot()
if(DbgMemRead(bp.addr, data, sizeof(data)))
{
auto instr = mDisasm->DisassembleAt(data, sizeof(data), 0, bp.addr);
CapstoneTokenizer::TokenToRichText(instr.tokens, richDisasm, 0);
ZydisTokenizer::TokenToRichText(instr.tokens, richDisasm, 0);
for(auto & token : richDisasm)
result += token.text;
}

View File

@ -1507,9 +1507,9 @@ void CPUDisassembly::pushSelectionInto(bool copyBytes, QTextStream & stream, QTe
{
RichTextPainter::List richText;
if(mHighlightToken.text.length())
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
else
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, 0);
RichTextPainter::htmlRichText(richText, htmlDisassembly, disassembly);
}
else
@ -1678,9 +1678,9 @@ void CPUDisassembly::copyDisassemblySlot()
}
RichTextPainter::List richText;
if(mHighlightToken.text.length())
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
else
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, 0);
RichTextPainter::htmlRichText(richText, clipboardHtml, clipboard);
return true;
});
@ -2031,7 +2031,7 @@ void CPUDisassembly::copyTokenValueSlot()
bool CPUDisassembly::getTokenValueText(QString & text)
{
if(mHighlightToken.type <= CapstoneTokenizer::TokenType::MnemonicUnusual)
if(mHighlightToken.type <= ZydisTokenizer::TokenType::MnemonicUnusual)
return false;
duint value = mHighlightToken.value.value;
if(!mHighlightToken.value.size && !DbgFunctions()->ValFromString(mHighlightToken.text.toUtf8().constData(), &value))

View File

@ -1529,7 +1529,7 @@ void DisassemblerGraphView::loadCurrentGraph()
currentBlockMap[addr] = block.entry;
Instruction_t instrTok = disasm.DisassembleAt((byte_t*)nodeInstr.data, sizeof(nodeInstr.data), 0, addr, false);
RichTextPainter::List richText;
CapstoneTokenizer::TokenToRichText(instrTok.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(instrTok.tokens, richText, 0);
// add rva to node instruction text
if(showGraphRva)

View File

@ -143,7 +143,7 @@ void DisassemblyPopup::setAddress(duint Address)
for(auto & instruction : instBuffer)
{
RichTextPainter::List richText;
CapstoneTokenizer::TokenToRichText(instruction.tokens, richText, nullptr);
ZydisTokenizer::TokenToRichText(instruction.tokens, richText, nullptr);
// Calculate width
int currentInstructionWidth = 0;
for(auto & token : richText)

View File

@ -1455,15 +1455,15 @@ void RegistersView::mousePressEvent(QMouseEvent* event)
if(CPUDisassemblyView->isHighlightMode())
{
if(mGPR.contains(r) && r != REGISTER_NAME::EFLAGS)
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::GeneralRegister, mRegisterMapping.constFind(r).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::GeneralRegister, mRegisterMapping.constFind(r).value()));
else if(mFPUMMX.contains(r))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::MmxRegister, mRegisterMapping.constFind(r).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::MmxRegister, mRegisterMapping.constFind(r).value()));
else if(mFPUXMM.contains(r))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::XmmRegister, mRegisterMapping.constFind(r).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::XmmRegister, mRegisterMapping.constFind(r).value()));
else if(mFPUYMM.contains(r))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::YmmRegister, mRegisterMapping.constFind(r).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::YmmRegister, mRegisterMapping.constFind(r).value()));
else if(mSEGMENTREGISTER.contains(r))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::MemorySegment, mRegisterMapping.constFind(r).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::MemorySegment, mRegisterMapping.constFind(r).value()));
else
mSelected = r;
}
@ -2135,7 +2135,7 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
uint8_t highlight = 0;
for(const auto & reg : mHighlightRegs)
{
if(!CapstoneTokenizer::tokenTextPoolEquals(regName, reg.first))
if(!ZydisTokenizer::tokenTextPoolEquals(regName, reg.first))
continue;
highlight = reg.second;
break;
@ -2631,15 +2631,15 @@ void RegistersView::onHighlightSlot()
{
Disassembly* CPUDisassemblyView = mParent->getDisasmWidget();
if(mGPR.contains(mSelected) && mSelected != REGISTER_NAME::EFLAGS)
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::GeneralRegister, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::GeneralRegister, mRegisterMapping.constFind(mSelected).value()));
else if(mSEGMENTREGISTER.contains(mSelected))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::MemorySegment, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::MemorySegment, mRegisterMapping.constFind(mSelected).value()));
else if(mFPUMMX.contains(mSelected))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::MmxRegister, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::MmxRegister, mRegisterMapping.constFind(mSelected).value()));
else if(mFPUXMM.contains(mSelected))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::XmmRegister, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::XmmRegister, mRegisterMapping.constFind(mSelected).value()));
else if(mFPUYMM.contains(mSelected))
CPUDisassemblyView->hightlightToken(CapstoneTokenizer::SingleToken(CapstoneTokenizer::TokenType::YmmRegister, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->hightlightToken(ZydisTokenizer::SingleToken(ZydisTokenizer::TokenType::YmmRegister, mRegisterMapping.constFind(mSelected).value()));
CPUDisassemblyView->reloadData();
}

View File

@ -339,9 +339,9 @@ NotDebuggingLabel:
Instruction_t inst = mDisasm->DisassembleAt(opcodes, opcodeSize, 0, mTraceFile->Registers(index).regcontext.cip, false);
if(mHighlightToken.text.length())
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
else
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, 0);
RichTextPainter::paintRichText(painter, x + 0, y, getColumnWidth(col) - 0, getRowHeight(), 4, richText, mFontMetrics);
return "";
}
@ -608,29 +608,29 @@ void TraceBrowser::mousePressEvent(QMouseEvent* event)
int opcodeSize;
mTraceFile->OpCode(index, opcode, &opcodeSize);
inst = mDisasm->DisassembleAt(opcode, opcodeSize, mTraceFile->Registers(index).regcontext.cip, 0);
CapstoneTokenizer::SingleToken token;
if(CapstoneTokenizer::TokenFromX(inst.tokens, token, event->x() - getColumnPosition(3), mFontMetrics))
ZydisTokenizer::SingleToken token;
if(ZydisTokenizer::TokenFromX(inst.tokens, token, event->x() - getColumnPosition(3), mFontMetrics))
{
if(CapstoneTokenizer::IsHighlightableToken(token))
if(ZydisTokenizer::IsHighlightableToken(token))
{
if(!CapstoneTokenizer::TokenEquals(&token, &mHighlightToken) || event->button() == Qt::RightButton)
if(!ZydisTokenizer::TokenEquals(&token, &mHighlightToken) || event->button() == Qt::RightButton)
mHighlightToken = token;
else
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
}
else if(!mPermanentHighlightingMode)
{
mHighlightToken = CapstoneTokenizer::SingleToken();
mHighlightToken = ZydisTokenizer::SingleToken();
}
if(mHighlightingMode) //disable highlighting mode after clicked
{
@ -861,7 +861,7 @@ QString TraceBrowser::getIndexText(duint index)
void TraceBrowser::updateColors()
{
AbstractTableView::updateColors();
//CapstoneTokenizer::UpdateColors(); //Already called in disassembly
//ZydisTokenizer::UpdateColors(); //Already called in disassembly
mDisasm->UpdateConfig();
mBackgroundColor = ConfigColor("DisassemblyBackgroundColor");
@ -1086,9 +1086,9 @@ void TraceBrowser::pushSelectionInto(bool copyBytes, QTextStream & stream, QText
{
RichTextPainter::List richText;
if(mHighlightToken.text.length())
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, &mHighlightToken);
else
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, 0);
RichTextPainter::htmlRichText(richText, htmlDisassembly, disassembly);
}
else
@ -1217,7 +1217,7 @@ void TraceBrowser::copyDisassemblySlot()
int opcodeSize;
mTraceFile->OpCode(i, opcode, &opcodeSize);
Instruction_t inst = mDisasm->DisassembleAt(opcode, opcodeSize, mTraceFile->Registers(i).regcontext.cip, 0);
CapstoneTokenizer::TokenToRichText(inst.tokens, richText, 0);
ZydisTokenizer::TokenToRichText(inst.tokens, richText, 0);
RichTextPainter::htmlRichText(richText, clipboardHtml, clipboard);
}
clipboardHtml += QString("</div>");

View File

@ -56,7 +56,7 @@ private:
};
SelectionData mSelection;
CapstoneTokenizer::SingleToken mHighlightToken;
ZydisTokenizer::SingleToken mHighlightToken;
bool mHighlightingMode;
bool mPermanentHighlightingMode;
bool mAutoDisassemblyFollowSelection;

View File

@ -107,7 +107,7 @@ int main(int argc, char* argv[])
TLS_TranslatedStringMap = new std::map<DWORD, TranslatedStringStorage>();
// initialize capstone
// initialize Zydis
Zydis::GlobalInitialize();
// load config file + set config font
@ -165,7 +165,7 @@ int main(int argc, char* argv[])
delete temp;
}
//TODO free capstone/config/bridge and prevent use after free.
//TODO free Zydis/config/bridge and prevent use after free.
return result;
}

View File

@ -83,7 +83,7 @@ SOURCES += \
Src/BasicView/HexDump.cpp \
Src/BasicView/AbstractTableView.cpp \
Src/Disassembler/QBeaEngine.cpp \
Src/Disassembler/capstone_gui.cpp \
Src/Disassembler/ZydisTokenizer.cpp \
Src/Memory/MemoryPage.cpp \
Src/Bridge/Bridge.cpp \
Src/BasicView/StdTable.cpp \
@ -198,7 +198,7 @@ HEADERS += \
Src/BasicView/HexDump.h \
Src/BasicView/AbstractTableView.h \
Src/Disassembler/QBeaEngine.h \
Src/Disassembler/capstone_gui.h \
Src/Disassembler/ZydisTokenizer.h \
Src/Memory/MemoryPage.h \
Src/Bridge/Bridge.h \
Src/Exports.h \

View File

@ -67,7 +67,7 @@ SOURCES += \
gui/Src/Gui/XrefBrowseDialog.cpp \
gui/Src/Gui/YaraRuleSelectionDialog.cpp \
gui/Src/main.cpp \
gui/Src/Disassembler/capstone_gui.cpp \
gui/Src/Disassembler/ZydisTokenizer.cpp \
gui/Src/Disassembler/QBeaEngine.cpp \
dbg/_dbgfunctions.cpp \
dbg/_exports.cpp \
@ -293,7 +293,7 @@ HEADERS += \
gui/Src/Gui/WordEditDialog.h \
gui/Src/Gui/XrefBrowseDialog.h \
gui/Src/Gui/YaraRuleSelectionDialog.h \
gui/Src/Disassembler/capstone_gui.h \
gui/Src/Disassembler/ZydisTokenizer.h \
gui/Src/Disassembler/QBeaEngine.h \
gui/Src/Gui/StructWidget.h \
dbg/_dbgfunctions.h \