1
0
Fork 0

Add option to disable ASLR + fix race condition with breakpoints

Closes #1764
Closes #2716
This commit is contained in:
Duncan Ogilvie 2022-09-10 01:15:09 +02:00
parent 870039f1d1
commit 1de3253cbd
6 changed files with 23 additions and 2 deletions

2
deps

@ -1 +1 @@
Subproject commit 5b9c401097d846928d4d401a2eaad250a78149c5
Subproject commit 5f577f4258ca7b9b13062c7651d7779a24368670

View File

@ -58,6 +58,8 @@
#define UE_ENGINE_SET_DEBUG_PRIVILEGE 9
#define UE_ENGINE_SAFE_ATTACH 10
#define UE_ENGINE_MEMBP_ALT 11
#define UE_ENGINE_DISABLE_ASLR 12
#define UE_ENGINE_SAFE_STEP 13
#define UE_OPTION_REMOVEALL 1
#define UE_OPTION_DISABLEALL 2

View File

@ -1098,6 +1098,7 @@ extern "C" DLL_EXPORT duint _dbg_sendmessage(DBGMSG type, void* param1, void* pa
SetEngineVariable(UE_ENGINE_SET_DEBUG_PRIVILEGE, settingboolget("Engine", "EnableDebugPrivilege"));
SetEngineVariable(UE_ENGINE_SAFE_ATTACH, settingboolget("Engine", "SafeAttach"));
SetEngineVariable(UE_ENGINE_MEMBP_ALT, settingboolget("Engine", "MembpAlt"));
SetEngineVariable(UE_ENGINE_DISABLE_ASLR, settingboolget("Engine", "DisableAslr"));
bOnlyCipAutoComments = settingboolget("Disassembler", "OnlyCipAutoComments");
bNoSourceLineAutoComments = settingboolget("Disassembler", "NoSourceLineAutoComments");
bListAllPages = settingboolget("Engine", "ListAllPages");

View File

@ -66,6 +66,7 @@ void SettingsDialog::LoadSettings()
settings.engineNoScriptTimeout = false;
settings.engineIgnoreInconsistentBreakpoints = false;
settings.engineNoWow64SingleStepWorkaround = false;
settings.engineDisableAslr = false;
settings.engineMaxTraceCount = 50000;
settings.engineAnimateInterval = 50;
settings.engineHardcoreThreadSwitchWarning = false;
@ -161,6 +162,7 @@ void SettingsDialog::LoadSettings()
GetSettingBool("Engine", "HardcoreThreadSwitchWarning", &settings.engineHardcoreThreadSwitchWarning);
GetSettingBool("Engine", "VerboseExceptionLogging", &settings.engineVerboseExceptionLogging);
GetSettingBool("Engine", "NoWow64SingleStepWorkaround", &settings.engineNoWow64SingleStepWorkaround);
GetSettingBool("Engine", "DisableAslr", &settings.engineDisableAslr);
if(BridgeSettingGetUint("Engine", "MaxTraceCount", &cur))
settings.engineMaxTraceCount = int(cur);
if(BridgeSettingGetUint("Engine", "AnimateInterval", &cur))
@ -206,6 +208,7 @@ void SettingsDialog::LoadSettings()
ui->chkHardcoreThreadSwitchWarning->setChecked(settings.engineHardcoreThreadSwitchWarning);
ui->chkVerboseExceptionLogging->setChecked(settings.engineVerboseExceptionLogging);
ui->chkNoWow64SingleStepWorkaround->setChecked(settings.engineNoWow64SingleStepWorkaround);
ui->chkDisableAslr->setChecked(settings.engineDisableAslr);
ui->spinMaxTraceCount->setValue(settings.engineMaxTraceCount);
ui->spinAnimateInterval->setValue(settings.engineAnimateInterval);
@ -418,6 +421,7 @@ void SettingsDialog::SaveSettings()
BridgeSettingSetUint("Engine", "VerboseExceptionLogging", settings.engineVerboseExceptionLogging);
BridgeSettingSetUint("Engine", "HardcoreThreadSwitchWarning", settings.engineHardcoreThreadSwitchWarning);
BridgeSettingSetUint("Engine", "NoWow64SingleStepWorkaround", settings.engineNoWow64SingleStepWorkaround);
BridgeSettingSetUint("Engine", "DisableAslr", settings.engineDisableAslr);
//Exceptions tab
QString exceptionRange = "";
@ -1083,6 +1087,11 @@ void SettingsDialog::on_chkNoWow64SingleStepWorkaround_toggled(bool checked)
settings.engineNoWow64SingleStepWorkaround = checked;
}
void SettingsDialog::on_chkDisableAslr_toggled(bool checked)
{
settings.engineDisableAslr = checked;
}
void SettingsDialog::on_chkNoCurrentModuleText_toggled(bool checked)
{
bTokenizerConfigUpdated = true;

View File

@ -62,6 +62,7 @@ private slots:
void on_chkHardcoreThreadSwitchWarning_toggled(bool checked);
void on_chkVerboseExceptionLogging_toggled(bool checked);
void on_chkNoWow64SingleStepWorkaround_toggled(bool checked);
void on_chkDisableAslr_toggled(bool checked);
void on_spinMaxTraceCount_valueChanged(int arg1);
void on_spinAnimateInterval_valueChanged(int arg1);
//Exception tab
@ -203,6 +204,7 @@ private:
bool engineHardcoreThreadSwitchWarning;
bool engineVerboseExceptionLogging;
bool engineNoWow64SingleStepWorkaround;
bool engineDisableAslr;
int engineMaxTraceCount;
int engineAnimateInterval;
//Exception Tab

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>386</width>
<height>525</height>
<height>542</height>
</rect>
</property>
<property name="sizePolicy">
@ -375,6 +375,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chkDisableAslr">
<property name="text">
<string>Disable ASLR</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayoutMaxTraceCount">
<item>