diff --git a/src/Cutter.cpp b/src/Cutter.cpp index 39b76140..2d728ea2 100644 --- a/src/Cutter.cpp +++ b/src/Cutter.cpp @@ -323,26 +323,6 @@ void CutterCore::openFile(QString path, RVA mapaddr) } } -void CutterCore::analyze(int level, QList advanced) -{ - CORE_LOCK(); - /* - * Levels - * Level 1: aaa - * Level 2: aaaa - */ - - if (level == 1) { - r_core_cmd0(core_, "aaa"); - } else if (level == 2) { - r_core_cmd0(core_, "aaaa"); - } else if (level == 3) { - for (QString option : advanced) { - r_core_cmd0(core_, option.toStdString().c_str()); - } - } -} - void CutterCore::renameFunction(const QString &oldName, const QString &newName) { cmdRaw("afn " + newName + " " + oldName); @@ -549,11 +529,6 @@ ut64 CutterCore::math(const QString &expr) return r_num_math(this->core_ ? this->core_->num : NULL, expr.toUtf8().constData()); } -QString CutterCore::itoa(ut64 num, int rdx) -{ - return QString::number(num, rdx); -} - void CutterCore::setConfig(const QString &k, const QString &v) { CORE_LOCK(); @@ -716,51 +691,6 @@ QString CutterCore::createFunctionAt(RVA addr, QString name) return ret; } -void CutterCore::markString(RVA addr) -{ - cmd("Cs @" + RAddressString(addr)); -} - -int CutterCore::get_size() -{ - CORE_LOCK(); - RBinObject *obj = r_bin_get_object(core_->bin); - //return obj->size; - return obj != nullptr ? obj->obj_size : 0; -} - -ulong CutterCore::get_baddr() -{ - CORE_LOCK(); - ulong baddr = r_bin_get_baddr(core_->bin); - return baddr; -} - -QList> CutterCore::get_exec_sections() -{ - QList> ret; - - QString text = cmd("S*~^S"); - for (QString line : text.split("\n")) { - QStringList fields = line.split(" "); - if (fields.length() == 7) { - if (fields[6].contains("x")) { - QList tmp = QList(); - tmp << fields[2]; - tmp << fields[3]; - tmp << fields[5]; - ret << tmp; - } - } - } - return ret; -} - -QString CutterCore::getOffsetInfo(QString addr) -{ - return cmd("ao @ " + addr); -} - QJsonDocument CutterCore::getRegistersInfo() { return cmdj("aeafj"); @@ -1221,29 +1151,6 @@ QStringList CutterCore::getStats() return stats; } -QString CutterCore::getSimpleGraph(QString function) -{ - // New styles - QString graph = "graph [bgcolor=invis, splines=polyline];"; - QString node = - "node [style=\"filled\" fillcolor=\"#4183D7\" shape=box fontname=\"Courier\" fontsize=\"8\" color=\"#4183D7\" fontcolor=\"white\"];"; - QString arrow = "edge [arrowhead=\"normal\";]"; - - // Old styles - QString old_graph = "graph [bgcolor=white fontsize=8 fontname=\"Courier\"];"; - //QString old_node = "node [color=lightgray, style=filled shape=box];"; - QString old_node = "node [fillcolor=gray style=filled shape=box];"; - QString old_arrow = "edge [arrowhead=\"vee\"];"; - - QString dot = cmd("aga @ " + function).trimmed(); - dot.replace(old_graph, graph); - dot.replace(old_node, node); - dot.replace(old_arrow, arrow); - dot.replace("fillcolor=blue", "fillcolor=\"#EC644B\", color=\"#EC644B\""); - - return dot; -} - void CutterCore::setGraphEmpty(bool empty) { emptyGraph = empty; diff --git a/src/Cutter.h b/src/Cutter.h index ee4e963a..933ed673 100644 --- a/src/Cutter.h +++ b/src/Cutter.h @@ -17,14 +17,9 @@ #include #include -#define HAVE_LATEST_LIBR2 false - #define CutterRListForeach(list, it, type, x) \ if (list) for (it = list->head; it && ((x=(type*)it->data)); it = it->n) -#define __alert(x) QMessageBox::question (this, "Alert", QString(x), QMessageBox::Ok) -#define __question(x) (QMessageBox::Yes==QMessageBox::question (this, "Alert", QString(x), QMessageBox::Yes| QMessageBox::No)) - #define APPNAME "Cutter" #define Core() (CutterCore::getInstance()) @@ -60,8 +55,6 @@ public: ~RCoreLocked(); operator RCore *() const; RCore *operator->() const; - RVA seek(RVA offset); - RVA getSeek(); }; inline QString RAddressString(RVA addr) @@ -402,7 +395,6 @@ public: QString cmdFunctionAt(QString addr); QString cmdFunctionAt(RVA addr); QString createFunctionAt(RVA addr, QString name); - void markString(RVA addr); /* Flags */ void delFlag(RVA addr); @@ -438,9 +430,6 @@ public: void loadScript(const QString &scriptname); QJsonArray getOpenedFiles(); - /* Analysis functions */ - void analyze(int level, QList advanced); - /* Seek functions */ void seek(QString thing); void seek(ut64 offset); @@ -468,7 +457,6 @@ public: /* Math functions */ ut64 math(const QString &expr); - QString itoa(ut64 num, int rdx = 16); /* Config functions */ void setConfig(const QString &k, const QString &v); @@ -495,12 +483,8 @@ public: QList sdbListKeys(QString path); QString sdbGet(QString path, QString key); bool sdbSet(QString path, QString key, QString val); - int get_size(); - ulong get_baddr(); - QList> get_exec_sections(); - QString getOffsetInfo(QString addr); - // Debug + /* Debug */ QJsonDocument getRegistersInfo(); QJsonDocument getRegisterValues(); QString getRegisterName(QString registerRole); @@ -535,6 +519,7 @@ public: int currentlyAttachedToPID = -1; QString currentlyOpenFile; + /* Pseudocode */ QString getDecompiledCodePDC(RVA addr); bool getR2DecAvailable(); QString getDecompiledCodeR2Dec(RVA addr); @@ -544,7 +529,6 @@ public: QJsonDocument getSignatureInfo(); QJsonDocument getFileVersionInfo(); QStringList getStats(); - QString getSimpleGraph(QString function); void setGraphEmpty(bool empty); bool isGraphEmpty(); @@ -633,7 +617,6 @@ signals: void refreshCodeViews(); void stackChanged(); - void notesChanged(const QString ¬es); void projectSaved(const QString &name); /*! @@ -659,8 +642,6 @@ signals: void newMessage(const QString &msg); void newDebugMessage(const QString &msg); -public slots: - private: MemoryWidgetType memoryWidgetPriority; diff --git a/src/widgets/Dashboard.cpp b/src/widgets/Dashboard.cpp index 2dc8e3f7..2b173f00 100644 --- a/src/widgets/Dashboard.cpp +++ b/src/widgets/Dashboard.cpp @@ -62,7 +62,7 @@ void Dashboard::updateContents() this->ui->relroEdit->setText(relro); } - this->ui->baddrEdit->setText("0x" + QString::number(Core()->get_baddr(), 16)); + this->ui->baddrEdit->setText(RAddressString(item2["baddr"].toVariant().toULongLong())); if (item2["va"].toBool() == true) { this->ui->vaEdit->setText("True"); diff --git a/src/widgets/SidebarWidget.cpp b/src/widgets/SidebarWidget.cpp index 124421db..53901f46 100644 --- a/src/widgets/SidebarWidget.cpp +++ b/src/widgets/SidebarWidget.cpp @@ -188,10 +188,13 @@ void SidebarWidget::fillOffsetInfo(QString off) .set("scr.color", COLOR_MODE_DISABLED); ui->offsetTreeWidget->clear(); - QString raw = Core()->getOffsetInfo(off); + QString raw = Core()->cmd(QString("ao@") + off).trimmed(); QList lines = raw.split("\n", QString::SkipEmptyParts); for (QString line : lines) { QList eles = line.split(":", QString::SkipEmptyParts); + if (eles.length() < 2) { + continue; + } QTreeWidgetItem *tempItem = new QTreeWidgetItem(); tempItem->setText(0, eles.at(0).toUpper()); tempItem->setText(1, eles.at(1));