Skip to content
A collection of extensions to angr to handle new platforms
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
angr_platforms kosher arch creation (#28) Jul 15, 2019
test_programs Add cybertronix64k Feb 26, 2018
tests less restrictive (more correct) test assertions Jun 25, 2019
tutorial Migrate to Python 3 (#21) Oct 1, 2018
.gitignore Ignore Jan 26, 2017
.travis.yml upgrade CI to xenial Sep 12, 2018
LICENSE Initial commit Mar 23, 2017 pyvex.lift -> pyvex.lifting Mar 20, 2018 Add msp430 testcases. Sep 20, 2017

The angr Platforms collection

This is a collection of extensions to angr to handle new platforms!

Here you can find the following:

  • BrainFuck support (yes, really) (by @subwire) Includes a arch description, loader, VEX lifter, native symexec engine, SimOS

  • TI MSP430 Support (by @subwire and @nilocunger) Arch, VEX lifter, SimOS; Uses ELF or Blob to load binaries

  • Berkeley Packet Filter (BPF) (by @ltfish)

  • CyberTronix64k support (by @rhelmot) Demonstrates how to support arches with odd byte-widths (16-bits), and uses memory-mapped registers and mmio.

  • [WIP] Atmel AVR support (by @subwire, and maybe you!) WIP branch at

  • [WIP] Hitachi SH4 support (by @pwnslinger)

The core idea here is that angr and its components are extensible through registration -- a method, such as pyvex.lifting.register() can be used to include your out-of-tree code into angr's automatic consideration. Through these mechanisms, you can write new architectural descriptions, laoders for new binary formats, lifters for new instruction sets, new simulated execution environments (SimOSes). You can even create entirely new execution engines that operate on instructions other than the VEX IR.

A set of tutorials, providing a walkthrough of these components, how they interact, and how to write them, can be found here:

You can’t perform that action at this time.