diff options
| author | Peter LaFosse <peter@vector35.com> | 2022-09-29 10:25:59 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2022-09-29 10:26:05 -0400 |
| commit | ed33aad526b820e1024536b2609006f44e341251 (patch) | |
| tree | ae475b4f7a7bdf996050caa8eb51ba26ffd84553 /examples | |
| parent | b70ca06fe5fd450c8db240f2edbfd784ae3859e6 (diff) | |
Add 'Libraries' group to Triage summary
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/triage/librariesinfo.cpp | 52 | ||||
| -rw-r--r-- | examples/triage/librariesinfo.h | 10 | ||||
| -rw-r--r-- | examples/triage/view.cpp | 7 |
3 files changed, 69 insertions, 0 deletions
diff --git a/examples/triage/librariesinfo.cpp b/examples/triage/librariesinfo.cpp new file mode 100644 index 00000000..03764e99 --- /dev/null +++ b/examples/triage/librariesinfo.cpp @@ -0,0 +1,52 @@ +#include "librariesinfo.h" +#include "theme.h" + + +LibrariesWidget::LibrariesWidget(QWidget* parent, BinaryViewRef bv) +{ + auto layout = new QVBoxLayout(); + layout->setContentsMargins(0, 0, 0, 0); + + auto libMetadata = bv->QueryMetadata("Libraries"); + auto libFoundMetadata = bv->QueryMetadata("LibraryFound"); + if (libMetadata && libFoundMetadata && libMetadata->IsStringList() && libFoundMetadata->IsStringList() && libMetadata->Size() == libFoundMetadata->Size()) + { + const auto libNames = libMetadata->GetStringList(); + const auto typeLibPaths = libFoundMetadata->GetStringList(); + for (size_t i = 0; i < libNames.size(); ++i) + { + auto lib = libNames[i]; + auto typeLib = typeLibPaths[i]; + auto libWidget = new QLabel(QString::fromStdString(" " + lib)); + QColor textColor; + QString toolTip; + auto style = QPalette(palette()); + if (typeLib.empty()) + { + toolTip = "Type library: not found"; + style.setColor(QPalette::WindowText, getThemeColor(NotPresentColor)); + } + else + { + toolTip = QString::fromStdString("Type library: " + typeLib); + } + libWidget->setToolTip(toolTip); + libWidget->setPalette(style); + layout->addWidget(libWidget); + } + } + else if (libMetadata && libMetadata->IsStringList()) + { + for (const auto& lib : libMetadata->GetStringList()) + layout->addWidget(new QLabel(QString::fromStdString(lib))); + } + else + { + auto style = QPalette(palette()); + style.setColor(QPalette::WindowText, getThemeColor(NotPresentColor)); + auto noLibWidget = new QLabel("No libraries found"); + noLibWidget->setPalette(style); + layout->addWidget(noLibWidget); + } + setLayout(layout); +} diff --git a/examples/triage/librariesinfo.h b/examples/triage/librariesinfo.h new file mode 100644 index 00000000..0198e10d --- /dev/null +++ b/examples/triage/librariesinfo.h @@ -0,0 +1,10 @@ +#pragma once +#include <QtWidgets/QWidget> +#include "uitypes.h" +#include "viewframe.h" + +class LibrariesWidget : public QWidget +{ + public: + LibrariesWidget(QWidget* parent, BinaryViewRef bv); +}; diff --git a/examples/triage/view.cpp b/examples/triage/view.cpp index 4b1181cb..dafd41bf 100644 --- a/examples/triage/view.cpp +++ b/examples/triage/view.cpp @@ -7,6 +7,7 @@ #include "exports.h" #include "sections.h" #include "fileinfo.h" +#include "librariesinfo.h" #include "headers.h" #include "fontsettings.h" #include <binaryninjacore.h> @@ -50,6 +51,12 @@ TriageView::TriageView(QWidget* parent, BinaryViewRef data) : QScrollArea(parent delete hdr; } + QGroupBox* librariesGroup = new QGroupBox("Libraries", container); + QVBoxLayout* librariesLayout = new QVBoxLayout(); + librariesLayout->addWidget(new LibrariesWidget(this, data)); + librariesGroup->setLayout(librariesLayout); + layout->addWidget(librariesGroup); + if (m_data->IsExecutable()) { QSplitter* importExportSplitter = new QSplitter(Qt::Horizontal); |
