WingElfParser/wingelfparser.h

60 lines
1.4 KiB
C++

#ifndef GENERICPLUGIN_H
#define GENERICPLUGIN_H
#include "../WingHexExplorer/wing-hex-explorer.sourcecode/WingHexExplorer/plugin/iwingplugin.h"
#include "elfhelper.h"
#include <QTreeWidget>
struct Analysis {
qint64 offset;
qint64 length;
};
Q_DECLARE_METATYPE(Analysis)
class WingElfPlugin : public IWingPlugin {
Q_OBJECT
#if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA(IID IWINGPLUGIN_INTERFACE_IID FILE "WingElfParser.json")
#endif // QT_VERSION >= 0x050000
Q_INTERFACES(IWingPlugin)
public:
WingElfPlugin(QObject *parent = nullptr);
bool init(QList<WingPluginInfo> loadedplugin) override;
~WingElfPlugin() override;
void unload() override;
QMenu *registerMenu() override;
QToolButton *registerToolButton() override;
QDockWidget *registerDockWidget() override;
QString pluginName() override;
QString pluginAuthor() override;
uint pluginVersion() override;
QString signature() override;
QString pluginComment() override;
void plugin2MessagePipe(WingPluginMessage type, QList<QVariant> msg) override;
Qt::DockWidgetArea registerDockWidgetDockArea() override;
HookIndex getHookSubscribe() override;
private:
QMenu *menu;
QDockWidget *dw;
QTreeWidget *tw;
QToolButton *tbtn;
QString filename;
private:
bool parse();
bool parse32();
bool parse64();
void analyse();
void applySection();
void applySymbol();
void on_setting();
};
#endif // GENERICPLUGIN_H