From c69f053c29faa47d0600f5b147835e970d9cf654 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 20 Jul 2020 02:54:22 +0200 Subject: Initial Commit Half-added some basic AARM64 instructions such as ADD, RET, MOV, NOP... --- src/include/disassemble.hpp | 13 +++++++++++++ src/include/instructionhandler.hpp | 14 ++++++++++++++ src/include/instructions.hpp | 35 +++++++++++++++++++++++++++++++++++ src/include/utils.hpp | 13 +++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/include/disassemble.hpp create mode 100644 src/include/instructionhandler.hpp create mode 100644 src/include/instructions.hpp create mode 100644 src/include/utils.hpp (limited to 'src/include') diff --git a/src/include/disassemble.hpp b/src/include/disassemble.hpp new file mode 100644 index 0000000..fde8fb8 --- /dev/null +++ b/src/include/disassemble.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include +#include + +#include "utils.hpp" +#include "instructions.hpp" + +class Disasm +{ +public: + static int disassemble(const uint8_t* buffer, uint32_t pos, uint32_t offset); +}; diff --git a/src/include/instructionhandler.hpp b/src/include/instructionhandler.hpp new file mode 100644 index 0000000..c61d3e2 --- /dev/null +++ b/src/include/instructionhandler.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include +#include "instructions.hpp" + +class InstructionHanlder +{ +public: + static InstructionType getInstruction(Instruction* instr); + static std::string getInstructionString(Instruction* instr); +private: + static std::tuple getTpl(Instruction* instr); + static std::tuple array[6]; +}; diff --git a/src/include/instructions.hpp b/src/include/instructions.hpp new file mode 100644 index 0000000..ed354b4 --- /dev/null +++ b/src/include/instructions.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include +#include + +#include "utils.hpp" +#include "disassemble.hpp" + +enum class InstructionType +{ + NUL, + ADD, + ADD_SHIFTED_REG, + SUB, + MOV, + MOVZ, + RET, + NOP +}; + +class Instruction +{ +public: + Instruction(uint8_t* hex, uint32_t offset, uint32_t pos); + uint8_t bits[33]; + uint32_t offset; + uint32_t pos; + uint32_t addr; + InstructionType type; + std::string string; + uint32_t hex; +}; + +#include "instructionhandler.hpp" + diff --git a/src/include/utils.hpp b/src/include/utils.hpp new file mode 100644 index 0000000..5c7cc39 --- /dev/null +++ b/src/include/utils.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include +#include +#include + +class Utils +{ +public: + static void findelf(uint8_t* buffer, uint64_t* textstart, uint64_t* textend); + static void getbinaryrepresentation(uint8_t* bytes, size_t numbytes, uint8_t* buf); + static uint8_t tobit(uint8_t byte, uint8_t pos); +}; -- cgit 1.4.1