From 3ae5076cbdd4b24e0f789c9181705c7a7d1d69e3 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 5 Jun 2019 02:44:22 +0200 Subject: [PATCH 1/9] update .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 2d7c46e1..931513da 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ debuggers/openocd/src/startup.tcl debuggers/openocd/src/startup_tcl.c debuggers/openocd/src/target/xscale_debug.h debuggers/openocd/stamp-h1 + +.idea \ No newline at end of file From ea6c1c031b93ab5a0053b57e71530e5ab6aacb5d Mon Sep 17 00:00:00 2001 From: Robin Thunig Date: Mon, 21 Oct 2019 22:17:46 +0200 Subject: [PATCH 2/9] (capstone) feat: add FindCapstone --- cmake/FindCapstone.cmake | 33 +++++++++++++ cmake/LibFindMacros.cmake | 99 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 cmake/FindCapstone.cmake create mode 100644 cmake/LibFindMacros.cmake diff --git a/cmake/FindCapstone.cmake b/cmake/FindCapstone.cmake new file mode 100644 index 00000000..3ffaebfb --- /dev/null +++ b/cmake/FindCapstone.cmake @@ -0,0 +1,33 @@ +# - Try to find CAPSTONE +# Once done, this will define +# +# CAPSTONE_FOUND - system has CAPSTONE +# CAPSTONE_INCLUDE_DIRS - the CAPSTONE include directories +# CAPSTONE_LIBRARIES - link these to use CAPSTONE + +include(LibFindMacros) +message(STATUS "[FAIL*] looking for Capstone library") + +# Dependencies +# libfind_package(CAPSTONE capstone) + +# Use pkg-config to get hints about paths +# libfind_pkg_check_modules(CAPSTONE_PKGCONF capstone) + +# Include dir +find_path(CAPSTONE_INCLUDE_DIR + NAMES capstone/capstone.h + PATHS ${CAPSTONE_PKGCONF_INCLUDE_DIRS} + ) + +# Finally the library itself +find_library(CAPSTONE_LIBRARY + NAMES capstone + PATHS ${CAPSTONE_PKGCONF_LIBRARY_DIRS} + ) + +# Set the include dir variables and the libraries and let libfind_process do the rest. +# NOTE: Singular variables for this library, plural for libraries this this lib depends on. +set(CAPSTONE_PROCESS_INCLUDES CAPSTONE_INCLUDE_DIR CAPSTONE_INCLUDE_DIRS) +set(CAPSTONE_PROCESS_LIBS CAPSTONE_LIBRARY CAPSTONE_LIBRARIES) +libfind_process(CAPSTONE) diff --git a/cmake/LibFindMacros.cmake b/cmake/LibFindMacros.cmake new file mode 100644 index 00000000..78fd5f38 --- /dev/null +++ b/cmake/LibFindMacros.cmake @@ -0,0 +1,99 @@ +# Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments +# used for the current package. For this to work, the first parameter must be the +# prefix of the current package, then the prefix of the new package etc, which are +# passed to find_package. +macro (libfind_package PREFIX) + set (LIBFIND_PACKAGE_ARGS ${ARGN}) + if (${PREFIX}_FIND_QUIETLY) + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET) + endif (${PREFIX}_FIND_QUIETLY) + if (${PREFIX}_FIND_REQUIRED) + set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED) + endif (${PREFIX}_FIND_REQUIRED) + find_package(${LIBFIND_PACKAGE_ARGS}) +endmacro (libfind_package) + +# CMake developers made the UsePkgConfig system deprecated in the same release (2.6) +# where they added pkg_check_modules. Consequently I need to support both in my scripts +# to avoid those deprecated warnings. Here's a helper that does just that. +# Works identically to pkg_check_modules, except that no checks are needed prior to use. +macro (libfind_pkg_check_modules PREFIX PKGNAME) + if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + include(UsePkgConfig) + pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS) + else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + find_package(PkgConfig) + if (PKG_CONFIG_FOUND) + pkg_check_modules(${PREFIX} ${PKGNAME}) + endif (PKG_CONFIG_FOUND) + endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) +endmacro (libfind_pkg_check_modules) + +# Do the final processing once the paths have been detected. +# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain +# all the variables, each of which contain one include directory. +# Ditto for ${PREFIX}_PROCESS_LIBS and library files. +# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. +# Also handles errors in case library detection was required, etc. +macro (libfind_process PREFIX) + # Skip processing if already processed during this run + if (NOT ${PREFIX}_FOUND) + # Start with the assumption that the library was found + set (${PREFIX}_FOUND TRUE) + + # Process all includes and set _FOUND to false if any are missing + foreach (i ${${PREFIX}_PROCESS_INCLUDES}) + if (${i}) + set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}}) + mark_as_advanced(${i}) + else (${i}) + set (${PREFIX}_FOUND FALSE) + endif (${i}) + endforeach (i) + + # Process all libraries and set _FOUND to false if any are missing + foreach (i ${${PREFIX}_PROCESS_LIBS}) + if (${i}) + set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}}) + mark_as_advanced(${i}) + else (${i}) + set (${PREFIX}_FOUND FALSE) + endif (${i}) + endforeach (i) + + # Print message and/or exit on fatal error + if (${PREFIX}_FOUND) + if (NOT ${PREFIX}_FIND_QUIETLY) + message (STATUS "Found ${PREFIX} include directory: ${${PREFIX}_INCLUDE_DIR}") + message (STATUS "Found ${PREFIX} library: ${${PREFIX}_LIBRARY}") + endif (NOT ${PREFIX}_FIND_QUIETLY) + else (${PREFIX}_FOUND) + if (${PREFIX}_FIND_REQUIRED) + foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS}) + message("${i}=${${i}}") + endforeach (i) + message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.") + endif (${PREFIX}_FIND_REQUIRED) + endif (${PREFIX}_FOUND) + endif (NOT ${PREFIX}_FOUND) +endmacro (libfind_process) + +macro(libfind_library PREFIX basename) + set(TMP "") + if(MSVC80) + set(TMP -vc80) + endif(MSVC80) + if(MSVC90) + set(TMP -vc90) + endif(MSVC90) + set(${PREFIX}_LIBNAMES ${basename}${TMP}) + if(${ARGC} GREATER 2) + set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2}) + string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES}) + set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP}) + endif(${ARGC} GREATER 2) + find_library(${PREFIX}_LIBRARY + NAMES ${${PREFIX}_LIBNAMES} + PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS} + ) +endmacro(libfind_library) From d04afaac54ed632e6f9783386e1fe686597a1b0b Mon Sep 17 00:00:00 2001 From: Robin Thunig Date: Mon, 26 Aug 2019 04:17:22 +0200 Subject: [PATCH 3/9] (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 From f7f982fec504243781e3bf797297c97e4329d03c Mon Sep 17 00:00:00 2001 From: Robin Thunig Date: Fri, 1 Nov 2019 01:24:28 +0100 Subject: [PATCH 4/9] (capstone) feat: add capstone disassembler to tools/import-trace/ --- src/core/util/ElfReader.cc | 3 +- src/core/util/ElfReader.hpp | 3 +- tools/import-trace/AdvancedMemoryImporter.cc | 37 +++ tools/import-trace/AdvancedMemoryImporter.hpp | 9 + tools/import-trace/CMakeLists.txt | 23 +- tools/import-trace/ElfImporter.cc | 3 +- tools/import-trace/ElfImporter.hpp | 11 +- tools/import-trace/InstructionImporter.cc | 25 ++ tools/import-trace/InstructionImporter.hpp | 9 + tools/import-trace/RandomJumpImporter.cc | 19 ++ tools/import-trace/RandomJumpImporter.hpp | 9 + tools/import-trace/RegisterImporter.cc | 218 ++++++++++++++++++ tools/import-trace/RegisterImporter.hpp | 32 ++- tools/import-trace/main.cc | 20 +- 14 files changed, 407 insertions(+), 14 deletions(-) diff --git a/src/core/util/ElfReader.cc b/src/core/util/ElfReader.cc index a3018ac0..76669864 100644 --- a/src/core/util/ElfReader.cc +++ b/src/core/util/ElfReader.cc @@ -97,7 +97,7 @@ void ElfReader::setup(const char* path) { printf("Error: wrong Section to read\n"); } else { process_section(&sec_hdr, buff); - } + } } free(buff); @@ -218,6 +218,7 @@ bool ElfReader::read_ELF_file_header(FILE *fp, Elf64_Ehdr *filehdr) return false; } + m_machine = filehdr32.e_machine; m_elfclass = filehdr32.e_ident[EI_CLASS]; if (m_elfclass == ELFCLASS32) { Elf32to64_Ehdr(&filehdr32, filehdr); diff --git a/src/core/util/ElfReader.hpp b/src/core/util/ElfReader.hpp index b7babbdd..d6712b93 100644 --- a/src/core/util/ElfReader.hpp +++ b/src/core/util/ElfReader.hpp @@ -81,6 +81,8 @@ public: typedef container_t::const_iterator symbol_iterator; typedef container_t::const_iterator section_iterator; + int m_machine; + int m_elfclass; /** * Constructor. @@ -157,7 +159,6 @@ public: private: Logger m_log; std::string m_filename; - int m_elfclass; void setup(const char*); bool process_symboltable(FILE *fp, Elf64_Ehdr const *ehdr, int sect_num); diff --git a/tools/import-trace/AdvancedMemoryImporter.cc b/tools/import-trace/AdvancedMemoryImporter.cc index eb36cd33..61eaead8 100644 --- a/tools/import-trace/AdvancedMemoryImporter.cc +++ b/tools/import-trace/AdvancedMemoryImporter.cc @@ -2,8 +2,10 @@ #include #include "AdvancedMemoryImporter.hpp" +#ifdef BUILD_LLVM_DISASSEMBLER using namespace llvm; using namespace llvm::object; +#endif using namespace fail; static fail::Logger LOG("AdvancedMemoryImporter"); @@ -98,6 +100,35 @@ bool AdvancedMemoryImporter::handle_ip_event(fail::simtime_t curtime, instructio // (delayed) trace entries insert_delayed_entries(false); +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + if (!isDisassembled) { + if (!m_elf) { + LOG << "Please give an ELF binary as parameter (-e/--elf)." << std::endl; + return false; + } + + disas.reset(new CapstoneDisassembler(m_elf)); + + disas->disassemble(); + CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + LOG << "instructions disassembled: " << std::dec << instr_map.size() << std::endl; +#if 0 + for (CapstoneDisassembler::InstrMap::const_iterator it = instr_map.begin(); + it != instr_map.end(); ++it) { + LOG << "DIS " << std::hex << it->second.address << " " << (int) it->second.length << std::endl; + } +#endif + } + + const CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + const CapstoneDisassembler::InstrMap::const_iterator it = instr_map.find(ev.ip()); + if (it == instr_map.end()) { + LOG << "WARNING: CapstoneDisassembler hasn't disassembled instruction at 0x" + << ev.ip() << " -- are you using Capstone < 4.0?" << std::endl; + return true; // probably weird things will happen now + } + const CapstoneDisassembler::Instr &opcode = it->second; +#elif defined(BUILD_LLVM_DISASSEMBLER) if (!binary) { /* Disassemble the binary if necessary */ llvm::InitializeAllTargetInfos(); @@ -144,6 +175,7 @@ bool AdvancedMemoryImporter::handle_ip_event(fail::simtime_t curtime, instructio return true; // probably weird things will happen now } const LLVMDisassembler::Instr &opcode = it->second; +#endif /* Now we've got the opcode and know whether it's a conditional branch. If * it is, the next IP event will tell us whether it was taken or not. */ @@ -161,8 +193,13 @@ bool AdvancedMemoryImporter::handle_ip_event(fail::simtime_t curtime, instructio bool AdvancedMemoryImporter::handle_mem_event(fail::simtime_t curtime, instruction_count_t instr, Trace_Event &ev) { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + const CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + const CapstoneDisassembler::Instr &opcode = instr_map.at(ev.ip()); +#elif defined(BUILD_LLVM_DISASSEMBLER) const LLVMDisassembler::InstrMap &instr_map = disas->getInstrMap(); const LLVMDisassembler::Instr &opcode = instr_map.at(ev.ip()); +#endif DelayedTraceEntry entry = { curtime, instr, ev, opcode.opcode, (unsigned) branches_taken.size() }; delayed_entries.push_back(entry); diff --git a/tools/import-trace/AdvancedMemoryImporter.hpp b/tools/import-trace/AdvancedMemoryImporter.hpp index 183418b0..1165d2b0 100644 --- a/tools/import-trace/AdvancedMemoryImporter.hpp +++ b/tools/import-trace/AdvancedMemoryImporter.hpp @@ -5,7 +5,11 @@ #include #include "MemoryImporter.hpp" +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +#include "util/capstonedisassembler/CapstoneDisassembler.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) #include "util/llvmdisassembler/LLVMDisassembler.hpp" +#endif /** * A MemoryImporter that additionally imports Relyzer-style conditional branch @@ -24,8 +28,13 @@ * operations with a set of new virtual functions that are called downwards. */ class AdvancedMemoryImporter : public MemoryImporter { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + bool isDisassembled = false; + std::unique_ptr disas; +#elif defined(BUILD_LLVM_DISASSEMBLER) llvm::object::Binary *binary = 0; std::unique_ptr disas; +#endif bool m_last_was_conditional_branch; fail::guest_address_t m_ip_jump_not_taken; std::vector branches_taken; diff --git a/tools/import-trace/CMakeLists.txt b/tools/import-trace/CMakeLists.txt index 93ab3603..dc1f6f13 100644 --- a/tools/import-trace/CMakeLists.txt +++ b/tools/import-trace/CMakeLists.txt @@ -28,9 +28,26 @@ if (BUILD_LLVM_DISASSEMBLER) find_package(LibDwarf REQUIRED) include_directories(${LIBELF_INCLUDE_DIRS}) include_directories(${LIBDWARF_INCLUDE_DIRS}) - endif(BUILD_LLVM_DISASSEMBLER) +if (BUILD_CAPSTONE_DISASSEMBLER) + set(SRCS ${SRCS} + InstructionImporter.cc + RegisterImporter.cc + RandomJumpImporter.cc + AdvancedMemoryImporter.cc + ElfImporter.cc + ) + + include(FindCapstone) + + # libelf and libdwarf required by ElfImporter + find_package(LibElf REQUIRED) + find_package(LibDwarf REQUIRED) + include_directories(${LIBELF_INCLUDE_DIRS}) + include_directories(${LIBDWARF_INCLUDE_DIRS}) +endif(BUILD_CAPSTONE_DISASSEMBLER) + find_package(MySQL REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MYSQL_CFLAGS}") @@ -48,5 +65,9 @@ if (BUILD_LLVM_DISASSEMBLER) target_link_libraries(import-trace fail-llvmdisassembler fail-sal ${LLVM_LIBS} ${LLVM_LDFLAGS} ${Boost_LIBRARIES}) endif (BUILD_LLVM_DISASSEMBLER) +if (BUILD_CAPSTONE_DISASSEMBLER) + target_link_libraries(import-trace fail-capstonedisassembler fail-sal) +endif (BUILD_CAPSTONE_DISASSEMBLER) + install(TARGETS import-trace RUNTIME DESTINATION bin) install(PROGRAMS import-symbols.sh DESTINATION bin) diff --git a/tools/import-trace/ElfImporter.cc b/tools/import-trace/ElfImporter.cc index 329980ab..e2e91ce4 100644 --- a/tools/import-trace/ElfImporter.cc +++ b/tools/import-trace/ElfImporter.cc @@ -9,9 +9,10 @@ #include #endif - +#ifdef BUILD_LLVM_DISASSEMBLER using namespace llvm; using namespace llvm::object; +#endif using namespace fail; using namespace std; diff --git a/tools/import-trace/ElfImporter.hpp b/tools/import-trace/ElfImporter.hpp index 13c8106b..4b64c6a1 100644 --- a/tools/import-trace/ElfImporter.hpp +++ b/tools/import-trace/ElfImporter.hpp @@ -7,7 +7,13 @@ #include "libelf.h" #include "Importer.hpp" + +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +#include "util/capstonedisassembler/CapstoneDisassembler.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) #include "util/llvmdisassembler/LLVMDisassembler.hpp" +#endif + #include "util/CommandLine.hpp" #include "util/DwarfReader.hpp" @@ -27,8 +33,11 @@ into the database. */ class ElfImporter : public Importer { - std::unique_ptr binary; +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + std::unique_ptr disas; +#elif defined(BUILD_LLVM_DISASSEMBLER) std::unique_ptr disas; +#endif fail::CommandLine::option_handle OBJDUMP; fail::CommandLine::option_handle SOURCECODE; diff --git a/tools/import-trace/InstructionImporter.cc b/tools/import-trace/InstructionImporter.cc index c0eab477..60243cf4 100644 --- a/tools/import-trace/InstructionImporter.cc +++ b/tools/import-trace/InstructionImporter.cc @@ -3,8 +3,10 @@ #include "InstructionImporter.hpp" #include "util/Logger.hpp" +#ifdef BUILD_LLVM_DISASSEMBLER using namespace llvm; using namespace llvm::object; +#endif using namespace fail; @@ -12,6 +14,28 @@ static Logger LOG("InstructionImporter"); bool InstructionImporter::handle_ip_event(fail::simtime_t curtime, instruction_count_t instr, Trace_Event &ev) { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + if (!isDisassembled) { + if (!m_elf) { + LOG << "Please give an ELF binary as parameter (-e/--elf)." << std::endl; + return false; + } + + disas.reset(new CapstoneDisassembler(m_elf)); + + disas->disassemble(); + CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + LOG << "instructions disassembled: " << instr_map.size() << std::endl; + isDisassembled = true; + } + const CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + if (instr_map.find(ev.ip()) == instr_map.end()) { + LOG << "Could not find instruction for IP " << std::hex << ev.ip() + << ", skipping" << std::endl; + return true; + } + const CapstoneDisassembler::Instr &opcode = instr_map.at(ev.ip()); +#elif defined(BUILD_LLVM_DISASSEMBLER) if (!binary) { /* Disassemble the binary if necessary */ llvm::InitializeAllTargetInfos(); @@ -46,6 +70,7 @@ bool InstructionImporter::handle_ip_event(fail::simtime_t curtime, instruction_c const LLVMDisassembler::InstrMap &instr_map = disas->getInstrMap(); const LLVMDisassembler::Instr &opcode = instr_map.at(ev.ip()); +#endif address_t from = ev.ip(), to = ev.ip() + opcode.length; diff --git a/tools/import-trace/InstructionImporter.hpp b/tools/import-trace/InstructionImporter.hpp index 27391a30..9640e230 100644 --- a/tools/import-trace/InstructionImporter.hpp +++ b/tools/import-trace/InstructionImporter.hpp @@ -3,11 +3,20 @@ #include "Importer.hpp" +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +#include "util/capstonedisassembler/CapstoneDisassembler.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) #include "util/llvmdisassembler/LLVMDisassembler.hpp" +#endif class InstructionImporter : public Importer { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + bool isDisassembled = false; + std::unique_ptr disas; +#elif defined(BUILD_LLVM_DISASSEMBLER) llvm::object::Binary *binary = 0; std::unique_ptr disas; +#endif protected: virtual bool handle_ip_event(fail::simtime_t curtime, instruction_count_t instr, diff --git a/tools/import-trace/RandomJumpImporter.cc b/tools/import-trace/RandomJumpImporter.cc index d426f12c..a92af9d9 100644 --- a/tools/import-trace/RandomJumpImporter.cc +++ b/tools/import-trace/RandomJumpImporter.cc @@ -3,8 +3,10 @@ #include "util/Logger.hpp" #include "RandomJumpImporter.hpp" +#ifdef BUILD_LLVM_DISASSEMBLER using namespace llvm; using namespace llvm::object; +#endif using namespace fail; using namespace std; @@ -60,6 +62,22 @@ bool RandomJumpImporter::handle_ip_event(fail::simtime_t curtime, instruction_co return false; } +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + disas.reset(new CapstoneDisassembler(m_elf)); + + disas->disassemble(); + CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + LOG << "instructions disassembled: " << instr_map.size() << std::endl; + + /* Collect all addresses we want to jump to */ + for (CapstoneDisassembler::InstrMap::const_iterator instr = instr_map.begin(); + instr != instr_map.end(); ++instr) { + if (m_mm_to && m_mm_to->isMatching(instr->first)) { + m_jump_to_addresses.push_back(instr->first); + } + } + binary = true; +#elif defined(BUILD_LLVM_DISASSEMBLER) /* Disassemble the binary if necessary */ llvm::InitializeAllTargetInfos(); llvm::InitializeAllTargetMCs(); @@ -92,6 +110,7 @@ bool RandomJumpImporter::handle_ip_event(fail::simtime_t curtime, instruction_co m_jump_to_addresses.push_back(instr->first); } } +#endif LOG << "we will jump to " << m_jump_to_addresses.size() << " addresses" << endl; } diff --git a/tools/import-trace/RandomJumpImporter.hpp b/tools/import-trace/RandomJumpImporter.hpp index c48c7b38..48096bd3 100644 --- a/tools/import-trace/RandomJumpImporter.hpp +++ b/tools/import-trace/RandomJumpImporter.hpp @@ -5,11 +5,20 @@ #include "util/CommandLine.hpp" #include "Importer.hpp" +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +#include "util/capstonedisassembler/CapstoneDisassembler.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) #include "util/llvmdisassembler/LLVMDisassembler.hpp" +#endif class RandomJumpImporter : public Importer { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + bool binary = false; + std::unique_ptr disas; +#elif defined(BUILD_LLVM_DISASSEMBLER) llvm::object::Binary *binary = 0; std::unique_ptr disas; +#endif fail::CommandLine::option_handle FROM, TO; diff --git a/tools/import-trace/RegisterImporter.cc b/tools/import-trace/RegisterImporter.cc index 2d3e14ad..ad240180 100644 --- a/tools/import-trace/RegisterImporter.cc +++ b/tools/import-trace/RegisterImporter.cc @@ -3,8 +3,11 @@ #include "RegisterImporter.hpp" #include "util/Logger.hpp" +#ifdef BUILD_LLVM_DISASSEMBLER using namespace llvm; using namespace llvm::object; +#endif + using namespace fail; @@ -29,7 +32,214 @@ bool RegisterImporter::cb_commandline_init() { return true; } +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +bool RegisterImporter::addRegisterTrace(simtime_t curtime, instruction_count_t instr, + Trace_Event &ev, + const CapstoneToFailTranslator::reginfo_t &info, + char access_type) { + address_t from, to; + int chunk_width; + if (do_split_registers) { + /* If we want to split the registers into one byte chunks (to + enable proper pruning, we use a one byte window register, + to determine beginning and end address */ + CapstoneToFailTranslator::reginfo_t one_byte_window = info; + one_byte_window.width = 8; + from = one_byte_window.toDataAddress(); + to = one_byte_window.toDataAddress() + info.width / 8; + chunk_width = 1; // One byte chunks + } else { + /* We trace whole registers */ + from = info.toDataAddress(); + to = from + 1; /* exactly one trace event per register access*/ + chunk_width = (info.width / 8); + } + // Iterate over all accessed bytes + for (address_t data_address = from; data_address < to; ++data_address) { + // skip events outside a possibly supplied memory map + if (m_mm && !m_mm->isMatching(ev.ip())) { + continue; + } + margin_info_t left_margin = getOpenEC(data_address); + margin_info_t right_margin; + right_margin.time = curtime; + right_margin.dyninstr = instr; // !< The current instruction + right_margin.ip = ev.ip(); + + // skip zero-sized intervals: these can occur when an instruction + // accesses a memory location more than once (e.g., INC, CMPXCHG) + if (left_margin.dyninstr > right_margin.dyninstr) { + continue; + } + + // we now have an interval-terminating R/W event to the memaddr + // we're currently looking at; the EC is defined by + // data_address, dynamic instruction start/end, the absolute PC at + // the end, and time start/end + + // pass through potentially available extended trace information + ev.set_width(chunk_width); + ev.set_memaddr(data_address); + ev.set_accesstype(access_type == 'R' ? ev.READ : ev.WRITE); + if (!add_trace_event(left_margin, right_margin, ev)) { + LOG << "add_trace_event failed" << std::endl; + return false; + } + + // next interval must start at next instruction; the aforementioned + // skipping mechanism wouldn't work otherwise + newOpenEC(data_address, curtime + 1, instr + 1, ev.ip()); + } + return true; +} + + +bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_count_t instr, + Trace_Event &ev) { + if (!isDisassembled) { + // Parse command line again, for jump-from and jump-to + // operations + CommandLine &cmd = CommandLine::Inst(); + if (!cmd.parse()) { + std::cerr << "Error parsing arguments." << std::endl; + return false; + } + do_gp = !cmd[NO_GP]; + do_flags = cmd[FLAGS]; + do_ip = cmd[IP]; + do_split_registers = !cmd[NO_SPLIT]; + + // retrieve register IDs for general-purpose and flags register(s) for + // the configured architecture + fail::Architecture arch; + m_ip_register_id = + (*arch.getRegisterSetOfType(RT_IP)->begin())->getId(); + fail::UniformRegisterSet *regset; + if (do_gp) { + regset = arch.getRegisterSetOfType(RT_GP); + for (fail::UniformRegisterSet::iterator it = regset->begin(); + it != regset->end(); ++it) { + m_register_ids.insert((*it)->getId()); + } + } + if (do_flags) { + regset = arch.getRegisterSetOfType(RT_ST); + for (fail::UniformRegisterSet::iterator it = regset->begin(); + it != regset->end(); ++it) { + m_register_ids.insert((*it)->getId()); + } + } + + + if (!m_elf) { + LOG << "Please give an ELF binary as parameter (-e/--elf)." << std::endl; + return false; + } + disas.reset(new CapstoneDisassembler(m_elf)); + LOG << "Start to dissamble" << std::endl; + disas->disassemble(); + LOG << "Get instr map" << std::endl; + CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + LOG << "instructions disassembled: " << std::dec << instr_map.size() << std::endl; + m_ctof = disas->getTranslator(); + isDisassembled = true; + } + + // instruction pointer is read + written at each instruction + const CapstoneToFailTranslator::reginfo_t info_pc(m_ip_register_id); + if (do_ip && + (!addRegisterTrace(curtime, instr, ev, info_pc, 'R') || + !addRegisterTrace(curtime, instr, ev, info_pc, 'W'))) { + return false; + } + + const CapstoneDisassembler::InstrMap &instr_map = disas->getInstrMap(); + if (instr_map.find(ev.ip()) == instr_map.end()) { + LOG << "Could not find instruction for IP " << std::hex << ev.ip() + << ", skipping" << std::endl; + return true; + } + const CapstoneDisassembler::Instr &opcode = instr_map.at(ev.ip()); + //const MCRegisterInfo ®_info = disas->getRegisterInfo(); +// LOG << std::hex << "Address: " << opcode.address << " Opcode: " << opcode.opcode << std::endl; +// std::string log_regs = "Uses: "; + for (std::vector::const_iterator it = opcode.reg_uses.begin(); + it != opcode.reg_uses.end(); ++it) { +// log_regs += std::to_string(*it) + " "; + const CapstoneToFailTranslator::reginfo_t &info = m_ctof->getFailRegisterInfo(*it); + if (&info == &m_ctof->notfound) { + // record failed translation, report later + m_regnotfound[*it].count++; + m_regnotfound[*it].address.insert(ev.ip()); + continue; + } + + /* only proceed if we want to inject into this register */ + if (m_register_ids.find(info.id) == m_register_ids.end()) { +// log_regs += "n "; + continue; + } + + if (!addRegisterTrace(curtime, instr, ev, info, 'R')) { + return false; + } + } + +// log_regs += "Defs: "; + + for (std::vector::const_iterator it = opcode.reg_defs.begin(); + it != opcode.reg_defs.end(); ++it) { +// log_regs += std::to_string(*it) + " "; + const CapstoneToFailTranslator::reginfo_t &info = m_ctof->getFailRegisterInfo(*it); + if (&info == &m_ctof->notfound) { + // record failed translation, report later + m_regnotfound[*it].count++; + m_regnotfound[*it].address.insert(ev.ip()); + continue; + } + + /* only proceed if we want to inject into this register */ + if (m_register_ids.find(info.id) == m_register_ids.end()) { +// log_regs += "n "; + continue; + } + + if (!addRegisterTrace(curtime, instr, ev, info, 'W')) + return false; + } +// LOG << log_regs.c_str() << std::endl; + + return true; +} + +bool RegisterImporter::trace_end_reached() +{ + // report failed LLVM -> FAIL* register mappings, if any + if (m_regnotfound.empty()) { + return true; + } + + LOG << "WARNING: Some LLVM -> FAIL* register mappings failed during import, these will not be injected into:" << std::endl; + for (auto it = m_regnotfound.cbegin(); it != m_regnotfound.cend(); ++it) { + const CapstoneDisassembler::register_t id = it->first; + const RegNotFound& rnf = it->second; + LOG << "Capstone register " << std::dec << id + /* << " \"" << disas->getRegisterInfo().getName(id) << "\": " */ + << "seen " << rnf.count << " times in the trace" << std::endl; + std::ostream& o = LOG << " corresponding instruction addresses in ELF binary: " << std::hex; + for (auto addr_it = rnf.address.cbegin(); addr_it != rnf.address.cend(); ++addr_it) { + if (addr_it != rnf.address.cbegin()) { + o << ", "; + } + o << "0x" << *addr_it; + } + o << std::endl; + } + + return true; +} +#elif defined(BUILD_LLVM_DISASSEMBLER) bool RegisterImporter::addRegisterTrace(simtime_t curtime, instruction_count_t instr, Trace_Event &ev, const LLVMtoFailTranslator::reginfo_t &info, @@ -177,9 +387,12 @@ bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_coun } const LLVMDisassembler::Instr &opcode = instr_map.at(ev.ip()); //const MCRegisterInfo ®_info = disas->getRegisterInfo(); +// LOG << std::hex << "Address: " << opcode.address << " Opcode: " << opcode.opcode << std::endl; +// std::string log_regs = "Uses: "; for (std::vector::const_iterator it = opcode.reg_uses.begin(); it != opcode.reg_uses.end(); ++it) { +// log_regs += std::to_string(*it) + " "; const LLVMtoFailTranslator::reginfo_t &info = m_ltof->getFailRegisterInfo(*it); if (&info == &m_ltof->notfound) { // record failed translation, report later @@ -198,8 +411,10 @@ bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_coun } } +// log_regs += "Defs: "; for (std::vector::const_iterator it = opcode.reg_defs.begin(); it != opcode.reg_defs.end(); ++it) { +// log_regs += std::to_string(*it) + " "; const LLVMtoFailTranslator::reginfo_t &info = m_ltof->getFailRegisterInfo(*it); if (&info == &m_ltof->notfound) { // record failed translation, report later @@ -210,12 +425,14 @@ bool RegisterImporter::handle_ip_event(fail::simtime_t curtime, instruction_coun /* only proceed if we want to inject into this register */ if (m_register_ids.find(info.id) == m_register_ids.end()) { +// log_regs += "n "; continue; } if (!addRegisterTrace(curtime, instr, ev, info, 'W')) return false; } +// LOG << log_regs.c_str() << std::endl; return true; } @@ -246,3 +463,4 @@ bool RegisterImporter::trace_end_reached() return true; } +#endif diff --git a/tools/import-trace/RegisterImporter.hpp b/tools/import-trace/RegisterImporter.hpp index 64218097..b0e927c3 100644 --- a/tools/import-trace/RegisterImporter.hpp +++ b/tools/import-trace/RegisterImporter.hpp @@ -5,10 +5,38 @@ #include "util/CommandLine.hpp" #include "Importer.hpp" +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +#include "util/capstonedisassembler/CapstoneDisassembler.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) #include "util/llvmdisassembler/LLVMDisassembler.hpp" - +#endif class RegisterImporter : public Importer { +#if defined(BUILD_CAPSTONE_DISASSEMBLER) + bool isDisassembled = false; + std::unique_ptr disas; + fail::CapstoneToFailTranslator *m_ctof = 0; + + bool addRegisterTrace(fail::simtime_t curtime, instruction_count_t instr, + Trace_Event &ev, + const fail::CapstoneToFailTranslator::reginfo_t &info, + char access_type); + + fail::CommandLine::option_handle NO_GP, FLAGS, IP, NO_SPLIT; + bool do_gp, do_flags, do_ip, do_split_registers; + + std::set m_register_ids; + unsigned m_ip_register_id; + + // Data structures for recording failed LLVM -> FAIL* register mappings, + // including occurrence counts in the trace (to give an estimate on the + // impact) and instruction addresses (for debugging purposes). + struct RegNotFound { + uint64_t count = 0; + std::set address; + }; + std::map m_regnotfound; +#elif defined(BUILD_LLVM_DISASSEMBLER) llvm::object::Binary *binary = 0; std::unique_ptr disas; fail::LLVMtoFailTranslator *m_ltof = 0; @@ -32,6 +60,8 @@ class RegisterImporter : public Importer { std::set address; }; std::map m_regnotfound; +#endif + public: RegisterImporter() : Importer(), do_gp(true), do_flags(false), do_ip(false), diff --git a/tools/import-trace/main.cc b/tools/import-trace/main.cc index c3be1237..064eb4ad 100644 --- a/tools/import-trace/main.cc +++ b/tools/import-trace/main.cc @@ -10,12 +10,14 @@ #include "FullTraceImporter.hpp" #include "util/AliasedRegistry.hpp" +#if defined(BUILD_LLVM_DISASSEMBLER) || defined(BUILD_CAPSTONE_DISASSEMBLER) #ifdef BUILD_LLVM_DISASSEMBLER #include "llvm/Support/ManagedStatic.h" -#include "InstructionImporter.hpp" -#include "RegisterImporter.hpp" +#endif #include "RandomJumpImporter.hpp" #include "AdvancedMemoryImporter.hpp" +#include "InstructionImporter.hpp" +#include "RegisterImporter.hpp" #include "ElfImporter.hpp" #endif @@ -67,18 +69,20 @@ int main(int argc, char *argv[]) { FullTraceImporter fti; registry.add(&fti); +#if defined(BUILD_LLVM_DISASSEMBLER) || defined(BUILD_CAPSTONE_DISASSEMBLER) #ifdef BUILD_LLVM_DISASSEMBLER llvm::llvm_shutdown_obj Y; - RegisterImporter reg; - registry.add(®); - RandomJumpImporter rjump; - registry.add(&rjump); +#endif AdvancedMemoryImporter adv; registry.add(&adv); - ElfImporter elf; - registry.add(&elf); + RandomJumpImporter rjump; + registry.add(&rjump); InstructionImporter instr; registry.add(&instr); + RegisterImporter reg; + registry.add(®); + ElfImporter elf; + registry.add(&elf); #endif std::string importers = registry.getPrimeAliasesCSV(); From 1cbd5acab0be07711fabccf161201df6817591d4 Mon Sep 17 00:00:00 2001 From: Robin Thunig Date: Thu, 5 Mar 2020 12:39:09 +0100 Subject: [PATCH 5/9] (capstone) add capstone --- src/core/efw/CMakeLists.txt | 3 +++ src/core/efw/DatabaseExperiment.cc | 21 ++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/core/efw/CMakeLists.txt b/src/core/efw/CMakeLists.txt index ab699a04..18ba10b7 100644 --- a/src/core/efw/CMakeLists.txt +++ b/src/core/efw/CMakeLists.txt @@ -17,6 +17,9 @@ target_link_libraries(fail-efw fail-util) # WallclockTimer if (BUILD_LLVM_DISASSEMBLER) target_link_libraries(fail-efw fail-llvmdisassembler) endif() +if (BUILD_CAPSTONE_DISASSEMBLER) + target_link_libraries(fail-efw fail-capstonedisassembler) +endif() find_package(LibPCL REQUIRED) include_directories(${LIBPCL_INCLUDE_DIRS}) diff --git a/src/core/efw/DatabaseExperiment.cc b/src/core/efw/DatabaseExperiment.cc index 550836e4..06389ff5 100644 --- a/src/core/efw/DatabaseExperiment.cc +++ b/src/core/efw/DatabaseExperiment.cc @@ -15,7 +15,9 @@ #include "efw/DatabaseExperiment.hpp" #include "comm/DatabaseCampaignMessage.pb.h" -#ifdef BUILD_LLVM_DISASSEMBLER +#if defined(BUILD_CAPSTONE_DISASSEMBLER) +# include "util/capstonedisassembler/CapstoneToFailTranslator.hpp" +#elif defined(BUILD_LLVM_DISASSEMBLER) # include "util/llvmdisassembler/LLVMtoFailTranslator.hpp" #endif @@ -80,12 +82,17 @@ unsigned DatabaseExperiment::injectFault( /* First 128 registers, TODO use LLVMtoFailTranslator::getMaxDataAddress() */ if (data_address < (128 << 4) && inject_registers) { -#ifdef BUILD_LLVM_DISASSEMBLER +#if defined(BUILD_LLVM_DISASSEMBLER) || defined(BUILD_CAPSTONE_DISASSEMBLER) +#if defined(BUILD_LLVM_DISASSEMBLER) + typedef LLVMtoFailTranslator XtoFailTranslator; +#elif defined(BUILD_CAPSTONE_DISASSEMBLER) + typedef CapstoneToFailTranslator XtoFailTranslator; +#endif // register FI - LLVMtoFailTranslator::reginfo_t reginfo = - LLVMtoFailTranslator::reginfo_t::fromDataAddress(data_address, 1); + XtoFailTranslator::reginfo_t reginfo = + XtoFailTranslator::reginfo_t::fromDataAddress(data_address, 1); - value = LLVMtoFailTranslator::getRegisterContent(simulator.getCPU(0), reginfo); + value = XtoFailTranslator::getRegisterContent(simulator.getCPU(0), reginfo); if (inject_burst) { injected_value = value ^ 0xff; m_log << "INJECTING BURST at: REGISTER " << dec << reginfo.id @@ -95,14 +102,14 @@ unsigned DatabaseExperiment::injectFault( m_log << "INJECTING BIT-FLIP at: REGISTER " << dec << reginfo.id << " bitpos " << (reginfo.offset + bitpos) << endl; } - LLVMtoFailTranslator::setRegisterContent(simulator.getCPU(0), reginfo, injected_value); + XtoFailTranslator::setRegisterContent(simulator.getCPU(0), reginfo, injected_value); if (reginfo.id == RID_PC) { // FIXME move this into the Bochs backend m_log << "Redecode current instruction" << endl; redecodeCurrentInstruction(); } #else - m_log << "ERROR: Not compiled with LLVM. Enable BUILD_LLVM_DISASSEMBLER at buildtime." << endl; + m_log << "ERROR: Not compiled with LLVM or Capstone. Enable BUILD_LLVM_DISASSEMBLER OR BUILD_CAPSTONE_DISASSEMBLER at buildtime." << endl; simulator.terminate(1); #endif } else if (!force_registers) { From 63b3a5772a3165225885a90e4d35e41ee8228b79 Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Mon, 16 Mar 2020 15:36:57 +0100 Subject: [PATCH 6/9] capstone: compile-time version check This version check could (and probably should) also be done in the cmake scripts. However, this check in CapstoneDisassembler.cpp catches another failure mode: When a cmake script is missing a include_directories() directive pointing to capstone.h -- resulting in a missing -I parameter to gcc -- accidentally a system-wide 3.x capstone.h may get #included, providing the wrong definitions and prototypes to some translation units. Change-Id: Id30f77a47e38f4e892b92189bcce9119bf03918c --- src/core/util/capstonedisassembler/CapstoneDisassembler.cpp | 5 +++++ src/core/util/capstonedisassembler/CapstoneDisassembler.hpp | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp index 0b2a5da5..195cae6a 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp @@ -1,3 +1,8 @@ +#include +#if CS_MAKE_VERSION(CS_API_MAJOR, CS_API_MINOR) < CS_MAKE_VERSION(4, 0) +# error Need libcapstone >= 4.0 +#endif + #include "CapstoneDisassembler.hpp" using namespace fail; diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp index 86dd7517..04f4d10d 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp @@ -14,7 +14,6 @@ #include "CapstoneToFailBochs.hpp" #include "CapstoneToFailGem5.hpp" -#include #include #include #include From 4e07ba50bd5ff5d39f868896931907213c9f4d6f Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Mon, 16 Mar 2020 15:54:06 +0100 Subject: [PATCH 7/9] capstone: add missing disassembler test cases Change-Id: I81e7f2ae9e70137c775f04a0a98c922e50b3743d --- .../util/capstonedisassembler/testing/arm9 | Bin 0 -> 356826 bytes src/core/util/capstonedisassembler/testing/x86 | Bin 0 -> 6029 bytes .../util/capstonedisassembler/testing/x86_64 | Bin 0 -> 8079 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 src/core/util/capstonedisassembler/testing/arm9 create mode 100755 src/core/util/capstonedisassembler/testing/x86 create mode 100755 src/core/util/capstonedisassembler/testing/x86_64 diff --git a/src/core/util/capstonedisassembler/testing/arm9 b/src/core/util/capstonedisassembler/testing/arm9 new file mode 100755 index 0000000000000000000000000000000000000000..854f81e4fd8e173048bb9cfe976db200d36e587b GIT binary patch literal 356826 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%0AWjIHeFMeqgc;{a5;J-ro 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 Date: Mon, 16 Mar 2020 15:44:08 +0100 Subject: [PATCH 8/9] capstone: deal properly with symbols outside .text section Especially for dynamically linked ELF binaries (such as those in the testing/ subdirectory), symbols with a start address outside the .text section may exist. This change skips any symbol that is not fully within this section (and assigns a reasonable size to a zero-sized last symbol within the symbol table), and turns green all Capstone-related test cases. Change-Id: I2b51d0f21f325e6052ebc36d9533621bdf9aa38d --- .../CapstoneDisassembler.cpp | 42 +++++++++++-------- .../CapstoneDisassembler.hpp | 2 +- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp index 195cae6a..5302c81b 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.cpp @@ -28,8 +28,8 @@ CapstoneToFailTranslator *CapstoneDisassembler::getTranslator() { return ctofail; } -std::map CapstoneDisassembler::get_symtab_map(uint32_t sect_size) { - // Make a list of all the symbols in this section. +std::map CapstoneDisassembler::get_symtab_map(uint64_t sect_addr, uint64_t sect_size) { + // Make a list of all the symbols (virtual address, size) in this section. std::vector > symbols; for (ElfReader::container_t::const_iterator it = m_elf->sym_begin(); it != m_elf->sym_end(); ++it) { @@ -46,25 +46,35 @@ std::map CapstoneDisassembler::get_symtab_map(uint32_t sect_ // 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; + std::map symtab_map; // start (virtual address), size uint64_t start; - uint64_t end; // exclusive + uint64_t size; 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. + size = symbols[si].second; + // only admit symbols that start within this section + if (start < sect_addr || sect_addr + sect_size <= start) { + continue; + } + if (size == 0) { + // The end is either the end of the section or the beginning of the next symbol. if (si == se - 1) - end = sect_size; - // Make sure this symbol takes up space. + // Last symbol? Span until section end. + size = sect_addr + sect_size - start; else if (symbols[si + 1].first != start) - end = symbols[si + 1].first; + // There is distance to the next symbol? Cover it. + size = symbols[si + 1].first - start; else // This symbol has the same address as the next symbol. Skip it. continue; - symbols[si].second = end - start; + symbols[si].second = size; } - symtab_map[symbols[si].first] = symbols[si].second; + // limit the symbol size to within this section + if (start + size > sect_addr + sect_size) { + size = sect_addr + sect_size - start; + } + symtab_map[symbols[si].first] = size; } #if 0 for (std::map::iterator it=symtab_map.begin(); it!=symtab_map.end(); ++it) @@ -113,12 +123,10 @@ int CapstoneDisassembler::disassemble_section(Elf_Data *data, Elf32_Shdr *shdr32 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), + count = cs_disasm(handle, (uint8_t *) data->d_buf + it->first - 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), + count = cs_disasm(handle, (uint8_t *) data->d_buf + it->first - shdr64->sh_addr, it->second, it->first, 0, &insn); } @@ -274,9 +282,9 @@ void CapstoneDisassembler::disassemble() { } std::map symtab_map; if (m_elf->m_elfclass == ELFCLASS32) { - symtab_map = get_symtab_map(shdr32->sh_size); + symtab_map = get_symtab_map(shdr32->sh_addr, shdr32->sh_size); } else if (m_elf->m_elfclass == ELFCLASS64) { - symtab_map = get_symtab_map(shdr64->sh_size); + symtab_map = get_symtab_map(shdr64->sh_addr, shdr64->sh_size); } disassemble_section(data, shdr32, shdr64, symtab_map); diff --git a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp index 04f4d10d..749a089c 100644 --- a/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp +++ b/src/core/util/capstonedisassembler/CapstoneDisassembler.hpp @@ -76,7 +76,7 @@ public: 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); + std::map get_symtab_map(uint64_t sect_addr, uint64_t sect_size); }; } From 039fa7bedff8a0c3c8548c78feea7467e91b76d9 Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Mon, 16 Mar 2020 17:50:21 +0100 Subject: [PATCH 9/9] doc: explain how to build w/ Capstone Change-Id: Ifc72117838e402fc432521bd10284dd0e61ca6b4 --- doc/how-to-build.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/how-to-build.txt b/doc/how-to-build.txt index 92323213..dd5a9994 100644 --- a/doc/how-to-build.txt +++ b/doc/how-to-build.txt @@ -23,6 +23,16 @@ Required for FAIL*: "-D__NO_MATH_INLINES -D__STRICT_ANSI__" or "--c_compiler clang++" (the latter requires the clang++ compiler). - optional: + * the Capstone disassembler library, version 4.0 or newer + - Capstone is highly recommended over using LLVM, which provides + incomplete def/use information for many opcodes. + - Note that Debian's/Ubuntu's libcapstone-dev 4.0.1+really+3.0.5 does not + suffice. As of this writing, you need to build/install the Capstone + library yourself on these distributions. + - If the build system cannot automatically locate the Capstone library, + manually set CAPSTONE_INCLUDE_DIR and CAPSTONE_LIBRARY in the cmake + configuration. Consider using the static libcapstone.a library instead + of the .so variant. * LLVM 3.9, 4.0, 5.0, or 6.0 (needed for several importers in tools/import-trace): llvm-3.9-dev, llvm-4.0-dev, llvm-5.0-dev or llvm-6.0-dev