Skip to content

Commit

Permalink
Analysis Menu-Cursor changes Issue #124 (hteso#189)
Browse files Browse the repository at this point in the history
* Add relro in the dashboard #105
  • Loading branch information
sergiodmn authored and radare committed Jul 24, 2017
1 parent 6c8adef commit 76bc053
Show file tree
Hide file tree
Showing 9 changed files with 218 additions and 44 deletions.
5 changes: 3 additions & 2 deletions src/analthread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ AnalThread::~AnalThread()
}
}

void AnalThread::start(IaitoRCore *core, int level)
void AnalThread::start(IaitoRCore *core, int level, QList<QString> advanced)
{
this->core = core;
this->level = level;
this->advanced = advanced;

QThread::start();
}
Expand All @@ -30,5 +31,5 @@ void AnalThread::start(IaitoRCore *core, int level)
void AnalThread::run()
{
//qDebug() << "Anal level: " << this->level;
core->analyze(this->level);
core->analyze(this->level, this->advanced);
}
3 changes: 2 additions & 1 deletion src/analthread.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class AnalThread : public QThread
explicit AnalThread(QWidget *parent = 0);
~AnalThread();

void start(IaitoRCore *core, int level);
void start(IaitoRCore *core, int level, QList<QString> advanced);

protected:
void run();
Expand All @@ -22,6 +22,7 @@ class AnalThread : public QThread
private:
IaitoRCore *core;
int level;
QList<QString> advanced;
};

#endif // ANALTHREAD_H
2 changes: 1 addition & 1 deletion src/iaitorcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ class IaitoRCore : public QObject
void setOptions(QString key);
bool loadFile(QString path, uint64_t loadaddr = 0LL, uint64_t mapaddr = 0LL, bool rw = false, int va = 0, int idx = 0, bool loadbin = false);
bool tryFile(QString path, bool rw);
void analyze(int level);
void analyze(int level, QList<QString> advanced);
void seek(QString addr);
void seek(ut64 offset);
ut64 math(const QString &expr);
Expand Down
8 changes: 4 additions & 4 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,17 +286,17 @@ void MainWindow::initUI()
connect(refresh_shortcut, SIGNAL(activated()), this, SLOT(refreshVisibleDockWidgets()));
}

void MainWindow::openFile(const QString &fn, int anal_level)
void MainWindow::openFile(const QString &fn, int anal_level, QList<QString> advanced)
{
QString project_name = qhelpers::uniqueProjectName(fn);

if (core->getProjectNames().contains(project_name))
openProject(project_name);
else
openNewFile(fn, anal_level);
openNewFile(fn, anal_level, advanced);
}

void MainWindow::openNewFile(const QString &fn, int anal_level)
void MainWindow::openNewFile(const QString &fn, int anal_level, QList<QString> advanced)
{
setFilename(fn);

Expand All @@ -305,7 +305,7 @@ void MainWindow::openNewFile(const QString &fn, int anal_level)
o->show();

if (anal_level >= 0)
o->setupAndStartAnalysis(anal_level);
o->setupAndStartAnalysis(anal_level, advanced);
}

void MainWindow::openProject(const QString &project_name)
Expand Down
4 changes: 2 additions & 2 deletions src/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class MainWindow : public QMainWindow
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

void openFile(const QString &fn, int anal_level = -1);
void openFile(const QString &fn, int anal_level = -1, QList<QString> advanced = QList<QString>());
void initUI();
void finalizeOpen();

Expand Down Expand Up @@ -210,7 +210,7 @@ private slots:
RVA cursor_address;

void openProject(const QString &project_name);
void openNewFile(const QString &fn, int anal_level);
void openNewFile(const QString &fn, int anal_level, QList<QString> advanced);

void toggleDockWidget(DockWidget *dock_widget);

Expand Down
64 changes: 54 additions & 10 deletions src/optionsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ OptionsDialog::OptionsDialog(MainWindow *main):
ui(new Ui::OptionsDialog),
analThread(this),
main(main),
defaultAnalLevel(3)
defaultAnalLevel(1)
{
ui->setupUi(this);
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
Expand All @@ -41,6 +41,7 @@ OptionsDialog::OptionsDialog(MainWindow *main):
ui->spacyCheckBox->setChecked(settings.value("bbline").toBool());

ui->hideFrame->setVisible(false);
ui->analoptionsFrame->setVisible(false);

// Add this so the dialog resizes when widgets are shown/hidden
//this->layout()->setSizeConstraint(QLayout::SetFixedSize);
Expand All @@ -57,7 +58,7 @@ OptionsDialog::~OptionsDialog()
delete ui;
}

void OptionsDialog::setupAndStartAnalysis(int level)
void OptionsDialog::setupAndStartAnalysis(int level, QList<QString> advanced)
{
ui->analSlider->setValue(level);

Expand Down Expand Up @@ -143,7 +144,7 @@ void OptionsDialog::setupAndStartAnalysis(int level)
// Threads stuff
// connect signal/slot

analThread.start(main->core, level);
analThread.start(main->core, level, advanced);
}

void OptionsDialog::on_closeButton_clicked()
Expand All @@ -153,7 +154,44 @@ void OptionsDialog::on_closeButton_clicked()

void OptionsDialog::on_okButton_clicked()
{
setupAndStartAnalysis(ui->analSlider->value());
QList<QString> advanced = QList<QString>();
if (ui->analSlider->value() == 3){
if (ui->aa_symbols->isChecked()){
advanced << "aa";
}
if (ui->aar_references->isChecked()){
advanced << "aar";
}
if (ui->aac_calls->isChecked()){
advanced << "aac";
}
if (ui->aan_rename->isChecked()){
advanced << "aan";
}
if (ui->aae_emulate->isChecked()){
advanced << "aae";
}
if (ui->aat_consecutive->isChecked()){
advanced << "aat";
}
if (ui->afta_typeargument->isChecked()){
advanced << "afta";
}
if (ui->aaT_aftertrap->isChecked()){
advanced << "aaT";
}
if (ui->aap_preludes->isChecked()){
advanced << "aap";
}
if (ui->jmptbl->isChecked()){
advanced << "e! anal.jmptbl";
}
if (ui->pushret->isChecked()){
advanced << "e! anal.pushret";
}
}

setupAndStartAnalysis(ui->analSlider->value(), advanced);
}

void OptionsDialog::anal_finished()
Expand Down Expand Up @@ -192,15 +230,13 @@ QString OptionsDialog::analysisDescription(int level)
switch (level)
{
case 0:
return tr("-");
return tr("No analysis");
case 1:
return tr("Minimum");
return tr("Auto-Analysis (aaa)");
case 2:
return tr("Basic");
return tr("Auto-Analysis Experimental (aaaa)");
case 3:
return tr("Medium");
case 4:
return tr("Full <font color='red'><b>(Experimental)</b></font>");
return tr("Advanced");
default:
return tr("Unknown");
}
Expand All @@ -218,6 +254,14 @@ void OptionsDialog::on_analSlider_valueChanged(int value)
{
ui->analCheckBox->setChecked(true);
ui->analCheckBox->setText("Analysis: Enabled");
if (value==3)
{
ui->analoptionsFrame->setVisible(true);
}
else
{
ui->analoptionsFrame->setVisible(false);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/optionsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class OptionsDialog : public QDialog
RAnalFunction functionAt(ut64 addr);
QStringList asm_plugins;

void setupAndStartAnalysis(int level);
void setupAndStartAnalysis(int level, QList<QString> advanced);

private slots:
void on_closeButton_clicked();
Expand Down
Loading

0 comments on commit 76bc053

Please sign in to comment.