DBG+GUI: added cocksucker option (issue #211, shit)
This commit is contained in:
parent
a9d82f3fae
commit
82347cd094
|
@ -833,6 +833,7 @@ extern "C" DLL_EXPORT duint _dbg_sendmessage(DBGMSG type, void* param1, void* pa
|
|||
bUndecorateSymbolNames = settingboolget("Engine", "UndecorateSymbolNames");
|
||||
bEnableSourceDebugging = settingboolget("Engine", "EnableSourceDebugging");
|
||||
bTraceRecordEnabledDuringTrace = settingboolget("Engine", "TraceRecordEnabledDuringTrace");
|
||||
bCocksucker = settingboolget("Engine", "Cocksucker");
|
||||
|
||||
duint setting;
|
||||
if(BridgeSettingGetUint("Engine", "BreakpointType", &setting))
|
||||
|
|
|
@ -84,6 +84,7 @@ HANDLE hProcessToken;
|
|||
bool bUndecorateSymbolNames = true;
|
||||
bool bEnableSourceDebugging = true;
|
||||
bool bTraceRecordEnabledDuringTrace = true;
|
||||
bool bCocksucker = false;
|
||||
duint DbgEvents = 0;
|
||||
|
||||
static duint dbgcleartracecondition()
|
||||
|
|
|
@ -133,5 +133,6 @@ extern char szSymbolCachePath[MAX_PATH];
|
|||
extern bool bUndecorateSymbolNames;
|
||||
extern bool bEnableSourceDebugging;
|
||||
extern bool bTraceRecordEnabledDuringTrace;
|
||||
extern bool bCocksucker;
|
||||
|
||||
#endif // _DEBUGGER_H
|
||||
|
|
|
@ -1259,8 +1259,26 @@ CMDRESULT cbDebugBplist(int argc, char* argv[])
|
|||
return STATUS_CONTINUE;
|
||||
}
|
||||
|
||||
static bool cocksucker(int argc, char* argv[])
|
||||
{
|
||||
if(!bCocksucker)
|
||||
return false;
|
||||
duint cip = GetContextDataEx(hActiveThread, UE_CIP);
|
||||
unsigned char ch;
|
||||
MemRead(cip, &ch, sizeof(ch));
|
||||
if(ch == 0xCC && getLastExceptionInfo().ExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT)
|
||||
{
|
||||
dputs("Cocksucker detected!");
|
||||
cbDebugSkip(argc, argv);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CMDRESULT cbDebugStepInto(int argc, char* argv[])
|
||||
{
|
||||
if(cocksucker(argc, argv))
|
||||
return STATUS_CONTINUE;
|
||||
StepInto((void*)cbStep);
|
||||
// History
|
||||
HistoryAdd();
|
||||
|
@ -1276,6 +1294,8 @@ CMDRESULT cbDebugeStepInto(int argc, char* argv[])
|
|||
|
||||
CMDRESULT cbDebugStepOver(int argc, char* argv[])
|
||||
{
|
||||
if(cocksucker(argc, argv))
|
||||
return STATUS_CONTINUE;
|
||||
StepOver((void*)cbStep);
|
||||
// History
|
||||
HistoryClear();
|
||||
|
|
|
@ -6,7 +6,7 @@ CapstoneTokenizer::CapstoneTokenizer(int maxModuleLength)
|
|||
: _maxModuleLength(maxModuleLength),
|
||||
_success(false)
|
||||
{
|
||||
SetConfig(false, false, false, false);
|
||||
SetConfig(false, false, false, false, false);
|
||||
}
|
||||
|
||||
std::map<CapstoneTokenizer::TokenType, CapstoneTokenizer::TokenColor> CapstoneTokenizer::colorNamesMap;
|
||||
|
@ -138,19 +138,23 @@ bool CapstoneTokenizer::TokenizeData(const QString & datatype, const QString & d
|
|||
|
||||
void CapstoneTokenizer::UpdateConfig()
|
||||
{
|
||||
duint cocksucker;
|
||||
bool bCocksucker = BridgeSettingGetUint("Engine", "Cocksucker", &cocksucker) && cocksucker;
|
||||
SetConfig(ConfigBool("Disassembler", "Uppercase"),
|
||||
ConfigBool("Disassembler", "TabbedMnemonic"),
|
||||
ConfigBool("Disassembler", "ArgumentSpaces"),
|
||||
ConfigBool("Disassembler", "MemorySpaces"));
|
||||
ConfigBool("Disassembler", "MemorySpaces"),
|
||||
bCocksucker);
|
||||
UpdateStringPool();
|
||||
}
|
||||
|
||||
void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces)
|
||||
void CapstoneTokenizer::SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces, bool bCocksucker)
|
||||
{
|
||||
_bUppercase = bUppercase;
|
||||
_bTabbedMnemonic = bTabbedMnemonic;
|
||||
_bArgumentSpaces = bArgumentSpaces;
|
||||
_bMemorySpaces = bMemorySpaces;
|
||||
_bCocksucker = bCocksucker;
|
||||
}
|
||||
|
||||
int CapstoneTokenizer::Size() const
|
||||
|
@ -388,6 +392,9 @@ bool CapstoneTokenizer::tokenizeMnemonic()
|
|||
}
|
||||
QString mnemonic = QString(_cp.Mnemonic().c_str());
|
||||
|
||||
if(type == TokenType::MnemonicInt3 && _bCocksucker)
|
||||
mnemonic = "cocksucker!";
|
||||
|
||||
tokenizeMnemonic(type, mnemonic);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -139,7 +139,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);
|
||||
void SetConfig(bool bUppercase, bool bTabbedMnemonic, bool bArgumentSpaces, bool bMemorySpaces, bool bCocksucker);
|
||||
int Size() const;
|
||||
const Capstone & GetCapstone() const;
|
||||
|
||||
|
@ -163,6 +163,7 @@ private:
|
|||
bool _bTabbedMnemonic;
|
||||
bool _bArgumentSpaces;
|
||||
bool _bMemorySpaces;
|
||||
bool _bCocksucker;
|
||||
|
||||
void addToken(TokenType type, QString text, const TokenValue & value);
|
||||
void addToken(TokenType type, const QString & text);
|
||||
|
|
|
@ -117,6 +117,7 @@ void SettingsDialog::LoadSettings()
|
|||
GetSettingBool("Engine", "SaveDatabaseInProgramDirectory", &settings.engineSaveDatabaseInProgramDirectory);
|
||||
GetSettingBool("Engine", "DisableDatabaseCompression", &settings.engineDisableDatabaseCompression);
|
||||
GetSettingBool("Engine", "TraceRecordEnabledDuringTrace", &settings.engineEnableTraceRecordDuringTrace);
|
||||
GetSettingBool("Engine", "Cocksucker", &settings.engineCocksucker);
|
||||
switch(settings.engineCalcType)
|
||||
{
|
||||
case calc_signed:
|
||||
|
@ -144,6 +145,7 @@ void SettingsDialog::LoadSettings()
|
|||
ui->chkSaveDatabaseInProgramDirectory->setChecked(settings.engineSaveDatabaseInProgramDirectory);
|
||||
ui->chkDisableDatabaseCompression->setChecked(settings.engineDisableDatabaseCompression);
|
||||
ui->chkTraceRecordEnabledDuringTrace->setChecked(settings.engineEnableTraceRecordDuringTrace);
|
||||
ui->chkCocksucker->setChecked(settings.engineCocksucker);
|
||||
|
||||
//Exceptions tab
|
||||
char exceptionRange[MAX_SETTING_SIZE] = "";
|
||||
|
@ -270,6 +272,7 @@ void SettingsDialog::SaveSettings()
|
|||
BridgeSettingSetUint("Engine", "SaveDatabaseInProgramDirectory", settings.engineSaveDatabaseInProgramDirectory);
|
||||
BridgeSettingSetUint("Engine", "DisableDatabaseCompression", settings.engineDisableDatabaseCompression);
|
||||
BridgeSettingSetUint("Engine", "TraceRecordEnabledDuringTrace", settings.engineEnableTraceRecordDuringTrace);
|
||||
BridgeSettingSetUint("Engine", "Cocksucker", settings.engineCocksucker);
|
||||
|
||||
//Exceptions tab
|
||||
QString exceptionRange = "";
|
||||
|
@ -691,3 +694,9 @@ void SettingsDialog::on_chkNoCloseDialog_toggled(bool checked)
|
|||
{
|
||||
settings.guiNoCloseDialog = checked;
|
||||
}
|
||||
|
||||
void SettingsDialog::on_chkCocksucker_toggled(bool checked)
|
||||
{
|
||||
bTokenizerConfigUpdated = true;
|
||||
settings.engineCocksucker = checked;
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ private slots:
|
|||
void on_chkDisableDatabaseCompression_stateChanged(int arg1);
|
||||
void on_chkSaveDatabaseInProgramDirectory_stateChanged(int arg1);
|
||||
void on_chkTraceRecordEnabledDuringTrace_stateChanged(int arg1);
|
||||
void on_chkCocksucker_toggled(bool checked);
|
||||
//Exception tab
|
||||
void on_btnAddRange_clicked();
|
||||
void on_btnDeleteRange_clicked();
|
||||
|
@ -124,6 +125,7 @@ private:
|
|||
bool engineSaveDatabaseInProgramDirectory;
|
||||
bool engineDisableDatabaseCompression;
|
||||
bool engineEnableTraceRecordDuringTrace;
|
||||
bool engineCocksucker;
|
||||
//Exception Tab
|
||||
QList<RangeStruct>* exceptionRanges;
|
||||
//Disasm Tab
|
||||
|
|
|
@ -289,6 +289,40 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="chkCocksucker">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>I'm a <a href="https://github.com/x64dbg/x64dbg/issues/211#issuecomment-235569017">cocksucker</a>!</string>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
Loading…
Reference in New Issue