Open source binary analysis tools.
Go to file
Iavor Diatchki 1ea6792f28 Add special treatment for "aligning" pointers.
We don't really do anything with alignment, but sometime asm code
ands pointers to align them.  For example `andq $(-64), %rsp`
aligns the pointer to a multiple of 64.

To support code like this we treat "and"-ing a pointer with a special
constant of the form 0xFFFF...FF000  (i.e., and alignment) as a subtracting
`0x0000...00XXX`  where the `XXX` is symbolic.

This looses some information (i.e., we don't know that the result is aligned).
However, it is good enough for checking memory safety, as it covers
all possible results of the alignment.
2018-03-16 13:35:58 -07:00
base Discovery: pretty instance for DiscoveryFunInfo now prints function address 2018-03-14 17:32:29 -07:00
scripts Remove script for building just these dependencies 2017-05-05 00:13:54 -07:00
symbolic Add special treatment for "aligning" pointers. 2018-03-16 13:35:58 -07:00
x86 Add implementation for vpsllq 2018-03-15 09:49:03 -07:00
x86_symbolic Haddock comments fixes, thanks to Brian 2018-03-09 09:51:55 -08:00
.gitignore Remove script for building just these dependencies 2017-05-05 00:13:54 -07:00
.gitmodules changed submodules to HTTPS origin to avoid authentication failure 2017-11-09 15:19:40 -08:00
.travis.yml Believe I am done with travis 2017-11-09 17:19:58 -08:00
LICENSE Add x86 specific code. 2017-09-27 15:54:43 -07:00
README.md Update READMEs. 2017-09-27 16:12:44 -07:00

This is the main repository for the Macaw binary analysis framework. This framework is implemented to offer extensible support for architectures.

The main algorithm implemented so far is a code discovery procedure which will discover reachable code in the binary given one or more entry points such as _start, or the current symbols.

The core libraries are:

  • macaw-base -- The core architecture-independent operations and algorithms.
  • macaw-symbolic -- A work-in-progress library that provides symbolic simulation of Macaw programs.
  • macaw-x86 -- Provides definitions enabling Macaw to be used on X86_64 programs.

The libraries that make up Macaw are released under the BSD license.