From b7ceca6e89946a77552c50139be67b2b989420ae Mon Sep 17 00:00:00 2001 From: gbucchino Date: Thu, 21 May 2026 10:41:04 +0200 Subject: [PATCH] Refactor disas code --- RElicAnalysis-0.1.0 | Bin 270280 -> 0 bytes RElicAnalysis-0.1.1 | Bin 0 -> 290744 bytes RElicAnalysis/CMakeLists.txt | 4 +- RElicAnalysis/CMakeLists.txt.user | 216 ++--------- RElicAnalysis/data.h | 4 +- RElicAnalysis/dataDisas.h | 3 +- RElicAnalysis/dialogabout.cpp | 2 +- RElicAnalysis/disasasm.cpp | 19 +- RElicAnalysis/elf/elfsymbolmodel.cpp | 34 ++ RElicAnalysis/elf/elfsymbolmodel.h | 22 ++ RElicAnalysis/elf/mdielf.cpp | 1 + RElicAnalysis/elf/mdielfdisassembled.cpp | 104 +++--- RElicAnalysis/elf/mdielfdisassembled.h | 8 +- RElicAnalysis/elfdata.cpp | 53 ++- RElicAnalysis/elfdata.h | 12 +- RElicAnalysis/fileinfo.cpp | 18 - RElicAnalysis/parsingelf.cpp | 434 ++++++++++++++++------- RElicAnalysis/parsingelf.h | 6 +- 18 files changed, 504 insertions(+), 436 deletions(-) delete mode 100755 RElicAnalysis-0.1.0 create mode 100755 RElicAnalysis-0.1.1 create mode 100644 RElicAnalysis/elf/elfsymbolmodel.cpp create mode 100644 RElicAnalysis/elf/elfsymbolmodel.h diff --git a/RElicAnalysis-0.1.0 b/RElicAnalysis-0.1.0 deleted file mode 100755 index dd2f3b5176ef7cf1e32db62a5b56a84ce5d07dd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270280 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
  • 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ξmo_=H|d^DKL<6iNmwBKpaQUYmLqq#eb- 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 - + EnvironmentId - {7576b28b-0509-4f2e-9112-d416507c0bdd} + {c1ad1696-344c-4cbf-8c9b-7903590215f2} ProjectExplorer.Project.ActiveTarget @@ -76,7 +76,7 @@ true true Builtin.DefaultTidyAndClazy - 2 + 4 true @@ -89,10 +89,10 @@ ProjectExplorer.Project.Target.0 Desktop - Desktop - Desktop - {4f4e56a4-b54b-4c8a-9576-1e917c71a3c7} - 0 + Desktop Qt 6.6.2 GCC 64bit + Desktop Qt 6.6.2 GCC 64bit + qt.qt6.662.gcc_64_kit + 1 0 0 @@ -100,16 +100,17 @@ 2 false - -DCMAKE_GENERATOR:STRING=Unix Makefiles + -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} + /home/gbucchino/Documents/GIT/RElicAnalysis/RElicAnalysis 0 - /home/geoffrey/Documents/GIT/cryptoshield/RElicAnalysis/build-RElicAnalysis-Desktop-Debug + /home/gbucchino/Documents/GIT/RElicAnalysis/build-RElicAnalysis-Desktop_Qt_6_6_2_GCC_64bit-Debug @@ -157,15 +158,16 @@ 2 false - -DCMAKE_GENERATOR:STRING=Unix Makefiles + -DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/geoffrey/Documents/GIT/cryptoshield/RElicAnalysis/build-RElicAnalysis-Desktop-Release + /home/gbucchino/Documents/GIT/RElicAnalysis/RElicAnalysis + /home/gbucchino/Documents/GIT/RElicAnalysis/build-RElicAnalysis-Desktop_Qt_6_6_2_GCC_64bit-Release @@ -175,6 +177,7 @@ false true + Build CMakeProjectManager.MakeStep 1 @@ -191,6 +194,7 @@ false true + Build CMakeProjectManager.MakeStep 1 @@ -206,170 +210,7 @@ Release CMakeProjectManager.CMakeBuildConfiguration - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Unix Makefiles --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/geoffrey/Documents/GIT/cryptoshield/RElicAnalysis/build-RElicAnalysis-Desktop-RelWithDebInfo - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release with Debug Information - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Unix Makefiles --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - 0 - /home/geoffrey/Documents/GIT/cryptoshield/RElicAnalysis/build-RElicAnalysis-Desktop-Profile - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Profile - CMakeProjectManager.CMakeBuildConfiguration - - - MinSizeRel - 2 - false - - -DCMAKE_GENERATOR:STRING=Unix Makefiles --DCMAKE_BUILD_TYPE:STRING=MinSizeRel --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable} --DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C} --DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} - /home/geoffrey/Documents/GIT/cryptoshield/RElicAnalysis/build-RElicAnalysis-Desktop-MinSizeRel - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Minimum Size Release - CMakeProjectManager.CMakeBuildConfiguration - - 5 + 2 0 @@ -388,17 +229,18 @@ true 0 true - 2 false - - ProjectExplorer.CustomExecutableRunConfiguration - + RElicAnalysis + CMakeProjectManager.CMakeRunConfiguration.RElicAnalysis + RElicAnalysis false true + true true + /home/gbucchino/Documents/GIT/RElicAnalysis/build-RElicAnalysis-Desktop_Qt_6_6_2_GCC_64bit-Release 1 diff --git a/RElicAnalysis/data.h b/RElicAnalysis/data.h index ac0cc18..289b3c5 100644 --- a/RElicAnalysis/data.h +++ b/RElicAnalysis/data.h @@ -97,10 +97,8 @@ struct elfSymbol { unsigned char st_info; unsigned char st_other; QByteArray st_shndx; - char *data; + //char *data; uint64_t size; - int countEntries; - int entry; }; struct elfHash { diff --git a/RElicAnalysis/dataDisas.h b/RElicAnalysis/dataDisas.h index 40596df..dbfd61b 100644 --- a/RElicAnalysis/dataDisas.h +++ b/RElicAnalysis/dataDisas.h @@ -9,7 +9,8 @@ struct object_asm { char cmd[SIZE_OBJECT_CMD]; // Store the command - char *hexCmd; // Store the command in hex + //char *hexCmd; // Store the command in hex + char hexCmd[SIZE_OBJECT_CMD]; size_t octets; size_t addr; // Command start at }; diff --git a/RElicAnalysis/dialogabout.cpp b/RElicAnalysis/dialogabout.cpp index c6cf9f0..6362749 100644 --- a/RElicAnalysis/dialogabout.cpp +++ b/RElicAnalysis/dialogabout.cpp @@ -6,7 +6,7 @@ DialogAbout::DialogAbout(): QDialog() { QVBoxLayout *mainLayout = new QVBoxLayout; - QLabel *labelTitle = new QLabel("RElicAnalysis 0.1.0"); + QLabel *labelTitle = new QLabel("RElicAnalysis 0.1.1"); QFont fontTitle; fontTitle.setPointSize(15); fontTitle.setBold(true); diff --git a/RElicAnalysis/disasasm.cpp b/RElicAnalysis/disasasm.cpp index 173f958..67ac4c6 100644 --- a/RElicAnalysis/disasasm.cpp +++ b/RElicAnalysis/disasasm.cpp @@ -29,7 +29,7 @@ static int dump_asm(void *stream, const char *fmt, ...){ /* * Cf: https://github.com/bpftrace/bpftrace/blob/master/src/bfd-disasm.cpp#L49C1-L55C2 */ -/*static int dump_asm_styled(void *out __attribute__((unused)), enum disassembler_style s __attribute__((unused)), +static int dump_asm_styled(void *out __attribute__((unused)), enum disassembler_style s __attribute__((unused)), const char *fmt __attribute__((unused)), ...) { struct dataDisas *sData = (struct dataDisas*)out; @@ -54,7 +54,7 @@ static int dump_asm(void *stream, const char *fmt, ...){ memcpy(sData->s_object_asm[index].cmd, tmp, strlen(tmp)); return 0; -}*/ +} struct dataDisas *disas_asm(unsigned char *buffer, uint64_t startAddress, size_t length){ struct disassemble_info disasm_info; @@ -94,8 +94,8 @@ static int dump_asm(void *stream, const char *fmt, ...){ * https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git/commit/?id=600b7b26c07a070d0153daa76b3806c1e52c9e00 * https://patchwork.yoctoproject.org/project/arm/patch/20220824025819.4888-1-jon.mason@arm.com/#5104 */ - //init_disassemble_info (&disasm_info, sData, dump_asm, dump_asm_styled); - init_disassemble_info (&disasm_info, sData, dump_asm); + init_disassemble_info (&disasm_info, sData, dump_asm, dump_asm_styled); + //init_disassemble_info (&disasm_info, sData, dump_asm); disasm_info.arch = bfd_arch_i386; disasm_info.mach = bfd_mach_x86_64; disasm_info.read_memory_func = buffer_read_memory; @@ -119,6 +119,7 @@ static int dump_asm(void *stream, const char *fmt, ...){ int bufferIndex = 0; while (i < length){ size_t octets = disas(i, &disasm_info); + //qDebug() << octets; sData->s_object_asm[sData->countEntries].octets = octets; sData->s_object_asm[sData->countEntries].addr = nextStart; @@ -127,10 +128,17 @@ static int dump_asm(void *stream, const char *fmt, ...){ * We free in the parsingElf file */ /* hexCmd object will be freed in parsingElf file */ - sData->s_object_asm[sData->countEntries].hexCmd = (char*)malloc(sizeof(char) * octets); + + /*sData->s_object_asm[sData->countEntries].hexCmd = (char*)malloc(sizeof(char) * octets); + if (!sData->s_object_asm[sData->countEntries].hexCmd){ + qDebug() << "Failed "; + return NULL; + }*/ + memcpy(sData->s_object_asm[sData->countEntries].hexCmd, &buffer[bufferIndex], octets); + i += octets; nextStart += octets; bufferIndex += octets; @@ -151,6 +159,5 @@ static int dump_asm(void *stream, const char *fmt, ...){ memset(&sData->s_object_asm[sData->countEntries], 0, sizeof(&sData->s_object_asm)); memset(sData->s_object_asm[sData->countEntries].cmd, 0, SIZE_OBJECT_CMD); }; - return sData; } diff --git a/RElicAnalysis/elf/elfsymbolmodel.cpp b/RElicAnalysis/elf/elfsymbolmodel.cpp new file mode 100644 index 0000000..1365294 --- /dev/null +++ b/RElicAnalysis/elf/elfsymbolmodel.cpp @@ -0,0 +1,34 @@ +#include "elfsymbolmodel.h" +#include + +ElfSymbolModel::ElfSymbolModel() { +} + +void ElfSymbolModel::setSymbol(struct elfSymbol *elf, struct elfObjectDisas *s){ + if(!m_hash[elf]) + m_hash[elf] = new QList(); + m_hash[elf]->append(s); +} + +/* + * This function return the list of all keys, which represent a section in Elf + */ +QList ElfSymbolModel::getKeys(){ + return m_hash.keys(); +} + +/* + * This function return all asm code from the symbol specified in argument + */ +QList *ElfSymbolModel::getASMCode(struct elfSymbol *symbol){ + return m_hash.value(symbol); +} + +ElfSymbolModel::~ElfSymbolModel(){ + if (m_hash.size() > 0){ + for (struct elfSymbol *key : m_hash.keys()){ + if (m_hash[key]) + delete m_hash[key]; + } + } +} diff --git a/RElicAnalysis/elf/elfsymbolmodel.h b/RElicAnalysis/elf/elfsymbolmodel.h new file mode 100644 index 0000000..8b5d8d7 --- /dev/null +++ b/RElicAnalysis/elf/elfsymbolmodel.h @@ -0,0 +1,22 @@ +#ifndef ELFSYMBOLMODEL_H +#define ELFSYMBOLMODEL_H + +#include +#include +#include "../data.h" + +class ElfSymbolModel +{ +public: + ElfSymbolModel(); + ~ElfSymbolModel(); + + void setSymbol(struct elfSymbol *, struct elfObjectDisas *); + QList getKeys(); + QList *getASMCode(struct elfSymbol *); + +private: + QHash *> m_hash; +}; + +#endif // ELFSYMBOLMODEL_H diff --git a/RElicAnalysis/elf/mdielf.cpp b/RElicAnalysis/elf/mdielf.cpp index 71c51dc..1cda81a 100644 --- a/RElicAnalysis/elf/mdielf.cpp +++ b/RElicAnalysis/elf/mdielf.cpp @@ -272,6 +272,7 @@ void MdiElf::_addCaracteristics(ElfData *elfData) { s += "ELF number sections: " + QString::number(hexToInt(sElfHdr->e_shnum.toHex())) + "\n"; s += "ELF sections offset: " + QString::number(hexToInt(sElfHdr->e_shoff.toHex())) + "\n"; s += "String table: " + QString::number(hexToInt(sElfHdr->e_shstrndx.toHex())) + "\n"; + s += "Bss size: " + QString::number(elfData->getBssSectionSize()) + " bytes\n"; m_textEditCaracteristics->setPlainText(s); } diff --git a/RElicAnalysis/elf/mdielfdisassembled.cpp b/RElicAnalysis/elf/mdielfdisassembled.cpp index 645e650..d54bb57 100644 --- a/RElicAnalysis/elf/mdielfdisassembled.cpp +++ b/RElicAnalysis/elf/mdielfdisassembled.cpp @@ -14,49 +14,8 @@ MdiElfDisassembled::MdiElfDisassembled(ProjectElf *projectElf): QMdiSubWindow() // Main layout QHBoxLayout *mainLayout = new QHBoxLayout; - /* - * Explorer part - * Get here all symbols, such as functions - */ - m_modelExplorer = new QStandardItemModel; - - // ListView that contains all symbols - m_viewExplorer = new QListView; - m_viewExplorer->setModel(m_modelExplorer); - m_viewExplorer->setStyleSheet("border: none"); - m_viewExplorer->setMaximumWidth(250); - connect(m_viewExplorer, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(_itemClicked(QModelIndex))); - // ASM code m_modelAnalyse = new QStandardItemModel; - QHash *> disasCode = elfData->getDisasCode(); - - for (const QByteArray &key : disasCode.keys()){ - // Add to the explorer - QStandardItem *itemExplorer = new QStandardItem(key); - m_modelExplorer->appendRow(itemExplorer); - - // Add to the QListView - QStandardItem *item = new QStandardItem(key); - QFont font; - font.setItalic(true); - font.setPointSize(12); - item->setFont(font); - m_modelAnalyse->appendRow(item); - - /* - * Add the modelIndex to the list. - * This list is used when the user has cliked the item - */ - m_listModelExplorer.append(m_modelAnalyse->indexFromItem(item)); - - /* Add the disas code to the QListView */ - for (qsizetype i = 0; i < disasCode[key]->size(); ++i){ - //qDebug() << "Disas: " << key << " " << disasCode[key]->at(i)->hexCmd; - QString s = sanitizeASMCode(disasCode[key]->at(i)); - m_modelAnalyse->appendRow(new QStandardItem(s)); - } - } // ListView that contains the ASM code m_viewAnalyse = new QListView; @@ -64,7 +23,54 @@ MdiElfDisassembled::MdiElfDisassembled(ProjectElf *projectElf): QMdiSubWindow() m_viewAnalyse->setSelectionMode(QAbstractItemView::NoSelection); //m_viewAnalyse->setStyleSheet("border: none"); - mainLayout->addWidget(m_viewExplorer); + // We get all symbols and associate with the section (QTreeWidgetItem) + m_treeWidget = new QTreeWidget; + m_treeWidget->setMaximumWidth(250); + m_treeWidget->setHeaderHidden(true); + + QHash hash = elfData->getAllSections(); + if (hash.size() > 0){ + for (const QByteArray §ion : hash.keys()){ + QTreeWidgetItem *itemSection = new QTreeWidgetItem(m_treeWidget); + itemSection->setText(0, section); + ElfSymbolModel *model = elfData->getSymbolsBySection(section); + + // Add to the QListView (ViewAnalysis) + QStandardItem *itemAnalysisSection = new QStandardItem(section); + QFont font; + font.setItalic(true); + font.setBold(true); + font.setPointSize(12); + itemAnalysisSection->setFont(font); + m_modelAnalyse->appendRow(itemAnalysisSection); + + QList symbols = model->getKeys(); + for (size_t i = 0; i < symbols.size(); i++){ + // Add to the QTreeWidget + QTreeWidgetItem *subItem = new QTreeWidgetItem(itemSection); + struct elfSymbol *symbol = symbols.at(i); + subItem->setText(0, symbol->st_name); + + // Add to the ViewAnalysis (QListView) + QStandardItem *itemSymbol = new QStandardItem(symbol->st_name); + QFont fontSymbol; + font.setItalic(true); + font.setPointSize(12); + itemSymbol->setFont(fontSymbol); + m_modelAnalyse->appendRow(itemSymbol); + + // Dump the asm code + QList *disas = model->getASMCode(symbol); + for (size_t j = 0; j < disas->size(); j++){ + struct elfObjectDisas *obj = disas->at(j); + QStandardItem *itemASM = new QStandardItem(sanitizeASMCode(obj)); + m_modelAnalyse->appendRow(itemASM); + } + } + } + } + + mainLayout->addWidget(m_treeWidget); mainLayout->addWidget(m_viewAnalyse); widget->setLayout(mainLayout); @@ -83,26 +89,16 @@ QString MdiElfDisassembled::sanitizeASMCode(struct elfObjectDisas *obj){ char tabs[maxTab + 1]; /* +1 for the \0 */ memset(tabs, 0, maxTab); size_t t; - //qDebug() << hexCmd << " " << len << " " << maxTab; + for(t = 0; t < maxTab; t++) tabs[t] = ' '; tabs[t] = '\t'; tabs[t + 1] = '\0'; return "\t" + hex + "\t" + hexCmd.toUpper() + tabs + obj->cmd; } -void MdiElfDisassembled::_itemClicked(const QModelIndex &model){ - int row = model.row(); - if (row != -1){ - m_viewAnalyse->clearSelection(); - QModelIndex model = m_listModelExplorer.at(row); - QItemSelectionModel *selection = m_viewAnalyse->selectionModel(); - selection->setCurrentIndex(model, QItemSelectionModel::Select); - } -} MdiElfDisassembled::~MdiElfDisassembled(){ - delete m_modelExplorer; delete m_modelAnalyse; - delete m_viewExplorer; delete m_viewAnalyse; + delete m_treeWidget; } diff --git a/RElicAnalysis/elf/mdielfdisassembled.h b/RElicAnalysis/elf/mdielfdisassembled.h index f7c7f30..c5d7f3b 100644 --- a/RElicAnalysis/elf/mdielfdisassembled.h +++ b/RElicAnalysis/elf/mdielfdisassembled.h @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include "../projectelf.h" /* Used for printing the ASM code */ @@ -21,15 +23,11 @@ public: private: ProjectElf *m_projectElf; - QListView *m_viewExplorer; QListView *m_viewAnalyse; - QStandardItemModel *m_modelExplorer; + QTreeWidget *m_treeWidget; QStandardItemModel *m_modelAnalyse; QList m_listModelExplorer; QString sanitizeASMCode(struct elfObjectDisas *); - -private slots: - void _itemClicked(const QModelIndex &); }; diff --git a/RElicAnalysis/elfdata.cpp b/RElicAnalysis/elfdata.cpp index ba79346..587cc13 100644 --- a/RElicAnalysis/elfdata.cpp +++ b/RElicAnalysis/elfdata.cpp @@ -13,20 +13,24 @@ ElfData::ElfData() { m_listDynSymbols = new QList; } -void ElfData::addToHash(QByteArray b, struct elfObjectDisas *obj){ - /* - * Here, we add the item in the list - * We create a map with the QList, a map contain an entry which contains a pointer to the QList - */ - if (!m_hash.contains(b)){ - m_hash[b] = new QList; - } - - m_hash[b]->append(obj); +void ElfData::newSection(QByteArray b){ + m_hashSections[b] = new ElfSymbolModel; } -QHash *> ElfData::getDisasCode(){ - return m_hash; +void ElfData::setSymbol(QByteArray b, struct elfSymbol *elf, struct elfObjectDisas *disas){ + if (m_hashSections[b]){ + //qDebug() << "New symbol: " << elf->st_name; + m_hashSections[b]->setSymbol(elf, disas); + } +} + +ElfSymbolModel *ElfData::getSymbolsBySection(QByteArray b){ + if (m_hashSections[b]) + return m_hashSections[b]; +} + +QHash ElfData::getAllSections(){ + return m_hashSections; } void ElfData::setArchitecture(int a){ @@ -73,7 +77,7 @@ void ElfData::setProgramHeader(struct elfProgram *p){ void ElfData::setSectionHeader(struct elfSection *s){ m_listSections->append(s); } -void ElfData::setSymbol(struct elfSymbol * s){ +void ElfData::setSymbol(struct elfSymbol *s){ m_listSymbols->append(s); } void ElfData::setDynSymbols(struct elfSymbol *s){ @@ -85,6 +89,9 @@ void ElfData::setHash(struct elfHash *h){ void ElfData::setTextSymbol(struct elfSymbol *sElfS){ m_listTextSymbols->append(sElfS); } +void ElfData::setBssSectionSize(unsigned long s){ + m_bssSectionSize = s; +} struct elfIdent *ElfData::getIdentification(){ return m_sElfId; @@ -110,6 +117,9 @@ QList *ElfData::getTextSymbols() { QList *ElfData::getHashes(){ return m_listHashes; } +unsigned long ElfData::getBssSectionSize(){ + return m_bssSectionSize; +} QString ElfData::mapProgramType(int type){ QString text; switch(type){ @@ -332,8 +342,11 @@ ElfData::~ElfData() { //for (qsizetype i = 0; i < m_listSections->size(); i++) // free(m_listSections->at(i)); - for (qsizetype i = 0; i < m_listSymbols->size(); i++) - free(m_listSymbols->at(i)->data); + for (qsizetype i = 0; i < m_listSymbols->size(); i++){ + //qDebug() << "Freeing: " << m_listSymbols->at(i); + //free(m_listSymbols->at(i)->data); + //free(m_listSymbols->at(i)); + } // Clean from dynamic variables from parsingelf file delete m_listProgs; @@ -343,9 +356,11 @@ ElfData::~ElfData() { delete m_listHashes; delete m_listDynSymbols; - for (const QByteArray &key : m_hash.keys()){ - for (qsizetype i = 0; i < m_hash[key]->size(); i++) - free(m_hash[key]->at(i)); - delete(m_hash[key]); + if(m_hashSections.size() > 0){ + for (const QByteArray &key : m_hashSections.keys()){ + if (m_hashSections[key]){ + delete m_hashSections[key]; // delete ElfSymbolModel object + } + } } } diff --git a/RElicAnalysis/elfdata.h b/RElicAnalysis/elfdata.h index f9aa5fe..113bfe1 100644 --- a/RElicAnalysis/elfdata.h +++ b/RElicAnalysis/elfdata.h @@ -3,6 +3,7 @@ #include #include +#include "elf/elfsymbolmodel.h" #include "data.h" enum Architecture{ @@ -26,6 +27,7 @@ class ElfData { void setSizeofElf_Ehdr(size_t); void setSizeofElf_Phdr(size_t); void setSizeofElf_Shdr(size_t); + void setBssSectionSize(unsigned long); int getArchitecture(); struct elfIdent *getIdentification(); @@ -39,6 +41,7 @@ class ElfData { size_t getSizeofElf_Ehdr(); size_t getSizeofElf_Phdr(); size_t getSizeofElf_Shdr(); + unsigned long getBssSectionSize(); QString mapProgramType(int); QString mapSectionType(int); @@ -49,8 +52,10 @@ class ElfData { QString mapMachineType(int); QString mapSymbolType(int); - void addToHash(QByteArray, struct elfObjectDisas *); - QHash *> getDisasCode(); + void newSection(QByteArray); + void setSymbol(QByteArray, struct elfSymbol *, struct elfObjectDisas *); + ElfSymbolModel *getSymbolsBySection(QByteArray); + QHash getAllSections(); private: int m_architecture; @@ -65,7 +70,8 @@ class ElfData { QList *m_listDynSymbols; QList *m_listTextSymbols; QList *m_listHashes; - QHash *> m_hash; + QHash m_hashSections; + unsigned long m_bssSectionSize; }; #endif // ELFDATA_H diff --git a/RElicAnalysis/fileinfo.cpp b/RElicAnalysis/fileinfo.cpp index e2d67c3..0d9345e 100644 --- a/RElicAnalysis/fileinfo.cpp +++ b/RElicAnalysis/fileinfo.cpp @@ -18,24 +18,6 @@ FileInfo::FileInfo(QFile &file) { m_filename = info.fileName(); QString fullPath = m_path + "/" + m_filename; m_rawData = NULL; - - /* Get signature of the file */ - //QByteArray b = file.readAll(); - //m_rawData = b.data(); - //m_rawData = (char *)malloc(m_sizeFile); - //qDebug() << "FOOO: " << b.size(); - //memcpy(m_rawData, b.data(), b.size()); - //m_rawData = b.constData(); - //m_rawData = b.data(); - //qDebug() << b[0] << b[1] << b[2] << b[3]; - //QByteArray b1 = b + 1; - //qDebug() << b1[0] << b1[1] << b1[2] << b1[3]; - - - /*QDataStream in(&file); - qint64 len = in.readRawData(m_rawData, m_sizeFile); - qDebug() << len;*/ - /* * I need to read the file in the old way, because with Qt functions, my buffer is corrupted * i do not have the full data diff --git a/RElicAnalysis/parsingelf.cpp b/RElicAnalysis/parsingelf.cpp index 2471304..91e5d6a 100644 --- a/RElicAnalysis/parsingelf.cpp +++ b/RElicAnalysis/parsingelf.cpp @@ -149,20 +149,24 @@ void elf32ProgramHdr(int fd, Elf32_Off phoff, off_t phnum){ } bool elf64SectionHdr(const char *buffer, ElfData *elfData, size_t offset, quint16 shstrndx, int shnum){ - size_t lenShdr = sizeof(Elf64_Shdr); bool res = false; + struct elfSymbol *elfSymbols = NULL; + size_t symtabnum = 0; // We malloc the variable and we free it in the elfData destructor struct elfSection *elfS = (struct elfSection *)malloc(shnum * sizeof(struct elfSection)); + ; if (elfS == NULL) return false; Elf64_Shdr *shdr = (Elf64_Shdr*)(buffer + offset); + Elf64_Sym *symtab = NULL; + // Get the string table header Elf64_Shdr *strtab = &shdr[shstrndx]; - Elf64_Shdr *shdrtext = NULL; - Elf64_Shdr *shdrfini = NULL; - Elf64_Shdr *shdrhash = NULL; + //Elf64_Shdr *shdrtext = NULL; + //Elf64_Shdr *shdrfini = NULL; + //Elf64_Shdr *shdrhash = NULL; const char *b = buffer + strtab->sh_offset; int indexStrTab = 0; int indexSymbolTab = 0; @@ -172,6 +176,36 @@ bool elf64SectionHdr(const char *buffer, ElfData *elfData, size_t offset, quint1 int indexHashTab = 0; int indexDynSymTab = 0; + /* + * We need to get the .symtab and .strtab + */ + for (int i = 0; i < shnum; i++){ + const char *shname = b + shdr[i].sh_name; + // .symtab + if (shdr[i].sh_type == 0x02 && strcmp(shname, ".symtab") == 0) + indexSymbolTab = i; + + // .strtab for symbal name + if (shdr[i].sh_type == 0x03 && strcmp(shname, ".strtab") == 0) + indexStrTab = i; + } + + /* Get all symbols and store to the ElfData */ + res = getAllSymbols(buffer, &symtab, &elfSymbols, &symtabnum, elfData, shdr, indexStrTab, indexSymbolTab); + if (!res){ + free(elfS); + return false; + } + + /*for (size_t i = 0; i < symtabnum; i++){ + qDebug() << "Symbol: " << symtab[i].st_value; + }*/ + // We need to get the symbol name + Elf64_Shdr *strTabShdr = &shdr[indexStrTab]; + // Get section for symbol table + Elf64_Shdr *symtabShdr = &shdr[indexSymbolTab]; + + for (int i = 0; i < shnum; i++){ memset(&elfS[i], 0, sizeof(struct elfSection)); @@ -186,7 +220,7 @@ bool elf64SectionHdr(const char *buffer, ElfData *elfData, size_t offset, quint1 elfS[i].sh_info = convertFrom32bits(shdr[i].sh_info); elfS[i].sh_addralign = convertFrom32bits(shdr[i].sh_addralign); elfS[i].sh_entsize = convertFrom32bits(shdr[i].sh_entsize); - qDebug() << elfS[i].sh_name << " " << elfS[i].sh_offset.toHex() << " " << elfS[i].sh_size.toHex(); + //qDebug() << elfS[i].sh_name << " " << elfS[i].sh_offset.toHex() << " " << elfS[i].sh_size.toHex(); elfData->setSectionHeader(&elfS[i]); const char *shname = b + shdr[i].sh_name; @@ -201,17 +235,93 @@ bool elf64SectionHdr(const char *buffer, ElfData *elfData, size_t offset, quint1 if (shdr[i].sh_type == 0x01 && strcmp(shname, ".text") == 0){ indexTextTab = i; + /*bool r = disasSection(buffer, elfData, ".text", shdr[i].sh_offset, shdr[i].sh_size); + if (!r) + return r;*/ + + elfData->newSection(".text"); + + unsigned long textoffset = 0, textend = 0; + textoffset = shdr[i].sh_offset; + // -1 for avoiding the .fini section + textend = shdr[i].sh_offset + shdr[i].sh_size; + + // We get all symbols from .text section + for (size_t i = 0; i < symtabnum; i++){ + unsigned long end = symtab[i].st_value + symtab[i].st_size; + + if (symtab[i].st_value >= textoffset && end <= textend && symtab[i].st_value != textend){ + const char *b2 = buffer + strTabShdr->sh_offset; + struct elfSymbol *sym = getElf64Sym(b2, symtab[i]); + //qDebug() << sym->st_name << " " << sym->st_size.toHex() << " " << sym->st_value.toHex(); + /* Disas the asm code for the symbol and store to the elfData */ + disasSymbol(buffer, ".text", elfData, sym, symtab[i].st_value, symtab[i].st_size); + + //if (sym) + // free(sym); + } + //elfData->setTextSymbol(&(*elfS)[i]); + } } - if (shdr[i].sh_type == 0x01 && strcmp(shname, ".fini") == 0) + if (shdr[i].sh_type == 0x01 && strcmp(shname, ".fini") == 0){ indexFiniTab = i; + /*bool r = disasSection(buffer, elfData, ".fini", shdr[i].sh_offset, shdr[i].sh_size); + if (!r) + return r;*/ + + elfData->newSection(".fini"); + + unsigned long finioffset = shdr[i].sh_offset; + unsigned long finiend = shdr[i].sh_offset + shdr[i].sh_size; + + for (size_t i = 0; i < symtabnum; i++){ + unsigned long end = symtab[i].st_value + symtab[i].st_size; + + /* + * In the following code, we identify if the symbol is located in the .text section + * If yes, we add it to the QList, that can be used for disassemble code + */ + if (symtab[i].st_value >= finioffset && end <= finiend && symtab[i].st_value != finiend){ + const char *b2 = buffer + strTabShdr->sh_offset; + + struct elfSymbol *sym = getElf64Sym(b2, symtab[i]); + + disasSymbol(buffer, ".fini", elfData, sym, symtab[i].st_value, symtab[i].st_size); + /*if (sym) + free(sym);*/ + } + //elfData->setTextSymbol(&(*elfS)[i]); + } + } // .data - if (shdr[i].sh_type == 0x01){ } + if (shdr[i].sh_type == 0x01 && strcmp(shname, ".data") == 0){ + /*bool r = disasSection(buffer, elfData, ".data", shdr[i].sh_offset, shdr[i].sh_size); + if (!r) + return r;*/ + + elfData->newSection(".data"); + } + + // .rodata + if (shdr[i].sh_type == 0x01 && strcmp(shname, ".rodata") == 0){ + /*bool r = disasSection(buffer, elfData, ".rodata", shdr[i].sh_offset, shdr[i].sh_size); + if (!r) + return r;*/ + + elfData->newSection(".rodata"); + } // .hash - if (shdr[i].sh_type == 0x05 && strcmp(shname, ".hash") == 0) + if (shdr[i].sh_type == 0x05 && strcmp(shname, ".hash") == 0) { indexHashTab = i; + /*bool r = disasSection(buffer, elfData, ".hash", shdr[i].sh_offset, shdr[i].sh_size); + if (!r) + return r;*/ + + elfData->newSection(".hash"); + } if (shdr[i].sh_type == 0xb && strcmp(shname, ".dynsym") == 0) indexDynSymTab = i; @@ -220,41 +330,69 @@ bool elf64SectionHdr(const char *buffer, ElfData *elfData, size_t offset, quint1 indexDynStrTab = i; // .bss - if (shdr[i].sh_type == 0x08){ - //qDebug() << b + shdr[i].sh_name; - //char *bss = (char *)malloc(shdr[i].sh_size); - //memcpy(bss, buffer + shdr[i].sh_offset, shdr[i].sh_size); - //free(bss); + if (shdr[i].sh_type == 0x08 && strcmp(shname, ".bss") == 0) { + /* + * Add the .bss section size to ElfData. + * Should be printed into the caracteristics widgets + */ + elfData->setBssSectionSize(shdr[i].sh_size); } - } - // Get all symbols in the .text section - shdrtext = &shdr[indexTextTab]; - shdrfini = &shdr[indexFiniTab]; - - /* - * Not needed to use shdrfini->sh_offset for the range of the .text - * We can add shdrtext->sh_offset + shdrtext->sh_size - */ - /* - * We can try for each symbols, to get the section .text, .data, .rodata - * getTextSections, getRodataSections, getDataSections, etc. and push to a QList - */ - - // Get all symbols - res = getSymbols(buffer, elfData, shdr, indexStrTab, indexSymbolTab, shdrtext->sh_offset, shdrfini->sh_offset); - if (!res) - return false; - // Get dynsym tab - getDynSym(buffer, elfData, shdr, indexDynSymTab, indexDynStrTab, indexHashTab); // Segmentation fault + getDynSym(buffer, elfData, shdr, indexDynSymTab, indexDynStrTab, indexHashTab); // Hash table - shdrhash = &shdr[indexHashTab]; + //shdrhash = &shdr[indexHashTab]; + return true; +} + +/* + * In this function, we get all symbols. A symbol is stored in the struct elfSymbol.\ + * Each of them are stored in the ElfData + * + * Return false if any errors occurs and true if not + */ +bool getAllSymbols(const char *buffer, Elf64_Sym **symtab, struct elfSymbol **elfS, size_t *symtabnum, ElfData *elfData, Elf64_Shdr *shdr, int indexStrTab, int indexSymbolTab){ + // Get section string table + Elf64_Shdr *strTabShdr = &shdr[indexStrTab]; + // Get section for symbol table + Elf64_Shdr *symtabShdr = &shdr[indexSymbolTab]; + + const char *b2 = buffer + strTabShdr->sh_offset; + //Elf64_Sym *symtab = (Elf64_Sym*)(buffer + shdr[indexSymbolTab].sh_offset); + *symtab = (Elf64_Sym*)(buffer + shdr[indexSymbolTab].sh_offset); + *symtabnum = symtabShdr->sh_size / sizeof(Elf64_Sym); + + /* + * Should be clean in the destructor in ElfData class + */ + *elfS = (struct elfSymbol *)malloc(*symtabnum * sizeof(struct elfSymbol)); + if (!*elfS){ + qDebug() << "Failed to allocate memory"; + *elfS = NULL; + return false; + } + + for (size_t i = 0; i < *symtabnum; i++){ + memset(&(*elfS)[i], 0, sizeof(struct elfSymbol)); + + // Get the data block from the buffer with the st_value which indicate the offset and the st_size + (*elfS)[i].st_name = QByteArray(b2 + (*symtab)[i].st_name); + (*elfS)[i].st_info = (*symtab)[i].st_info; + (*elfS)[i].st_other = (*symtab)[i].st_other; + (*elfS)[i].st_size = convertFrom64bits((*symtab)[i].st_size); + (*elfS)[i].st_shndx = convertFrom16bits((*symtab)[i].st_shndx); + (*elfS)[i].st_value = convertFrom64bits((*symtab)[i].st_value); + + elfData->setSymbol(&(*elfS)[i]); + } return true; } +/* + * This function decode the dynamic symbol + */ bool getDynSym(const char *buffer, ElfData *elfData, Elf64_Shdr *shdr, int indexDynSymTab, int indexDynStrTab, int indexHashTab){ Elf64_Shdr *shdrdynsym = &shdr[indexDynSymTab]; Elf64_Shdr *shdrDynStr = &shdr[indexDynStrTab]; @@ -265,19 +403,17 @@ bool getDynSym(const char *buffer, ElfData *elfData, Elf64_Shdr *shdr, int index Elf64_Sym *symtab = (Elf64_Sym*)(buffer + shdrdynsym->sh_offset); size_t symtabnum = shdrdynsym->sh_size / shdrdynsym->sh_entsize; - struct elfSymbol *elfS = (struct elfSymbol*)malloc(symtabnum * sizeof(elfSymbol)); + struct elfSymbol *elfS = (struct elfSymbol*)malloc(symtabnum * sizeof(struct elfSymbol)); if (elfS == NULL){ qDebug() << "Failed to allocate memory"; return false; } - for (size_t i = 0; i < symtabnum; i++){ memset(&elfS[i], 0, sizeof(struct elfSymbol)); // Get the data block from the buffer with the st_value which indicate the offset and the st_size elfS[i].st_name = QByteArray(b2 + symtab[i].st_name); - //qDebug() << elfS[i].st_name ; elfS[i].st_info = symtab[i].st_info; elfS[i].st_other = symtab[i].st_other; elfS[i].st_size = convertFrom64bits(symtab[i].st_size); @@ -288,122 +424,148 @@ bool getDynSym(const char *buffer, ElfData *elfData, Elf64_Shdr *shdr, int index } return true; } -bool getSymbols(const char *buffer, ElfData *elfData, Elf64_Shdr *shdr, int indexStrTab, int indexSymbolTab, int offsetText, int offsetFini){ - // Get section string table - Elf64_Shdr *strTabShdr = &shdr[indexStrTab]; - // Get section for symbol table - Elf64_Shdr *symtabShdr = &shdr[indexSymbolTab]; - const char *b2 = buffer + strTabShdr->sh_offset; - Elf64_Sym *symtab = (Elf64_Sym*)(buffer + shdr[indexSymbolTab].sh_offset); - size_t symtabnum = symtabShdr->sh_size / sizeof(Elf64_Sym); +/* + * In this function, we create the new struct elfSymbol, that contains informations regarding the elf + * the variable "b" contains the name of the symbol. + * The elfS object will be freed in the destructor of ElfSymbolModel + */ +struct elfSymbol *getElf64Sym(const char *b, const Elf64_Sym symtab){ + struct elfSymbol *elfS = (struct elfSymbol *)malloc(sizeof(struct elfSymbol)); + if (!elfS){ + qDebug() << "NULL"; + return NULL; + } + memset(elfS, 0, sizeof(struct elfSymbol)); - struct elfSymbol *elfS = (struct elfSymbol*)malloc(symtabnum * sizeof(elfSymbol)); - if (elfS == NULL){ - qDebug() << "Failed to allocate memory"; + elfS->st_name = b + symtab.st_name; + elfS->st_info = symtab.st_info; + elfS->st_other = symtab.st_other; + elfS->st_size = convertFrom64bits(symtab.st_size); + elfS->st_shndx = convertFrom16bits(symtab.st_shndx); + elfS->st_value = convertFrom64bits(symtab.st_value); + return elfS; +} + +/* + * This function decode the buffer into asm code with the function disas_asm (binutils) + * The asm decoded is the symbol code located at the offset specified in argument of the function + * The result is store in struct elfObjectDisas + */ +bool disasSymbol(const char *buffer, QByteArray b, ElfData *elfData, struct elfSymbol *elfS, unsigned long long offset, unsigned long long size){ + struct dataDisas *sData; + + //size += 1; + + unsigned char *tmp = (unsigned char*)malloc(size); + memcpy(tmp, buffer + offset, size); + sData = disas_asm(tmp, offset, size); + + if (!sData){ + sData = NULL; return false; } - for (size_t i = 0; i < symtabnum; i++){ - memset(&elfS[i], 0, sizeof(struct elfSymbol)); + for (int j = 0; j < sData->countEntries; j++){ + /* + * The following structure is deleted in the destructor of the ElfData + * The object is stored in a QHash objects + */ + struct elfObjectDisas *sElfObjectDisas = new struct elfObjectDisas; - // Get the data block from the buffer with the st_value which indicate the offset and the st_size - elfS[i].st_name = QByteArray(b2 + symtab[i].st_name); - elfS[i].st_info = symtab[i].st_info; - elfS[i].st_other = symtab[i].st_other; - elfS[i].st_size = convertFrom64bits(symtab[i].st_size); - elfS[i].st_shndx = convertFrom16bits(symtab[i].st_shndx); - elfS[i].st_value = convertFrom64bits(symtab[i].st_value); - - //qDebug() << elfS[i].st_name << " " << elfS[i].st_info << " " << symtab[i].st_size; - if (symtab[i].st_size > 0){ - elfS[i].data = (char*)malloc(symtab[i].st_size); - memcpy(elfS[i].data, buffer + symtab[i].st_value, symtab[i].st_size); - elfS[i].size = symtab[i].st_size; - - // We are going to the get Assembly code - struct dataDisas *sData = disas_asm((unsigned char*)elfS[i].data, symtab[i].st_value, elfS[i].size); - - if (sData == NULL){ - qDebug() << "Failed to get the assembly code"; - // I must freeing elfS structures - /*for (size_t i = 0; i < symtabnum; i++) - free(&elfS[i]);*/ - free(elfS); - elfS = NULL; - return false; - } - - /* - * Nous allons decoder les fonctions des symbols - * Pourquoi pas les variables - */ - int type = (elfS[i].st_info) & 0xf; - //qDebug() << elfS[i].st_name << " " << elfS[i].st_info <<" " << type; - - /* - * We will create a new list which will contains a struct elfObjectDisas - * and that structure store all disassembled code - * After, the entry index in struct elfSymbol is in index to the struct elfObjectDisas - */ - elfS[i].countEntries = sData->countEntries; - //QList *list = new QList; - //qDebug() << elfS[i].st_name; - - // Create new entry - for (int j = 0; j < sData->countEntries; j++){ - // Where I freeing the following structure ???? - struct elfObjectDisas *sElfObjectDisas = new struct elfObjectDisas; - - sElfObjectDisas->cmd = QByteArray( - sData->s_object_asm[j].cmd, - strlen(sData->s_object_asm[j].cmd) - ); - - sElfObjectDisas->hexCmd = QByteArray( - sData->s_object_asm[j].hexCmd, - sData->s_object_asm[j].octets - ); - sElfObjectDisas->octets = sData->s_object_asm[j].octets; - sElfObjectDisas->addr = sData->s_object_asm[j].addr; - //qDebug() << sElfObjectDisas->hexCmd; - //list->append(sElfObjectDisas); - if (type == 2){ - elfData->addToHash(elfS[i].st_name, sElfObjectDisas); - } - } - // Store the symbol disassembled code and get the index - //elfS[i].entry = elfData->setSymbolDisassembled(list); - - /* - * We don't need it anymore, we could clean our sData which contains the disas code - */ - free(sData->s_object_asm->hexCmd); + if (sElfObjectDisas == nullptr){ + //free(sData->s_object_asm->hexCmd); free(sData->s_object_asm); free(sData); + sData = NULL; + return false; } - elfData->setSymbol(&elfS[i]); - //qDebug() << b2 + symtab[i].st_name << " " << symtab[i].st_value << " " << offsetText << " " << offsetFini; - //qDebug() << b2 + symtab[i].st_name << " " << symtab[i].st_value << " " << symtab[i].st_size; - // We check if the symbol is in the .text section - if (symtab[i].st_value >= offsetText && symtab[i].st_value <= offsetFini){ - elfData->setTextSymbol(&elfS[i]); - } + memset(sElfObjectDisas, 0, sizeof(struct sElfObjectDisas *)); - /* - * We can push the symbols to the correct list - * For instance, if symtab[i].st_name == .rodata, we push to the QList - * Also, we can check with the size of the symbols - * size_t l = symtab[i].st_value + symtab[i].st_size - */ + sElfObjectDisas->cmd = QByteArray( + sData->s_object_asm[j].cmd, + strlen(sData->s_object_asm[j].cmd) + ); + + sElfObjectDisas->hexCmd = QByteArray( + sData->s_object_asm[j].hexCmd, + sData->s_object_asm[j].octets + ); + sElfObjectDisas->octets = sData->s_object_asm[j].octets; + sElfObjectDisas->addr = sData->s_object_asm[j].addr; + + elfData->setSymbol(b, elfS, sElfObjectDisas); } + //free(sData->s_object_asm->hexCmd); + free(sData->s_object_asm); + free(sData); + sData = NULL; + return true; } -void getSymbolsText(struct elfSection *sElfS, int indexTextTab, int inexFiniTab){ +/* + * This function decode the buffer into asm code with the function disas_asm (binutils) + * The result is store in struct elfObjectDisas + */ +bool disasSection(const char *buffer, ElfData *elfData, const QByteArray b, quint64 offset, quint64 size){ + struct dataDisas *sData; + + unsigned char *tmp = (unsigned char*)malloc(size); + memcpy(tmp, buffer + offset, size); + sData = disas_asm(tmp, offset, size); + + if (!sData){ + sData = NULL; + return false; + } + + for (int j = 0; j < sData->countEntries; j++){ + /* + * The following structure is deleted in the destructor of the ElfData + * The object is stored in a QHash objects + */ + struct elfObjectDisas *sElfObjectDisas = new struct elfObjectDisas; + + if (sElfObjectDisas == nullptr){ + free(sData->s_object_asm->hexCmd); + free(sData->s_object_asm); + free(sData); + sData = NULL; + return false; + } + + memset(sElfObjectDisas, 0, sizeof(struct sElfObjectDisas *)); + + sElfObjectDisas->cmd = QByteArray( + sData->s_object_asm[j].cmd, + strlen(sData->s_object_asm[j].cmd) + ); + + sElfObjectDisas->hexCmd = QByteArray( + sData->s_object_asm[j].hexCmd, + sData->s_object_asm[j].octets + ); + sElfObjectDisas->octets = sData->s_object_asm[j].octets; + sElfObjectDisas->addr = sData->s_object_asm[j].addr; + //qDebug() << sElfObjectDisas->hexCmd.toHex(); + + //QString addr; + //addr.setNum(sElfObjectDisas->addr, 16); + + //elfData->setSection(b, sElfObjectDisas); + } + + //free(sData->s_object_asm->hexCmd); + free(sData->s_object_asm); + free(sData); + sData = NULL; + + return true; } + bool getHashes(const char *buffer, ElfData *elfData){ return true; } diff --git a/RElicAnalysis/parsingelf.h b/RElicAnalysis/parsingelf.h index 982ad3f..b40010a 100644 --- a/RElicAnalysis/parsingelf.h +++ b/RElicAnalysis/parsingelf.h @@ -41,10 +41,12 @@ bool elf64ProgramHdr(const char *, ElfData *, size_t, int); void elf32ProgramHdr(int, Elf32_Off, off_t); bool elf64SectionHdr(const char *, ElfData *, size_t, quint16, int); void elf32SectionHdr(int, Elf32_Off, off_t); -bool getSymbols(const char *, ElfData *, Elf64_Shdr *, int, int, int, int); +bool disasSymbol(const char *, QByteArray, ElfData *, struct elfSymbol *, unsigned long long, unsigned long long); +bool disasSection(const char *, ElfData *, const QByteArray, quint64, quint64); +bool getAllSymbols(const char *, Elf64_Sym **, struct elfSymbol **, size_t *, ElfData *, Elf64_Shdr *, int, int); bool getDynSym(const char *, ElfData *, Elf64_Shdr *, int, int, int); -void getSymbolsText(struct elfSection *, int, int); bool getHashes(const char *, ElfData *); +struct elfSymbol *getElf64Sym(const char *, const Elf64_Sym); QByteArray convertFrom16bits(quint16); QByteArray convertFrom32bits(quint32); QByteArray convertFrom64bits(quint64);