summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-09-29 10:25:59 -0400
committerPeter LaFosse <peter@vector35.com>2022-09-29 10:26:05 -0400
commited33aad526b820e1024536b2609006f44e341251 (patch)
treeae475b4f7a7bdf996050caa8eb51ba26ffd84553 /examples
parentb70ca06fe5fd450c8db240f2edbfd784ae3859e6 (diff)
Add 'Libraries' group to Triage summary
Diffstat (limited to 'examples')
-rw-r--r--examples/triage/librariesinfo.cpp52
-rw-r--r--examples/triage/librariesinfo.h10
-rw-r--r--examples/triage/view.cpp7
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);