Displaying 1 to 3 from 3 results

Triton - Triton is a Dynamic Binary Analysis (DBA) framework

  •    C++

Triton is a dynamic binary analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a Taint engine, AST representations of the x86 and the x86-64 instructions set semantics, SMT simplification passes, an SMT Solver Interface and, the last but not least, Python bindings. Based on these components, you are able to build program analysis tools, automate reverse engineering and perform software verification. As Triton is still a young project, please, don't blame us if it is not yet reliable. Open issues or pull requests are always better than troll =).

microx - Safely execute an arbitrary x86 instruction

  •    C++

Microx is a single-instruction "micro execution" framework. Microx enables a program to safely execute an arbitrary x86 or x86-64 instruction. Microx does not take over or require a process context in order to execute an instruction. It is easily embedded within other programs, as exampled by the Python bindings. The microx approach to safe instruction execution of arbitrary instructions is to require the user of microx to manage machine state. Microx is packaged as a C++ Executor class that must be extended. The Python bindings also present a class, microx.Executor, that must be extended. A program extending this class must implement methods such as ReadReg and ReadMem. When supplied with instruction bytes, microx will invoke the class methods in order to pull in the minimal requisite machine state to execute the instruction. After executing the instruction, microx will "report back" the state changes induced by the instruction's execution, again via methods like WriteReg and WriteMem.

bin2llvm - A binary to LLVM translator

  •    C++

This is an S2E based binary-to-LLVM translator. It converts any binary code to LLVM code. The resulting LLVM module contains functions. Some, control flow details are recovered. The idea is to reuse components from S2E to achieve the translation to LLVM. Rougly, qemu translates from binary to TCG and S2E translates from TCG to LLVM. Plugins were added to perform the recursive disassembly of the binary. The raw LLVM code is then fed to a set of external LLVM passes. The purpose of these step is to add more details about the extracted code, concretely, basic blocks are grouped in functions. It is mainly tested on the ARM architecture. bin2llvm is a best effort tool, it will try to translate as much as possible and then link the LLVM code in a final file.