√ Allow hiding local module name for memory addresses in the same page. (#1474)
This commit is contained in:
parent
54ac01ef66
commit
ef2af9d631
|
@ -9,7 +9,7 @@ CapstoneTokenizer::CapstoneTokenizer(int maxModuleLength)
|
|||
isNop(false),
|
||||
_mnemonicType(TokenType::Uncategorized)
|
||||
{
|
||||
SetConfig(false, false, false, false, false);
|
||||
SetConfig(false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
CapstoneTokenizer::TokenColor colorNamesMap[CapstoneTokenizer::TokenType::Last];
|
||||
|
@ -172,18 +172,20 @@ void CapstoneTokenizer::UpdateConfig()
|
|||
ConfigBool("Disassembler", "TabbedMnemonic"),
|
||||
ConfigBool("Disassembler", "ArgumentSpaces"),
|
||||
ConfigBool("Disassembler", "MemorySpaces"),
|
||||
ConfigBool("Disassembler", "NoHighlightOperands"));
|
||||
ConfigBool("Disassembler", "NoHighlightOperands"),
|
||||
ConfigBool("Disassembler", "NoCurrentModuleText"));
|
||||
_maxModuleLength = (int)ConfigUint("Disassembler", "MaxModuleSize");
|
||||
UpdateStringPool();
|
||||
}
|
||||
|
||||
void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces, bool bNoHighlightOperands)
|
||||
void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces, bool bNoHighlightOperands, bool bNoCurrentModuleText)
|
||||
{
|
||||
_bUppercase = bUppercase;
|
||||
_bTabbedMnemonic = bTabbedMnemonic;
|
||||
_bArgumentSpaces = bArgumentSpaces;
|
||||
_bMemorySpaces = bMemorySpaces;
|
||||
_bNoHighlightOperands = bNoHighlightOperands;
|
||||
_bNoCurrentModuleText = bNoCurrentModuleText;
|
||||
}
|
||||
|
||||
int CapstoneTokenizer::Size() const
|
||||
|
@ -322,7 +324,18 @@ QString CapstoneTokenizer::printValue(const TokenValue & value, bool expandModul
|
|||
duint addr = value.value;
|
||||
bool bHasLabel = DbgGetLabelAt(addr, SEG_DEFAULT, label_);
|
||||
labelText = QString(label_);
|
||||
bool bHasModule = (expandModule && DbgGetModuleAt(addr, module_) && !QString(labelText).startsWith("JMP.&"));
|
||||
bool bHasModule;
|
||||
if(_bNoCurrentModuleText)
|
||||
{
|
||||
duint size, base;
|
||||
base = DbgMemFindBaseAddr(this->GetCapstone().Address(), &size);
|
||||
if(addr >= base && addr < base + size)
|
||||
bHasModule = false;
|
||||
else
|
||||
bHasModule = (expandModule && DbgGetModuleAt(addr, module_) && !QString(labelText).startsWith("JMP.&"));
|
||||
}
|
||||
else
|
||||
bHasModule = (expandModule && DbgGetModuleAt(addr, module_) && !QString(labelText).startsWith("JMP.&"));
|
||||
moduleText = QString(module_);
|
||||
if(maxModuleLength != -1)
|
||||
moduleText.truncate(maxModuleLength);
|
||||
|
|
|
@ -147,7 +147,7 @@ public:
|
|||
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 bMemorySpaces, bool bNoHighlightOperands);
|
||||
void SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces, bool bNoHighlightOperands, bool bNoCurrentModuleText);
|
||||
int Size() const;
|
||||
const Capstone & GetCapstone() const;
|
||||
|
||||
|
@ -173,6 +173,7 @@ private:
|
|||
bool _bArgumentSpaces;
|
||||
bool _bMemorySpaces;
|
||||
bool _bNoHighlightOperands;
|
||||
bool _bNoCurrentModuleText;
|
||||
TokenType _mnemonicType;
|
||||
|
||||
void addToken(TokenType type, QString text, const TokenValue & value);
|
||||
|
|
|
@ -69,6 +69,7 @@ void SettingsDialog::LoadSettings()
|
|||
settings.disasmUppercase = false;
|
||||
settings.disasmOnlyCipAutoComments = false;
|
||||
settings.disasmTabBetweenMnemonicAndArguments = false;
|
||||
settings.disasmNoCurrentModuleText = false;
|
||||
settings.guiNoForegroundWindow = true;
|
||||
|
||||
//Events tab
|
||||
|
@ -194,6 +195,7 @@ void SettingsDialog::LoadSettings()
|
|||
GetSettingBool("Disassembler", "TabbedMnemonic", &settings.disasmTabBetweenMnemonicAndArguments);
|
||||
GetSettingBool("Disassembler", "NoHighlightOperands", &settings.disasmNoHighlightOperands);
|
||||
GetSettingBool("Disassembler", "PermanentHighlightingMode", &settings.disasmPermanentHighlightingMode);
|
||||
GetSettingBool("Disassembler", "NoCurrentModuleText", &settings.disasmNoCurrentModuleText);
|
||||
ui->chkArgumentSpaces->setChecked(settings.disasmArgumentSpaces);
|
||||
ui->chkMemorySpaces->setChecked(settings.disasmMemorySpaces);
|
||||
ui->chkUppercase->setChecked(settings.disasmUppercase);
|
||||
|
@ -201,6 +203,7 @@ void SettingsDialog::LoadSettings()
|
|||
ui->chkTabBetweenMnemonicAndArguments->setChecked(settings.disasmTabBetweenMnemonicAndArguments);
|
||||
ui->chkNoHighlightOperands->setChecked(settings.disasmNoHighlightOperands);
|
||||
ui->chkPermanentHighlightingMode->setChecked(settings.disasmPermanentHighlightingMode);
|
||||
ui->chkNoCurrentModuleText->setChecked(settings.disasmNoCurrentModuleText);
|
||||
|
||||
//Gui tab
|
||||
GetSettingBool("Gui", "FpuRegistersLittleEndian", &settings.guiFpuRegistersLittleEndian);
|
||||
|
@ -332,6 +335,7 @@ void SettingsDialog::SaveSettings()
|
|||
BridgeSettingSetUint("Disassembler", "TabbedMnemonic", settings.disasmTabBetweenMnemonicAndArguments);
|
||||
BridgeSettingSetUint("Disassembler", "NoHighlightOperands", settings.disasmNoHighlightOperands);
|
||||
BridgeSettingSetUint("Disassembler", "PermanentHighlightingMode", settings.disasmPermanentHighlightingMode);
|
||||
BridgeSettingSetUint("Disassembler", "NoCurrentModuleText", settings.disasmNoCurrentModuleText);
|
||||
|
||||
//Gui tab
|
||||
BridgeSettingSetUint("Gui", "FpuRegistersLittleEndian", settings.guiFpuRegistersLittleEndian);
|
||||
|
@ -770,3 +774,9 @@ void SettingsDialog::on_chkNoWow64SingleStepWorkaround_toggled(bool checked)
|
|||
{
|
||||
settings.engineNoWow64SingleStepWorkaround = checked;
|
||||
}
|
||||
|
||||
void SettingsDialog::on_chkNoCurrentModuleText_toggled(bool checked)
|
||||
{
|
||||
bTokenizerConfigUpdated = true;
|
||||
settings.disasmNoCurrentModuleText = checked;
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ private slots:
|
|||
void on_chkOnlyCipAutoComments_stateChanged(int arg1);
|
||||
void on_chkTabBetweenMnemonicAndArguments_stateChanged(int arg1);
|
||||
void on_chkNoHighlightOperands_toggled(bool checked);
|
||||
void on_chkNoCurrentModuleText_toggled(bool checked);
|
||||
void on_chkPermanentHighlightingMode_toggled(bool checked);
|
||||
//Gui Tab
|
||||
void on_chkFpuRegistersLittleEndian_stateChanged(int arg1);
|
||||
|
@ -153,6 +154,7 @@ private:
|
|||
bool disasmOnlyCipAutoComments;
|
||||
bool disasmTabBetweenMnemonicAndArguments;
|
||||
bool disasmNoHighlightOperands;
|
||||
bool disasmNoCurrentModuleText;
|
||||
bool disasmPermanentHighlightingMode;
|
||||
//Gui Tab
|
||||
bool guiFpuRegistersLittleEndian;
|
||||
|
|
|
@ -517,6 +517,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkNoCurrentModuleText">
|
||||
<property name="text">
|
||||
<string>Hide module name for local memory addresses</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkPermanentHighlightingMode">
|
||||
<property name="text">
|
||||
|
|
|
@ -205,6 +205,7 @@ Configuration::Configuration() : QObject(), noMoreMsgbox(false)
|
|||
disassemblyBool.insert("LongDataInstruction", false);
|
||||
disassemblyBool.insert("NoHighlightOperands", false);
|
||||
disassemblyBool.insert("PermanentHighlightingMode", false);
|
||||
disassemblyBool.insert("NoCurrentModuleText", false);
|
||||
defaultBools.insert("Disassembler", disassemblyBool);
|
||||
|
||||
QMap<QString, bool> engineBool;
|
||||
|
|
Loading…
Reference in New Issue