Skip to content
forked from revng/revng

The rev.ng main component: the static binary translator

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE.md
GPL-2.0
LICENSE.gpl
MIT
LICENSE.mit
Notifications You must be signed in to change notification settings

decomp-mirror/revamb

This branch is 212 commits ahead of, 1 commit behind revng/revng:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

94a99fe · Feb 19, 2019
Jan 18, 2019
Feb 12, 2019
Feb 12, 2019
Feb 12, 2019
Feb 11, 2019
Feb 19, 2019
Feb 11, 2019
Feb 11, 2019
Aug 18, 2018
Feb 18, 2019
Oct 3, 2018
Feb 11, 2019
Sep 20, 2016
Sep 20, 2016
Sep 20, 2016
Feb 11, 2019

Repository files navigation

Purpose

revng is a static binary translator. Given a input ELF binary for one of the supported architectures (currently MIPS, ARM and x86-64) it will analyze it and emit an equivalent LLVM IR. To do so, revng employs the QEMU intermediate representation (a series of TCG instructions) and then translates them to LLVM IR.

How to build

revng employs CMake as a build system. The build system will try to automatically detect the QEMU installation and the GCC toolchains require to build the test binaries.

If everything is in standard locations, you can just run:

mkdir build/
cd build/
cmake ..
make -j$(nproc)
make install

For further build options and more advanced configurations see docs/BuildSystem.rst (TODO: reference).

To run the test suite simply run:

make test

Example run

The simplest possible example consists in the following:

cd build
cat > hello.c <<EOF
#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello, world!\n");
}
EOF
armv7a-hardfloat-linux-uclibceabi-gcc -static hello.c -o hello.arm
./translate hello.arm
# ...
./hello.arm.translated
Hello, world!

About

The rev.ng main component: the static binary translator

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE.md
GPL-2.0
LICENSE.gpl
MIT
LICENSE.mit

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 89.1%
  • Python 4.6%
  • CMake 3.1%
  • C 1.8%
  • Assembly 1.2%
  • Shell 0.2%