McSema is an executable lifter. It translates ("lifts") executable binaries from native machine code to LLVM bitcode. LLVM bitcode is an intermediate representation form of a program that was originally created for the retargetable LLVM compiler, but which is also very useful for performing program analysis methods that would not be possible to perform on an executable binary directly. McSema enables analysts to find and retroactively harden binary programs against security bugs, independently validate vendor source code, and generate application tests with high code coverage. McSema isn’t just for static analysis. The lifted LLVM bitcode can also be fuzzed with libFuzzer, an LLVM-based instrumented fuzzer that would otherwise require the target source code. The lifted bitcode can even be compiled back into a runnable program! This is a procedure known as static binary rewriting, binary translation, or binary recompilation.
x86 x86-64 aarch64 llvm llvm-ir llvm-bitcode ida binary-analysisThe aim of this project is to implement a decompilation pipeline composed of independent components interacting through well-defined interfaces, as further described in the design documents of the project. From a high-level perspective, the components of the decompilation pipeline are conceptually grouped into three modules. Firstly, the front-end translates a source language (e.g. x86 assembly) into LLVM IR; a platform-independent low-level intermediate representation. Secondly, the middle-end structures the LLVM IR by identifying high-level control flow primitives (e.g. pre-test loops, 2-way conditionals). Lastly, the back-end translates the structured LLVM IR into a high-level target programming language (e.g. Go).
llvm llvm-ir decompiler decompilation reverse-engineering decompilation-pipeline compositional-decompilation binary-analysisThe goal of this project is to give a complete executable semantics to the LLVM assembly language (LLVM IR). The language is being defined in the K Semantic Framework (version 2.6-2.7).
formal-semantics formal-methods llvm-ir llvm plt research k-frameworkRemill is a static binary translator that translates machine code instructions into LLVM bitcode. It translates x86 and amd64 machine code (including AVX and AVX512) into LLVM bitcode. AArch64 support is underway. Remill focuses on accurately lifting instructions. It is meant to be used as a library for other tools, e.g. McSema.
x86 x86-64 aarch64 llvm llvm-ir instruction-semanticsAn API for generating parser in LLVM IR. NOTE: clang 5.0.0 and later crashes on some of the generated output. The fixes were submitted to upstream. Please use -O0 if compilation is crashing/failing until these fixes are landed.
llvm-ir finite-state-machine llparse llvm ir dfaAn API for generating LLVM IR. This software is licensed under the MIT License.
llvm llvm-ir ir intermediate representationDg is a library which implements dependence graphs for programs. It contains a set of generic templates that can be specialized to user's needs. Dg can be used for different analyses, optimizations or program slicing (we currently use it for the last one in our tool called Symbiotic: https://github.com/staticafi/symbiotic). As a part of dg, you can find pointer analyses, reaching definitions analysis and a static slicer for LLVM. Whole project is under developement and lacks documentation for now, so in the case of need, contact us by an e-mail (below).
llvm-bitcode llvm-slicer dependence-graph static-analysis static-code-analysis reaching-definitions slicing dependency-graph program-analysis slice graph analysis llvm llvm-ir static-analyzer pointer-analysis points-to-analysis data-dependent control-dependent dependenciesKLLVM stands for Kotlin-LLVM. It is intended as a library to work with LLVM in Kotlin. Currently it supports the generation of IR code. The rationale is that there are currently no decent options to use LLVM from the JVM: while there is an autogenerated wrapper of the LLVM C++ API for Java it is unusable. For this reason the best option seems to generate the textual representation of IR code to later compile it to object file (or interpret it directly) using LLVM utilities.
kotlin llvm llvm-ir llvm-bindingsThis project aims to provide a relatively complete set of bindings for the LLVM API. If you find that anything is missing please open an issue! We generally try to stay close to the LLVM C++-API so you can consult the LLVM documentation and reuse existing resources. If you’ve worked with LLVM before, take a look at the examples in the llvm-hs-examples repo. If not, you can find a translation of the official LLVM tutorial at https://github.com/llvm-hs/llvm-hs-kaleidoscope. In general, we try to stay very close to the API and AST provided by LLVM itself, so the LLVM language reference is also very useful.
llvm llvm-hs haskell-bindings code-generation llvm-irA pretty printer for llvm-hs-pure. Goal is to be able to pretty print a sufficiently large subset of the LLVM AST from pure Haskell without having to go through the C++ API. There is a single function ppllvm that maps a LLVM.AST.Module to a Text.
llvm haskell-bindings llvm-hs llvm-ir pretty-printer code-generation llvm-astllvm-hs-quote is a quasiquoting-library for llvm-hs. It aims to support all language constructs of LLVM. llvm-hs-quote provides both quasiquotes and antiquotes. The following trivial example uses both a quasiquote and an antiquote.
llvm-ir llvm-hs code-generation quasiquoter llvmAn experimental branch of llvm-hs-pure AST that enforces the semantics of correct AST construction using the Haskell type system to prevent malformed ASTs.
llvm llvm-hs llvm-ir code-generation type-safetyP4LLVM is an LLVM based compiler for P4, a networking language. This project is built upon open-source P4 compiler called p4c. The LLVM IR emitter is a pass over p4c IR. We reuse the p4c front-end and translate p4c IR to LLVM IR.
llvm-ir p4lang p4cThis is the first step of my journey around LLVM compiler infrastructure. this simple C program is compiled to the following LLVM IR instructions.
llvm llvm-ir brainfuck brainfuck-compiler brainfuck-interpreterThis repository contains design documents related to the decompilation pipeline of decomp/decomp. Poster summarizing the current capabilities of the decompilation pipeline.
decompiler decompilation llvm-ir decompilation-pipeline control-flow-analysis type-analysis llvmA compiler for the µC programming language. The source code and any original content of this repository is hereby released into the public domain.
compiler llvm-irA LLVM backed Go compiler. tre is built in Go and can compile a subset of Go code to LLVM IR. Clang is used to compile the IR to an executable.
language llvm-irllvm-dbas is an LLVM Assembler adding Debug Information at IR Level. This version is based on LLVM 4.0. A version for LLVM 3.8 is available in a separate branch. When compiling LLVM IR code to machine code, there usually is afterwards no easy way to keep track of which native instructions resulted from which LLVM instruction.
llvm debug llvm-ir llvm-as assemblerLLAST provides multiple level representations of LLVM. Usually abstract syntax trees constructed by users in the form of algebraic data types are transformed to LLVM IR.
llvm llvm-bindings fsharp ast-representation llvm-irAn API for compiling an incremental parser into C output and/or LLVM bitcode. This software is licensed under the MIT License.
llvm-ir finite-state-machine llparse compiler bitcode
We have large collection of open source products. Follow the tags from
Tag Cloud >>
Open source products are scattered around the web. Please provide information
about the open source projects you own / you use.
Add Projects.