From d04afaac54ed632e6f9783386e1fe686597a1b0b Mon Sep 17 00:00:00 2001 From: Robin Thunig Date: Mon, 26 Aug 2019 04:17:22 +0200 Subject: [PATCH] (capstone) feat: add capstone disassembler files --- src/core/config/VariantConfig.hpp.in | 1 + src/core/util/CMakeLists.txt | 12 +- .../util/capstonedisassembler/CMakeLists.txt | 26 ++ .../CapstoneDisassembler.cpp | 281 ++++++++++++++++++ .../CapstoneDisassembler.hpp | 84 ++++++ .../CapstoneToFailBochs.cpp | 103 +++++++ .../CapstoneToFailBochs.hpp | 14 + .../CapstoneToFailGem5.cpp | 24 ++ .../CapstoneToFailGem5.hpp | 14 + .../CapstoneToFailTranslator.cpp | 50 ++++ .../CapstoneToFailTranslator.hpp | 93 ++++++ .../util/capstonedisassembler/testing/armm3 | Bin 0 -> 356830 bytes .../capstonedisassembler/testing/armregs.txt | 281 ++++++++++++++++++ .../capstonedisassembler/testing/bubble.cc | 71 +++++ .../testing/capstoneDisTest.cc | 63 ++++ .../testing/howtobuild.txt | 4 + .../capstonedisassembler/testing/x86regs.txt | 163 ++++++++++ 17 files changed, 1283 insertions(+), 1 deletion(-) create mode 100644 src/core/util/capstonedisassembler/CMakeLists.txt create mode 100644 src/core/util/capstonedisassembler/CapstoneDisassembler.cpp create mode 100644 src/core/util/capstonedisassembler/CapstoneDisassembler.hpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailBochs.cpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailBochs.hpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailGem5.cpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailGem5.hpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailTranslator.cpp create mode 100644 src/core/util/capstonedisassembler/CapstoneToFailTranslator.hpp create mode 100755 src/core/util/capstonedisassembler/testing/armm3 create mode 100644 src/core/util/capstonedisassembler/testing/armregs.txt create mode 100644 src/core/util/capstonedisassembler/testing/bubble.cc create mode 100644 src/core/util/capstonedisassembler/testing/capstoneDisTest.cc create mode 100644 src/core/util/capstonedisassembler/testing/howtobuild.txt create mode 100644 src/core/util/capstonedisassembler/testing/x86regs.txt diff --git a/src/core/config/VariantConfig.hpp.in b/src/core/config/VariantConfig.hpp.in index 19cffea6..73c7efc0 100644 --- a/src/core/config/VariantConfig.hpp.in +++ b/src/core/config/VariantConfig.hpp.in @@ -12,6 +12,7 @@ #cmakedefine BUILD_ARM #cmakedefine BUILD_LLVM_DISASSEMBLER +#cmakedefine BUILD_CAPSTONE_DISASSEMBLER #define ARCH_TOOL_PREFIX "@ARCH_TOOL_PREFIX@" diff --git a/src/core/util/CMakeLists.txt b/src/core/util/CMakeLists.txt index a2ec8bf0..5d8e9492 100644 --- a/src/core/util/CMakeLists.txt +++ b/src/core/util/CMakeLists.txt @@ -81,12 +81,22 @@ endif(CONFIG_INJECTIONPOINT_HOPS) add_library(fail-util ${SRCS}) add_dependencies(fail-util fail-comm) -target_link_libraries(fail-util fail-comm ${ADDITIONAL_LIBS} ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${LibIberty_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBDWARF_LIBRARIES} ${LIBELF_LIBRARIES}) +target_link_libraries(fail-util fail-comm fail-sal ${ADDITIONAL_LIBS} ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${LibIberty_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBDWARF_LIBRARIES} ${LIBELF_LIBRARIES}) + +option(BUILD_CAPSTONE_DISASSEMBLER "Build the Capstone-based disassembler (Capstone 4.0.1 required, higher versions may not work)" OFF) +if (BUILD_CAPSTONE_DISASSEMBLER) + add_subdirectory(capstonedisassembler) +endif (BUILD_CAPSTONE_DISASSEMBLER) option(BUILD_LLVM_DISASSEMBLER "Build the LLVM-based disassembler (LLVM 3.9, 4.0, 5.0 or 6.0 preferred, other versions may not work)" OFF) if (BUILD_LLVM_DISASSEMBLER) add_subdirectory(llvmdisassembler) endif (BUILD_LLVM_DISASSEMBLER) + +if (BUILD_CAPSTONE_DISASSEMBLER AND BUILD_LLVM_DISASSEMBLER) + message(FATAL_ERROR "BUILD_CAPSTONE_DISASSEMBLER and BUILD_LLVM_DISASSEMBLER can't be on at the same time!") +endif (BUILD_CAPSTONE_DISASSEMBLER AND BUILD_LLVM_DISASSEMBLER) + ### Tests add_executable(memorymap-test testing/memorymap-test.cc) target_link_libraries(memorymap-test fail-util) diff --git a/src/core/util/capstonedisassembler/CMakeLists.txt b/src/core/util/capstonedisassembler/CMakeLists.txt new file mode 100644 index 00000000..390b6b18 --- /dev/null +++ b/src/core/util/capstonedisassembler/CMakeLists.txt @@ -0,0 +1,26 @@ +set(SRCS + CapstoneDisassembler.cpp + CapstoneDisassembler.hpp + CapstoneToFailBochs.cpp + CapstoneToFailBochs.hpp + CapstoneToFailGem5.hpp + CapstoneToFailGem5.cpp + CapstoneToFailTranslator.cpp + CapstoneToFailTranslator.hpp +) + +include(FindCapstone) + +add_library(fail-capstonedisassembler ${SRCS}) + +target_link_libraries(fail-capstonedisassembler ${CAPSTONE_LIBRARY}) +include_directories(${CAPSTONE_INCLUDE_DIR}) + +### Tests +add_executable(capstoneDisTest testing/capstoneDisTest.cc) +target_link_libraries(capstoneDisTest fail-capstonedisassembler fail-sal) + +add_test(NAME capstoneDisx86Test COMMAND capstoneDisTest ${CMAKE_CURRENT_SOURCE_DIR}/testing/x86 ) +add_test(NAME capstoneDisx86_64Test COMMAND capstoneDisTest ${CMAKE_CURRENT_SOURCE_DIR}/testing/x86_64 ) +add_test(NAME capstoneDisARMM3Test COMMAND capstoneDisTest ${CMAKE_CURRENT_SOURCE_DIR}/testing/armm3 ) +add_test(NAME capstoneDisARM9Test COMMAND capstoneDisTest ${CMAKE_CURRENT_SOURCE_DIR}/testing/arm9 ) \ No newline at end of file diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp new file mode 100644 index 00000000..0b2a5da5 --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp @@ -0,0 +1,281 @@ +#include "CapstoneDisassembler.hpp" + +using namespace fail; + + +CapstoneToFailTranslator *CapstoneDisassembler::getTranslator() { + if (ctofail == 0) { + switch (m_elf->m_machine) { + case EM_386: + case EM_X86_64: + ctofail = new CapstoneToFailBochs(); + break; + case EM_ARM: + ctofail = new CapstoneToFailGem5(); + break; + default: + std::cerr << "ArchType " + << m_elf->m_machine + << " not supported\n"; + exit(1); + } + } + return ctofail; +} + +std::map CapstoneDisassembler::get_symtab_map(uint32_t sect_size) { + // Make a list of all the symbols in this section. + std::vector > symbols; + for (ElfReader::container_t::const_iterator it = m_elf->sym_begin(); it != m_elf->sym_end(); ++it) { + + if (it->getSymbolType() != 2 /*SST_FUNC*/) { + continue; + } + + symbols.push_back(std::make_pair(it->getAddress(), it->getSize())); +#if 0 + std::cout << std::hex << it->getAddress() << "\t" << it->getSymbolType() << "\t" << it->getName().c_str() << "\t" << it->getSize() << std::endl; +#endif + } + + // Sort the symbols by address, just in case they didn't come in that way. + std::sort(symbols.begin(), symbols.end()); + + std::map symtab_map; + uint64_t start; + uint64_t end; // exclusive + for (unsigned si = 0, se = symbols.size(); si != se; ++si) { + start = symbols[si].first; + if (symbols[si].second == 0) { + // The end is either the size of the section or the beginning of the next symbol. + if (si == se - 1) + end = sect_size; + // Make sure this symbol takes up space. + else if (symbols[si + 1].first != start) + end = symbols[si + 1].first; + else + // This symbol has the same address as the next symbol. Skip it. + continue; + + symbols[si].second = end - start; + } + symtab_map[symbols[si].first] = symbols[si].second; + } +#if 0 + for (std::map::iterator it=symtab_map.begin(); it!=symtab_map.end(); ++it) + std::cout << std::hex << it->first << " => " << it->second << std::endl; +#endif + return symtab_map; +} + +int CapstoneDisassembler::disassemble_section(Elf_Data *data, Elf32_Shdr *shdr32, Elf64_Shdr *shdr64, std::map symtab_map) { +#if 0 + std::cout << std::dec << "bit: " << m_elf->m_elfclass << " 32: "<< ELFCLASS32 << " 64: " << ELFCLASS64 << " arch: " << m_elf->m_machine << " arm:" << EM_ARM << " x86: " << EM_386 << " x86_64: "<< EM_X86_64 << std::endl; +#endif + csh handle; + cs_insn *insn; + size_t count, j; + cs_regs regs_read, regs_write; + uint8_t read_count, write_count, i; + + cs_opt_skipdata skipdata = { + .mnemonic = "db", + }; + + // Arm may not work, because thumb is a problem + if (m_elf->m_machine == EM_386) { + if (cs_open(CS_ARCH_X86, CS_MODE_32, &handle) != CS_ERR_OK) + return -1; + } else if(m_elf->m_machine == EM_X86_64) { + if (cs_open(CS_ARCH_X86, CS_MODE_64, &handle) != CS_ERR_OK) + return -1; + } else if (m_elf->m_machine == EM_ARM) { + if (m_elf->m_elfclass == ELFCLASS32) { + if (cs_open(CS_ARCH_ARM, CS_MODE_ARM, &handle) != CS_ERR_OK) + return -1; + } else { + if (cs_open(CS_ARCH_ARM64, CS_MODE_ARM, &handle) != CS_ERR_OK) + return -1; + } + } + + cs_option(handle, CS_OPT_DETAIL, CS_OPT_ON); + cs_option(handle, CS_OPT_SKIPDATA, CS_OPT_ON); + cs_option(handle, CS_OPT_SKIPDATA_SETUP, (size_t)&skipdata); + + int global_count = 0; + + for (std::map::iterator it=symtab_map.begin(); it!=symtab_map.end(); ++it) { + + if (m_elf->m_elfclass == ELFCLASS32) { + count = cs_disasm(handle, + (uint8_t *) ((uint64_t) data->d_buf + (uint64_t) it->first - (uint64_t) shdr32->sh_addr), + it->second, it->first, 0, &insn); + } else { + count = cs_disasm(handle, + (uint8_t *) ((uint64_t) data->d_buf + (uint64_t) it->first - (uint64_t) shdr64->sh_addr), + it->second, it->first, 0, &insn); + } + + if (count > 0) { + for (j = 0; j < count; j++) { + unsigned int opcode = 0; + if (m_elf->m_machine == EM_386 || m_elf->m_machine == EM_X86_64) { + opcode = (insn[j].detail->x86.opcode[3] << 24) | (insn[j].detail->x86.opcode[2] << 16) | + (insn[j].detail->x86.opcode[1] << 8) | insn[j].detail->x86.opcode[0]; + } else if (m_elf->m_machine == EM_ARM) { + // placeholder + opcode = 0; + } + + // Print assembly +#if 0 + printf("%s\t%s\n", insn[j].mnemonic, insn[j].op_str); + printf("Opcode: %x\t Adress: %lx\t Size: %d\n", opcode, insn[j].address, insn[j].size); +#endif + // Print all registers accessed by this instruction. + if (cs_regs_access(handle, &insn[j], regs_read, &read_count, regs_write, &write_count) == 0) { + Instr instr; + instr.opcode = opcode; + instr.length = insn[j].size; + instr.address = insn[j].address; + // FIXME could not find a functionality in capstone + instr.conditional_branch = false; + + if (read_count > 0) { +// printf("\n\tRegisters read:"); + for (i = 0; i < read_count; i++) { + instr.reg_uses.push_back(regs_read[i]); +// printf(" %s, %d |", cs_reg_name(handle, regs_read[i]), regs_read[i]); + } +// printf("\n"); + } + + if (write_count > 0) { +// printf("\n\tRegisters modified:"); + for (i = 0; i < write_count; i++) { + instr.reg_defs.push_back(regs_write[i]); +// printf(" %s, %d |", cs_reg_name(handle, regs_write[i]), regs_write[i]); + } +// printf("\n"); + } + (*instrs)[instr.address] = instr; + } +// printf("________________________________________________\n"); + } + global_count += count; + + cs_free(insn, count); + } else + std::cerr << "ERROR: Failed to disassemble given code!" << std::endl; + } +// printf("len_instr_map: %d\n", instrs->size()); + cs_close(&handle); +// printf("%d instructions\n", global_count); + return 0; +} + +void CapstoneDisassembler::disassemble() { + int fd; // File descriptor for the executable ELF file + char *section_name; + size_t shstrndx; + Elf *e; // ELF struct + Elf_Data *data = 0; + Elf_Scn *scn; // Section index struct + Elf32_Shdr *shdr32 = 0; // Section struct 32 Bit + Elf64_Shdr *shdr64 = 0; // Section struct 64 Bit + + if (elf_version(EV_CURRENT) == EV_NONE) + std::cerr << "ELF library initialization failed" << std::endl; + + if ((fd = open(m_elf->getFilename().c_str(), O_RDONLY, 0)) < 0) + std::cerr << "open " << m_elf->getFilename().c_str() << " failed" << std::endl; + + if ((e = elf_begin(fd, ELF_C_READ, NULL)) == NULL) + std::cerr << "elf_begin() failed" << std::endl; + + if (elf_kind(e) != ELF_K_ELF) { + std::cerr << m_elf->getFilename().c_str() << " is not an Elf object" << std::endl; + } + + if (elf_getshdrstrndx(e, &shstrndx) != 0) + std::cerr << "elf_getshdrstrndx() failed" << std::endl; + scn = NULL; + + // Loop over all sections in the ELF object + + while ((scn = elf_nextscn(e, scn)) != NULL) { + // Given an Elf Scn pointer, retrieve the associated section header + if (m_elf->m_elfclass == ELFCLASS32) { + if ((shdr32 = elf32_getshdr(scn)) == NULL) + std::cerr << "getshdr() failed" << std::endl; + + // Retrieve the name of the section + if ((section_name = elf_strptr(e, shstrndx, shdr32->sh_name)) == NULL) + std::cerr << "elf_strptr() failed" << std::endl; + + if (!strcmp(section_name, ".text")) { + if ((data = elf_rawdata(scn, data)) == NULL) { + std::cerr << "No section data available" << std::endl; + } +#if 0 + printf("Section name: %s\n", section_name); + printf("sh_offset: %x\n", shdr32->sh_offset); + printf("sh_type: %x\n", shdr32->sh_type); + printf("sh_flags: %x\n", shdr32->sh_flags); + printf("sh_addr: %x\n", shdr32->sh_addr); + printf("sh_size: %x\n", shdr32->sh_size); + printf("sh_link: %x\n", shdr32->sh_link); + printf("sh_info: %x\n", shdr32->sh_info); + printf("sh_addralign: %x\n", shdr32->sh_addralign); + printf("sh_entsize: %x\n", shdr32->sh_entsize); + printf("data: %x\n", data); + printf("buf: %x\n", data->d_buf); + printf("size: %d\n", data->d_size); +#endif + break; + } + } + else { + if ((shdr64 = elf64_getshdr(scn)) == NULL) + std::cerr << "getshdr() failed" << std::endl; + + // Retrieve the name of the section + if ((section_name = elf_strptr(e, shstrndx, shdr64->sh_name)) == NULL) + std::cerr << "elf_strptr() failed" << std::endl; + + if (!strcmp(section_name, ".text")) { + if ((data = elf_rawdata(scn, data)) == NULL) { + std::cerr << "No section data availible" << std::endl; + } +#if 0 + printf("Section name: %s\n", section_name); + printf("sh_offset: %lx\n", shdr64->sh_offset); + printf("sh_type: %lx\n", shdr64->sh_type); + printf("sh_flags: %lx\n", shdr64->sh_flags); + printf("sh_addr: %lx\n", shdr64->sh_addr); + printf("sh_size: %lx\n", shdr64->sh_size); + printf("sh_link: %lx\n", shdr64->sh_link); + printf("sh_info: %lx\n", shdr64->sh_info); + printf("sh_addralign: %lx\n", shdr64->sh_addralign); + printf("sh_entsize: %lx\n", shdr64->sh_entsize); + printf("data: %lx\n", data); + printf("buf: %lx\n", data->d_buf); + printf("size: %d\n", data->d_size); +#endif + break; + } + } + } + std::map symtab_map; + if (m_elf->m_elfclass == ELFCLASS32) { + symtab_map = get_symtab_map(shdr32->sh_size); + } else if (m_elf->m_elfclass == ELFCLASS64) { + symtab_map = get_symtab_map(shdr64->sh_size); + } + + disassemble_section(data, shdr32, shdr64, symtab_map); + + elf_end(e); + close(fd); +} diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp new file mode 100644 index 00000000..86dd7517 --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp @@ -0,0 +1,84 @@ +#ifndef __CAPSTONEDISASSEMBLER_HPP__ +#define __CAPSTONEDISASSEMBLER_HPP__ + +#include +#include +#include +#include +#include // unique_ptr +#include + +#include + +#include "CapstoneToFailTranslator.hpp" +#include "CapstoneToFailBochs.hpp" +#include "CapstoneToFailGem5.hpp" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "util/ElfReader.hpp" + +namespace fail { + +class CapstoneDisassembler { + +public: + typedef uint16_t register_t; + typedef unsigned int address_t; + struct Instr { + unsigned int opcode; + unsigned int address; + unsigned char length; + bool conditional_branch; + std::vector reg_uses; + std::vector reg_defs; + }; + + typedef std::map InstrMap; + +private: + std::unique_ptr instrs; + fail::CapstoneToFailTranslator *ctofail; + fail::ElfReader *m_elf; + + static bool error(std::error_code ec) { + if (!ec) return false; + + std::cerr << "DIS error: " << ec.message() << ".\n"; + return true; + } + +public: + CapstoneDisassembler(fail::ElfReader *elf) : ctofail(0) { + this->m_elf = elf; + this->instrs.reset(new InstrMap()); + } + + ~CapstoneDisassembler() { delete ctofail; }; + + InstrMap &getInstrMap() { return *instrs; }; + fail::CapstoneToFailTranslator *getTranslator(); + + void disassemble(); + +private: + int disassemble_section(Elf_Data *data, Elf32_Shdr *shdr, Elf64_Shdr *shdr64, std::map symtab_map); + std::map get_symtab_map(uint32_t sect_size); +}; + +} +#endif // __CAPSTONEDISASSEMBLER_HPP__ diff --git a/src/core/util/capstonedisassembler/CapstoneToFailBochs.cpp b/src/core/util/capstonedisassembler/CapstoneToFailBochs.cpp new file mode 100644 index 00000000..209fdca0 --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailBochs.cpp @@ -0,0 +1,103 @@ +#include +#include "CapstoneToFailBochs.hpp" +#include "sal/x86/X86Architecture.hpp" + +using namespace fail; + +CapstoneToFailBochs::CapstoneToFailBochs() { + capstone_to_fail_map[X86_REG_AH] = reginfo_t(RID_CAX, 8, 8); + capstone_to_fail_map[X86_REG_AL] = reginfo_t(RID_CAX, 8); + capstone_to_fail_map[X86_REG_AX] = reginfo_t(RID_CAX, 16); + capstone_to_fail_map[X86_REG_EAX] = reginfo_t(RID_CAX, 32); + capstone_to_fail_map[X86_REG_RAX] = reginfo_t(RID_CAX, 64); + + capstone_to_fail_map[X86_REG_BH] = reginfo_t(RID_CBX, 8, 8); + capstone_to_fail_map[X86_REG_BL] = reginfo_t(RID_CBX, 8); + capstone_to_fail_map[X86_REG_BX] = reginfo_t(RID_CBX, 16); + capstone_to_fail_map[X86_REG_EBX] = reginfo_t(RID_CBX, 32); + capstone_to_fail_map[X86_REG_RBX] = reginfo_t(RID_CBX, 64); + + capstone_to_fail_map[X86_REG_CH] = reginfo_t(RID_CCX, 8, 8); + capstone_to_fail_map[X86_REG_CL] = reginfo_t(RID_CCX, 8); + capstone_to_fail_map[X86_REG_CX] = reginfo_t(RID_CCX, 16); + capstone_to_fail_map[X86_REG_ECX] = reginfo_t(RID_CCX, 32); + capstone_to_fail_map[X86_REG_RCX] = reginfo_t(RID_CCX, 64); + + capstone_to_fail_map[X86_REG_DH] = reginfo_t(RID_CDX, 8, 8); + capstone_to_fail_map[X86_REG_DL] = reginfo_t(RID_CDX, 8); + capstone_to_fail_map[X86_REG_DX] = reginfo_t(RID_CDX, 16); + capstone_to_fail_map[X86_REG_EDX] = reginfo_t(RID_CDX, 32); + capstone_to_fail_map[X86_REG_RDX] = reginfo_t(RID_CDX, 64); + + capstone_to_fail_map[X86_REG_R8] = reginfo_t(RID_R8, 64); + capstone_to_fail_map[X86_REG_R8D] = reginfo_t(RID_R8, 32); + capstone_to_fail_map[X86_REG_R8W] = reginfo_t(RID_R8, 16); + capstone_to_fail_map[X86_REG_R8B] = reginfo_t(RID_R8, 8); + capstone_to_fail_map[X86_REG_R9] = reginfo_t(RID_R9, 64); + capstone_to_fail_map[X86_REG_R9D] = reginfo_t(RID_R9, 32); + capstone_to_fail_map[X86_REG_R9W] = reginfo_t(RID_R9, 16); + capstone_to_fail_map[X86_REG_R9B] = reginfo_t(RID_R9, 8); + capstone_to_fail_map[X86_REG_R10] = reginfo_t(RID_R10, 64); + capstone_to_fail_map[X86_REG_R10D] = reginfo_t(RID_R10, 32); + capstone_to_fail_map[X86_REG_R10W] = reginfo_t(RID_R10, 16); + capstone_to_fail_map[X86_REG_R10B] = reginfo_t(RID_R10, 8); + capstone_to_fail_map[X86_REG_R11] = reginfo_t(RID_R11, 64); + capstone_to_fail_map[X86_REG_R11D] = reginfo_t(RID_R11, 32); + capstone_to_fail_map[X86_REG_R11W] = reginfo_t(RID_R11, 16); + capstone_to_fail_map[X86_REG_R11B] = reginfo_t(RID_R11, 8); + capstone_to_fail_map[X86_REG_R12] = reginfo_t(RID_R12, 64); + capstone_to_fail_map[X86_REG_R12D] = reginfo_t(RID_R12, 32); + capstone_to_fail_map[X86_REG_R12W] = reginfo_t(RID_R12, 16); + capstone_to_fail_map[X86_REG_R12B] = reginfo_t(RID_R12, 8); + capstone_to_fail_map[X86_REG_R13] = reginfo_t(RID_R13, 64); + capstone_to_fail_map[X86_REG_R13D] = reginfo_t(RID_R13, 32); + capstone_to_fail_map[X86_REG_R13W] = reginfo_t(RID_R13, 16); + capstone_to_fail_map[X86_REG_R13B] = reginfo_t(RID_R13, 8); + capstone_to_fail_map[X86_REG_R14] = reginfo_t(RID_R14, 64); + capstone_to_fail_map[X86_REG_R14D] = reginfo_t(RID_R14, 32); + capstone_to_fail_map[X86_REG_R14W] = reginfo_t(RID_R14, 16); + capstone_to_fail_map[X86_REG_R14B] = reginfo_t(RID_R14, 8); + capstone_to_fail_map[X86_REG_R15] = reginfo_t(RID_R15, 64); + capstone_to_fail_map[X86_REG_R15D] = reginfo_t(RID_R15, 32); + capstone_to_fail_map[X86_REG_R15W] = reginfo_t(RID_R15, 16); + capstone_to_fail_map[X86_REG_R15B] = reginfo_t(RID_R15, 8); + + capstone_to_fail_map[X86_REG_DIL] = reginfo_t(RID_CDI, 8); + capstone_to_fail_map[X86_REG_DI] = reginfo_t(RID_CDI, 16); + capstone_to_fail_map[X86_REG_EDI] = reginfo_t(RID_CDI, 32); + capstone_to_fail_map[X86_REG_RDI] = reginfo_t(RID_CDI, 64); + + capstone_to_fail_map[X86_REG_BPL] = reginfo_t(RID_CBP, 8); + capstone_to_fail_map[X86_REG_BP] = reginfo_t(RID_CBP, 16); + capstone_to_fail_map[X86_REG_EBP] = reginfo_t(RID_CBP, 32); + capstone_to_fail_map[X86_REG_RBP] = reginfo_t(RID_CBP, 64); + + capstone_to_fail_map[X86_REG_EFLAGS] = reginfo_t(RID_FLAGS, 64); + // RFLAGS doesn't exist in the x86.h of capstone, therefore X86_REG_EFLAGS is set to 64bit + // capstone_to_fail_map[RFLAGS] = reginfo_t(RID_FLAGS, 64); + + capstone_to_fail_map[X86_REG_EIP] = reginfo_t(RID_PC, 32); + capstone_to_fail_map[X86_REG_RIP] = reginfo_t(RID_PC, 64); + + capstone_to_fail_map[X86_REG_SIL] = reginfo_t(RID_CSI, 8); + capstone_to_fail_map[X86_REG_SI] = reginfo_t(RID_CSI, 16); + capstone_to_fail_map[X86_REG_ESI] = reginfo_t(RID_CSI, 32); + capstone_to_fail_map[X86_REG_RSI] = reginfo_t(RID_CSI, 64); + + capstone_to_fail_map[X86_REG_SPL] = reginfo_t(RID_CSP, 8); + capstone_to_fail_map[X86_REG_SP] = reginfo_t(RID_CSP, 16); + capstone_to_fail_map[X86_REG_ESP] = reginfo_t(RID_CSP, 32); + capstone_to_fail_map[X86_REG_RSP] = reginfo_t(RID_CSP, 64); + + capstone_to_fail_map[X86_REG_CR0] = reginfo_t(RID_CR0); + capstone_to_fail_map[X86_REG_CR2] = reginfo_t(RID_CR2); + capstone_to_fail_map[X86_REG_CR3] = reginfo_t(RID_CR3); + capstone_to_fail_map[X86_REG_CR4] = reginfo_t(RID_CR4); + + capstone_to_fail_map[X86_REG_CS] = reginfo_t(RID_CS, 16); + capstone_to_fail_map[X86_REG_DS] = reginfo_t(RID_DS, 16); + capstone_to_fail_map[X86_REG_ES] = reginfo_t(RID_ES, 16); + capstone_to_fail_map[X86_REG_FS] = reginfo_t(RID_FS, 16); + capstone_to_fail_map[X86_REG_GS] = reginfo_t(RID_GS, 16); + capstone_to_fail_map[X86_REG_SS] = reginfo_t(RID_SS, 16); +} diff --git a/src/core/util/capstonedisassembler/CapstoneToFailBochs.hpp b/src/core/util/capstonedisassembler/CapstoneToFailBochs.hpp new file mode 100644 index 00000000..22763931 --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailBochs.hpp @@ -0,0 +1,14 @@ +#ifndef __CAPSTONETOFAILBOCHS_HPP_ +#define __CAPSTONETOFAILBOCHS_HPP_ + +#include "CapstoneToFailTranslator.hpp" + +namespace fail { + +class CapstoneToFailBochs : public CapstoneToFailTranslator { +public: + CapstoneToFailBochs(); +}; +} // end of namespace + +#endif diff --git a/src/core/util/capstonedisassembler/CapstoneToFailGem5.cpp b/src/core/util/capstonedisassembler/CapstoneToFailGem5.cpp new file mode 100644 index 00000000..15d8322c --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailGem5.cpp @@ -0,0 +1,24 @@ +#include +#include "CapstoneToFailGem5.hpp" +#include "sal/arm/ArmArchitecture.hpp" + +using namespace fail; + +CapstoneToFailGem5::CapstoneToFailGem5() { + capstone_to_fail_map[ARM_REG_R0] = reginfo_t(RI_R0); + capstone_to_fail_map[ARM_REG_R1] = reginfo_t(RI_R1); + capstone_to_fail_map[ARM_REG_R2] = reginfo_t(RI_R2); + capstone_to_fail_map[ARM_REG_R3] = reginfo_t(RI_R3); + capstone_to_fail_map[ARM_REG_R4] = reginfo_t(RI_R4); + capstone_to_fail_map[ARM_REG_R5] = reginfo_t(RI_R5); + capstone_to_fail_map[ARM_REG_R6] = reginfo_t(RI_R6); + capstone_to_fail_map[ARM_REG_R7] = reginfo_t(RI_R7); + capstone_to_fail_map[ARM_REG_R8] = reginfo_t(RI_R8); + capstone_to_fail_map[ARM_REG_R9] = reginfo_t(RI_R9); + capstone_to_fail_map[ARM_REG_R10] = reginfo_t(RI_R10); + capstone_to_fail_map[ARM_REG_R11] = reginfo_t(RI_R11); + capstone_to_fail_map[ARM_REG_R12] = reginfo_t(RI_R12); + capstone_to_fail_map[ARM_REG_SP] = reginfo_t(RI_SP); + capstone_to_fail_map[ARM_REG_LR] = reginfo_t(RI_LR); + capstone_to_fail_map[ARM_REG_PC] = reginfo_t(RI_IP); +} diff --git a/src/core/util/capstonedisassembler/CapstoneToFailGem5.hpp b/src/core/util/capstonedisassembler/CapstoneToFailGem5.hpp new file mode 100644 index 00000000..ebc9d973 --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailGem5.hpp @@ -0,0 +1,14 @@ +#ifndef __CAPSTONETOFAILGEM5_HPP_ +#define __CAPSTONETOFAILGEM5_HPP_ + +#include "CapstoneToFailTranslator.hpp" + +namespace fail { + +class CapstoneToFailGem5 : public CapstoneToFailTranslator { +public: + CapstoneToFailGem5(); +}; +} // end of namespace + +#endif // __CAPSTONETOFAILGEM5_HPP_ diff --git a/src/core/util/capstonedisassembler/CapstoneToFailTranslator.cpp b/src/core/util/capstonedisassembler/CapstoneToFailTranslator.cpp new file mode 100644 index 00000000..a406c0ea --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailTranslator.cpp @@ -0,0 +1,50 @@ +#include +#include "CapstoneToFailTranslator.hpp" +#include "sal/SALInst.hpp" + +using namespace fail; + +const CapstoneToFailTranslator::reginfo_t & CapstoneToFailTranslator::getFailRegisterInfo(unsigned int regid) { + ctof_map_t::iterator it = capstone_to_fail_map.find(regid); + if ( it != capstone_to_fail_map.end() ) {// found + return (*it).second; + } else { // not found +// std::cout << "Fail ID for Capstone Register id " << std::dec << regid << " not found :(" << std::endl; +// exit(EXIT_FAILURE); + return notfound; + } +} + +regdata_t CapstoneToFailTranslator::getRegisterContent(ConcreteCPU& cpu, const reginfo_t ®info){ + regdata_t result; + + Register* reg = cpu.getRegister(reginfo.id); + result = cpu.getRegisterContent(reg); + + result &= reginfo.mask; + result >>= reginfo.offset; + + return result; +} + +void CapstoneToFailTranslator::setRegisterContent(ConcreteCPU & cpu, const reginfo_t ®info, regdata_t value){ + Register* reg = cpu.getRegister(reginfo.id); + + regdata_t origval = cpu.getRegisterContent(reg); // Get register Value from fail + origval &= ~(reginfo.mask); // clear bits to write + + value <<= reginfo.offset; // shift value to write up to position + value &= reginfo.mask; // mask out trailing and leading bits + value |= origval; // set bits to write + + cpu.setRegisterContent( reg, value ); // write back register content +} + +int CapstoneToFailTranslator::getMaxFailRegisterID() +{ + auto max = std::max_element(capstone_to_fail_map.cbegin(), capstone_to_fail_map.cend(), + [] (const ctof_map_t::value_type& v1, const ctof_map_t::value_type& v2) { + return v1.second.id < v2.second.id; + }); + return max->second.id; +} diff --git a/src/core/util/capstonedisassembler/CapstoneToFailTranslator.hpp b/src/core/util/capstonedisassembler/CapstoneToFailTranslator.hpp new file mode 100644 index 00000000..e1e777fb --- /dev/null +++ b/src/core/util/capstonedisassembler/CapstoneToFailTranslator.hpp @@ -0,0 +1,93 @@ +#ifndef __CAPSTONETOFAILTRANSLATOR_HPP_ +#define __CAPSTONETOFAILTRANSLATOR_HPP_ + +#include "sal/SALConfig.hpp" +#include "sal/ConcreteCPU.hpp" +#include + +namespace fail { + +/** + * Translates Capstone disassembler ids + * to FAIL* SAL representations. + */ +class CapstoneToFailTranslator { +public: + /** + * Maps registers to/from linear addresses usable for def/use-pruning + * purposes and storage in the database. Takes care that the linear + * addresses of x86 subregisters (e.g., AX represents the lower 16 bits of + * EAX) overlap with their siblings. + */ + struct reginfo_t { + int id; + regwidth_t width; + regdata_t mask; + byte_t offset; + + int toDataAddress() const { + // .. 5 4 | 3 2 1 0 + // | + return (id << 4) | (offset / 8); + } + + static reginfo_t fromDataAddress(int addr, int width) { + int id = addr >> 4; + byte_t offset = (addr & 0xf) * 8; + return reginfo_t(id, width * 8, offset); + } + + reginfo_t(int id=-1, regwidth_t width = 32, byte_t offs = 0) + : id(id), width(width), mask((((regdata_t) 1 << width) - 1) << offs), offset(offs) + { + if (width >= sizeof(regdata_t) * 8) { // all ones, (1 << width) == 0! + mask = -1; + } +#if 0 + std::cerr << "constructing reginfo_t: " << std::dec << id << " " << width << " " << ((int)offs) << std::hex << " 0x" << mask << std::endl; +#endif + } + }; +protected: + + CapstoneToFailTranslator(){}; + + typedef std::map ctof_map_t; + ctof_map_t capstone_to_fail_map; + +public: + /** + * Translates a backend-specific register ID to a Fail register ID. + * @param regid A backend-specific register ID. + * @return A FAIL* register-info struct, or CapstonetoFailTranslator::notfound + * if no mapping was found. + */ + const reginfo_t & getFailRegisterInfo(unsigned int regid); + + static regdata_t getRegisterContent(ConcreteCPU & cpu, const reginfo_t & reg); + static void setRegisterContent(ConcreteCPU & cpu, const reginfo_t ®, regdata_t value); + regdata_t getRegisterContent(ConcreteCPU & cpu, unsigned int csid) { + return getRegisterContent(cpu, getFailRegisterInfo(csid)); + } + void setRegisterContent(ConcreteCPU & cpu, unsigned int csid, regdata_t value) { + setRegisterContent(cpu, getFailRegisterInfo(csid), value); + } + + /** + * Translates a backend-specific register ID to a Fail register ID. + * @param regid A backend-specific register ID. + * @return A FAIL* register ID. May do funny things if regid does not exist. + */ + int getFailRegisterID(unsigned int regid) { return this->getFailRegisterInfo(regid).id; }; + + int getMaxFailRegisterID(); + fail::address_t getMaxDataAddress() { reginfo_t r(getMaxFailRegisterID() + 1); return r.toDataAddress() - 1; } + + reginfo_t notfound; + +// static CapstoneToFailTranslator* createFromBinary(const std::string elf_path); +}; + +} // end of namespace + +#endif diff --git a/src/core/util/capstonedisassembler/testing/armm3 b/src/core/util/capstonedisassembler/testing/armm3 new file mode 100755 index 0000000000000000000000000000000000000000..637f00bc1b91d127a148b533c7104331123729ad GIT binary patch literal 356830 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%0APgOe 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

_?E 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 literal 0 HcmV?d00001 diff --git a/src/core/util/capstonedisassembler/testing/armregs.txt b/src/core/util/capstonedisassembler/testing/armregs.txt new file mode 100644 index 00000000..3b6c21cb --- /dev/null +++ b/src/core/util/capstonedisassembler/testing/armregs.txt @@ -0,0 +1,281 @@ +Triple: arm-unknown-unknown + +Number of Registers: 278 +0 - NOREG +1 - APSR +2 - CPSR +3 - D0 +4 - D1 +5 - D2 +6 - D3 +7 - D4 +8 - D5 +9 - D6 +10 - D7 +11 - D8 +12 - D9 +13 - D10 +14 - D11 +15 - D12 +16 - D13 +17 - D14 +18 - D15 +19 - D16 +20 - D17 +21 - D18 +22 - D19 +23 - D20 +24 - D21 +25 - D22 +26 - D23 +27 - D24 +28 - D25 +29 - D26 +30 - D27 +31 - D28 +32 - D29 +33 - D30 +34 - D31 +35 - FPEXC +36 - FPSCR +37 - FPSCR_NZCV +38 - FPSID +39 - ITSTATE +40 - LR +41 - MVFR0 +42 - MVFR1 +43 - PC +44 - Q0 +45 - Q1 +46 - Q2 +47 - Q3 +48 - Q4 +49 - Q5 +50 - Q6 +51 - Q7 +52 - Q8 +53 - Q9 +54 - Q10 +55 - Q11 +56 - Q12 +57 - Q13 +58 - Q14 +59 - Q15 +60 - R0 +61 - R1 +62 - R2 +63 - R3 +64 - R4 +65 - R5 +66 - R6 +67 - R7 +68 - R8 +69 - R9 +70 - R10 +71 - R11 +72 - R12 +73 - S0 +74 - S1 +75 - S2 +76 - S3 +77 - S4 +78 - S5 +79 - S6 +80 - S7 +81 - S8 +82 - S9 +83 - S10 +84 - S11 +85 - S12 +86 - S13 +87 - S14 +88 - S15 +89 - S16 +90 - S17 +91 - S18 +92 - S19 +93 - S20 +94 - S21 +95 - S22 +96 - S23 +97 - S24 +98 - S25 +99 - S26 +100 - S27 +101 - S28 +102 - S29 +103 - S30 +104 - S31 +105 - SP +106 - SPSR +107 - D0_D2 +108 - D1_D3 +109 - D2_D4 +110 - D3_D5 +111 - D4_D6 +112 - D5_D7 +113 - D6_D8 +114 - D7_D9 +115 - D8_D10 +116 - D9_D11 +117 - D10_D12 +118 - D11_D13 +119 - D12_D14 +120 - D13_D15 +121 - D14_D16 +122 - D15_D17 +123 - D16_D18 +124 - D17_D19 +125 - D18_D20 +126 - D19_D21 +127 - D20_D22 +128 - D21_D23 +129 - D22_D24 +130 - D23_D25 +131 - D24_D26 +132 - D25_D27 +133 - D26_D28 +134 - D27_D29 +135 - D28_D30 +136 - D29_D31 +137 - Q0_Q1 +138 - Q1_Q2 +139 - Q2_Q3 +140 - Q3_Q4 +141 - Q4_Q5 +142 - Q5_Q6 +143 - Q6_Q7 +144 - Q7_Q8 +145 - Q8_Q9 +146 - Q9_Q10 +147 - Q10_Q11 +148 - Q11_Q12 +149 - Q12_Q13 +150 - Q13_Q14 +151 - Q14_Q15 +152 - Q0_Q1_Q2_Q3 +153 - Q1_Q2_Q3_Q4 +154 - Q2_Q3_Q4_Q5 +155 - Q3_Q4_Q5_Q6 +156 - Q4_Q5_Q6_Q7 +157 - Q5_Q6_Q7_Q8 +158 - Q6_Q7_Q8_Q9 +159 - Q7_Q8_Q9_Q10 +160 - Q8_Q9_Q10_Q11 +161 - Q9_Q10_Q11_Q12 +162 - Q10_Q11_Q12_Q13 +163 - Q11_Q12_Q13_Q14 +164 - Q12_Q13_Q14_Q15 +165 - D0_D1_D2 +166 - D1_D2_D3 +167 - D2_D3_D4 +168 - D3_D4_D5 +169 - D4_D5_D6 +170 - D5_D6_D7 +171 - D6_D7_D8 +172 - D7_D8_D9 +173 - D8_D9_D10 +174 - D9_D10_D11 +175 - D10_D11_D12 +176 - D11_D12_D13 +177 - D12_D13_D14 +178 - D13_D14_D15 +179 - D14_D15_D16 +180 - D15_D16_D17 +181 - D16_D17_D18 +182 - D17_D18_D19 +183 - D18_D19_D20 +184 - D19_D20_D21 +185 - D20_D21_D22 +186 - D21_D22_D23 +187 - D22_D23_D24 +188 - D23_D24_D25 +189 - D24_D25_D26 +190 - D25_D26_D27 +191 - D26_D27_D28 +192 - D27_D28_D29 +193 - D28_D29_D30 +194 - D29_D30_D31 +195 - D0_D2_D4 +196 - D1_D3_D5 +197 - D2_D4_D6 +198 - D3_D5_D7 +199 - D4_D6_D8 +200 - D5_D7_D9 +201 - D6_D8_D10 +202 - D7_D9_D11 +203 - D8_D10_D12 +204 - D9_D11_D13 +205 - D10_D12_D14 +206 - D11_D13_D15 +207 - D12_D14_D16 +208 - D13_D15_D17 +209 - D14_D16_D18 +210 - D15_D17_D19 +211 - D16_D18_D20 +212 - D17_D19_D21 +213 - D18_D20_D22 +214 - D19_D21_D23 +215 - D20_D22_D24 +216 - D21_D23_D25 +217 - D22_D24_D26 +218 - D23_D25_D27 +219 - D24_D26_D28 +220 - D25_D27_D29 +221 - D26_D28_D30 +222 - D27_D29_D31 +223 - D0_D2_D4_D6 +224 - D1_D3_D5_D7 +225 - D2_D4_D6_D8 +226 - D3_D5_D7_D9 +227 - D4_D6_D8_D10 +228 - D5_D7_D9_D11 +229 - D6_D8_D10_D12 +230 - D7_D9_D11_D13 +231 - D8_D10_D12_D14 +232 - D9_D11_D13_D15 +233 - D10_D12_D14_D16 +234 - D11_D13_D15_D17 +235 - D12_D14_D16_D18 +236 - D13_D15_D17_D19 +237 - D14_D16_D18_D20 +238 - D15_D17_D19_D21 +239 - D16_D18_D20_D22 +240 - D17_D19_D21_D23 +241 - D18_D20_D22_D24 +242 - D19_D21_D23_D25 +243 - D20_D22_D24_D26 +244 - D21_D23_D25_D27 +245 - D22_D24_D26_D28 +246 - D23_D25_D27_D29 +247 - D24_D26_D28_D30 +248 - D25_D27_D29_D31 +249 - D1_D2 +250 - D3_D4 +251 - D5_D6 +252 - D7_D8 +253 - D9_D10 +254 - D11_D12 +255 - D13_D14 +256 - D15_D16 +257 - D17_D18 +258 - D19_D20 +259 - D21_D22 +260 - D23_D24 +261 - D25_D26 +262 - D27_D28 +263 - D29_D30 +264 - D1_D2_D3_D4 +265 - D3_D4_D5_D6 +266 - D5_D6_D7_D8 +267 - D7_D8_D9_D10 +268 - D9_D10_D11_D12 +269 - D11_D12_D13_D14 +270 - D13_D14_D15_D16 +271 - D15_D16_D17_D18 +272 - D17_D18_D19_D20 +273 - D19_D20_D21_D22 +274 - D21_D22_D23_D24 +275 - D23_D24_D25_D26 +276 - D25_D26_D27_D28 +277 - D27_D28_D29_D30 diff --git a/src/core/util/capstonedisassembler/testing/bubble.cc b/src/core/util/capstonedisassembler/testing/bubble.cc new file mode 100644 index 00000000..c9685e33 --- /dev/null +++ b/src/core/util/capstonedisassembler/testing/bubble.cc @@ -0,0 +1,71 @@ +#include + +class random_generator_t +{ +private: + unsigned int a; // (sqrt(5)-1)/2 = 0.61803398875 + unsigned int b; + unsigned int last_val; + unsigned int sd; +public: + void forth() { + last_val = a*last_val + b; + } + + + random_generator_t(unsigned int seed = 1) + : a(2654435769), b(seed), last_val(1), sd(seed){ + forth(); + } + + unsigned int item() const { + return last_val; + } + + void reset() { + last_val = 1; + b = sd; + forth(); + } +}; + + + + +void sort(int len, int arr[] ) +{ + int tmp; + int again; + int i; + + for(again=1; again; ) + for( again=0, i=0; i < (len-1); ++i){ + assert(0<=i && i+1 arr[i+1] ){ + tmp = arr[i]; + arr[i] = arr[i+1]; + arr[i+1] = tmp; + again = 1; + } + } +} + + + + +int main() +{ + const unsigned int arr_size = 10000; //50000; + + int arr[arr_size]; + int i; + random_generator_t rand; + + for(i=0; i!=arr_size; ++i){ + arr[i] = rand.item(); + rand.forth(); + } + + sort(arr_size, arr); +} + diff --git a/src/core/util/capstonedisassembler/testing/capstoneDisTest.cc b/src/core/util/capstonedisassembler/testing/capstoneDisTest.cc new file mode 100644 index 00000000..ba3d9247 --- /dev/null +++ b/src/core/util/capstonedisassembler/testing/capstoneDisTest.cc @@ -0,0 +1,63 @@ +#include "util/ElfReader.hpp" +#include +#include "../CapstoneDisassembler.hpp" + +using namespace fail; + +bool show_mapping(fail::CapstoneToFailTranslator *ctof, unsigned llvmid) +{ + const CapstoneToFailTranslator::reginfo_t& failreg = ctof->getFailRegisterInfo(llvmid); + std::cout /*<< reg_info.getName(llvmid)*/ << "(" << std::dec << llvmid << "->"; + if (&failreg != &ctof->notfound) { + std::cout << failreg.id; + } else { + std::cout << "NOTFOUND!"; + } + std::cout << ") "; + return &failreg != &ctof->notfound; +} + +int main(int argc, char* argv[]) { + std::string file; + + if(argc > 1){ + std::cout << "Trying to disassemble: " << argv[1] << std::endl; + file = argv[1]; + } else { + std::cerr << "No file to disassemble :(" << std::endl; + return -1; + } + + ElfReader *m_elf = new ElfReader(file.c_str()); + + CapstoneDisassembler disas(m_elf); + disas.disassemble(); + + CapstoneDisassembler::InstrMap &instr_map = disas.getInstrMap(); + std::cout << "Map Size: " << instr_map.size() << std::endl; + + CapstoneDisassembler::InstrMap::const_iterator itr; + + fail::CapstoneToFailTranslator *ctof = disas.getTranslator(); + + for (itr = instr_map.begin(); itr != instr_map.end(); ++itr){ + const CapstoneDisassembler::Instr &instr = (*itr).second; + std::cout << std::hex << (*itr).first << " | " << instr.opcode << std::endl; + std::cout << std::dec << "USES: "; + for (std::vector::const_iterator it = instr.reg_uses.begin(); + it != instr.reg_uses.end(); ++it) { + show_mapping(ctof, *it); + } + + std::cout << " | DEFS: "; + for (std::vector::const_iterator it = instr.reg_defs.begin(); + it != instr.reg_defs.end(); ++it) { + show_mapping(ctof, *it); + } + + if (instr.conditional_branch) { + std::cout << "(conditional branch)"; + } + std::cout << std::endl; + } +} diff --git a/src/core/util/capstonedisassembler/testing/howtobuild.txt b/src/core/util/capstonedisassembler/testing/howtobuild.txt new file mode 100644 index 00000000..5b678fd1 --- /dev/null +++ b/src/core/util/capstonedisassembler/testing/howtobuild.txt @@ -0,0 +1,4 @@ +g++ -m32 bubble.cc -o x86 +g++ -m64 bubble.cc -o x86_64 +arm-none-eabi-g++ -mcpu=cortex-m3 bubble.cc -o armm3 +arm-none-eabi-g++ -mcpu=arm9 bubble.cc -o arm9 diff --git a/src/core/util/capstonedisassembler/testing/x86regs.txt b/src/core/util/capstonedisassembler/testing/x86regs.txt new file mode 100644 index 00000000..bc01c6c5 --- /dev/null +++ b/src/core/util/capstonedisassembler/testing/x86regs.txt @@ -0,0 +1,163 @@ +Triple: x86_64-unknown-unknown + +Number of Registers: 160 +0 - NOREG +1 - AH +2 - AL +3 - AX +4 - BH +5 - BL +6 - BP +7 - BPL +8 - BX +9 - CH +10 - CL +11 - CR0 +12 - CR1 +13 - CR2 +14 - CR3 +15 - CR4 +16 - CR5 +17 - CR6 +18 - CR7 +19 - CR8 +20 - CR9 +21 - CR10 +22 - CR11 +23 - CR12 +24 - CR13 +25 - CR14 +26 - CR15 +27 - CS +28 - CX +29 - DH +30 - DI +31 - DIL +32 - DL +33 - DR0 +34 - DR1 +35 - DR2 +36 - DR3 +37 - DR4 +38 - DR5 +39 - DR6 +40 - DR7 +41 - DS +42 - DX +43 - EAX +44 - EBP +45 - EBX +46 - ECX +47 - EDI +48 - EDX +49 - EFLAGS +50 - EIP +51 - EIZ +52 - ES +53 - ESI +54 - ESP +55 - FP0 +56 - FP1 +57 - FP2 +58 - FP3 +59 - FP4 +60 - FP5 +61 - FP6 +62 - FS +63 - GS +64 - IP +65 - MM0 +66 - MM1 +67 - MM2 +68 - MM3 +69 - MM4 +70 - MM5 +71 - MM6 +72 - MM7 +73 - R8 +74 - R8B +75 - R8D +76 - R8W +77 - R9 +78 - R9B +79 - R9D +80 - R9W +81 - R10 +82 - R10B +83 - R10D +84 - R10W +85 - R11 +86 - R11B +87 - R11D +88 - R11W +89 - R12 +90 - R12B +91 - R12D +92 - R12W +93 - R13 +94 - R13B +95 - R13D +96 - R13W +97 - R14 +98 - R14B +99 - R14D +100 - R14W +101 - R15 +102 - R15B +103 - R15D +104 - R15W +105 - RAX +106 - RBP +107 - RBX +108 - RCX +109 - RDI +110 - RDX +111 - RIP +112 - RIZ +113 - RSI +114 - RSP +115 - SI +116 - SIL +117 - SP +118 - SPL +119 - SS +120 - ST0 +121 - ST1 +122 - ST2 +123 - ST3 +124 - ST4 +125 - ST5 +126 - ST6 +127 - ST7 +128 - XMM0 +129 - XMM1 +130 - XMM2 +131 - XMM3 +132 - XMM4 +133 - XMM5 +134 - XMM6 +135 - XMM7 +136 - XMM8 +137 - XMM9 +138 - XMM10 +139 - XMM11 +140 - XMM12 +141 - XMM13 +142 - XMM14 +143 - XMM15 +144 - YMM0 +145 - YMM1 +146 - YMM2 +147 - YMM3 +148 - YMM4 +149 - YMM5 +150 - YMM6 +151 - YMM7 +152 - YMM8 +153 - YMM9 +154 - YMM10 +155 - YMM11 +156 - YMM12 +157 - YMM13 +158 - YMM14 +159 - YMM15