Files
RElicAnalysis/RElicAnalysis/elf/dialogelfheader.cpp
T
2026-05-01 15:19:10 +02:00

85 lines
4.1 KiB
C++

#include "dialogelfheader.h"
DialogElfHeader::DialogElfHeader(ElfData *elfData): QDialog() {
struct elfHdr *sElfHdr = elfData->getHeader();
setWindowTitle("ELF Header");
setFixedSize(350, 250);
QVBoxLayout *mainLayout = new QVBoxLayout;
QGridLayout *layoutData = new QGridLayout;
layoutData->setSpacing(0);
layoutData->setContentsMargins(0, 0, 0, 0);
QLabel *labelType = new QLabel("Type: ");
QLabel *labelTypeHex = new QLabel(
elfData->mapTypeElf(hexToInt(sElfHdr->e_type.toHex())) +
" (" + printHex(sElfHdr->e_type.toHex()) + ")"
);
QLabel *labelMachine = new QLabel("Machine: ");
QLabel *labelMachineHex = new QLabel(
elfData->mapMachineType(hexToInt(sElfHdr->e_machine.toHex())) +
" (" + printHex(sElfHdr->e_machine.toHex()) + ")"
);
QLabel *labelVersion = new QLabel("Version: ");
QLabel *labelVersionHex = new QLabel(printHex(sElfHdr->e_version.toHex()));
QLabel *labelEntryAddres = new QLabel("Entry address: ");
QLabel *labelEntryAddressHex = new QLabel(printHex(sElfHdr->e_entry.toHex()));
QLabel *labelProgHdrOff = new QLabel("Program Header offset: ");
QLabel *labelProgHdrOffHex = new QLabel(printHex(sElfHdr->e_phoff.toHex()));
QLabel *labelSectionHdrOff = new QLabel("Section Header Offset: ");
QLabel *labelSectionHdrOffHex = new QLabel(printHex(sElfHdr->e_shoff.toHex()));
QLabel *labelFlags = new QLabel("Flags: ");
QLabel *labelFlagsHex = new QLabel(printHex(sElfHdr->e_flags.toHex()));
QLabel *labelElfHdrSize = new QLabel("ELF Header size: ");
QLabel *labelElfHdrSizeHex = new QLabel(printHex(sElfHdr->e_ehsize.toHex()));
QLabel *labelProgEntrySize = new QLabel("Program entry size: ");
QLabel *labelProgEntrySizeHex = new QLabel(printHex(sElfHdr->e_phentsize.toHex()));
QLabel *labelProgNum = new QLabel("Number of program entry: ");
QLabel *labelProgNumHex = new QLabel(printHex(sElfHdr->e_phnum.toHex()));
QLabel *labelSectionHdrSize = new QLabel("Section Header size: ");
QLabel *labelSectionHdrSizeHex = new QLabel(printHex(sElfHdr->e_shentsize.toHex()));
QLabel *labelSectionNum = new QLabel("Number of section entry: ");
QLabel *labelSectionNumHex = new QLabel(printHex(sElfHdr->e_shnum.toHex()));
QLabel *labelSectionStrIndex = new QLabel("Section string index: ");
QLabel *labelSectionStrIndexHex = new QLabel(printHex(sElfHdr->e_shentsize.toHex()));
layoutData->addWidget(labelType, 0, 0);
layoutData->addWidget(labelTypeHex, 0, 1);
layoutData->addWidget(labelMachine, 1, 0);
layoutData->addWidget(labelMachineHex, 1, 1);
layoutData->addWidget(labelVersion, 2, 0);
layoutData->addWidget(labelVersionHex, 2, 1);
layoutData->addWidget(labelEntryAddres, 3, 0);
layoutData->addWidget(labelEntryAddressHex, 3, 1);
layoutData->addWidget(labelProgHdrOff, 4, 0);
layoutData->addWidget(labelProgHdrOffHex, 4, 1);
layoutData->addWidget(labelSectionHdrOff, 5, 0);
layoutData->addWidget(labelSectionHdrOffHex, 5, 1);
layoutData->addWidget(labelFlags, 6, 0);
layoutData->addWidget(labelFlagsHex, 6, 1);
layoutData->addWidget(labelElfHdrSize, 7, 0);
layoutData->addWidget(labelElfHdrSizeHex, 7, 1);
layoutData->addWidget(labelProgEntrySize, 8, 0);
layoutData->addWidget(labelProgEntrySizeHex, 8, 1);
layoutData->addWidget(labelProgNum, 9, 0);
layoutData->addWidget(labelProgNumHex, 9, 1);
layoutData->addWidget(labelSectionHdrSize, 10, 0);
layoutData->addWidget(labelSectionHdrSizeHex, 10, 1);
layoutData->addWidget(labelSectionNum, 11, 0);
layoutData->addWidget(labelSectionNumHex, 11, 1);
layoutData->addWidget(labelSectionStrIndex, 12, 0);
layoutData->addWidget(labelSectionStrIndexHex, 12, 1);
QHBoxLayout *layoutButton = new QHBoxLayout;
layoutButton->setAlignment(Qt::AlignRight);
QPushButton *buttonClose = new QPushButton("Close");
connect(buttonClose, SIGNAL(clicked()), this, SLOT(close()));
layoutButton->addWidget(buttonClose);
mainLayout->addLayout(layoutData);
mainLayout->addLayout(layoutButton);
setLayout(mainLayout);
}