Releases: BinaryAnalysisPlatform/bap
Releases · BinaryAnalysisPlatform/bap
v0.9.4
v0.9.3
Introduction
This release is based on a feedback from our users
(including myself). The main goal of this release is to
increase the usability of BAP.
Major changes
Bitvector
(akaWord
, akaAddr
) now provides allInteger
interface without any monads right at the toplevel of the module.
In other words, now you can write:Word.(x + y)
.Bitvector.Int
is renamed toBitvector.Int_exn
so that it don't
clobber the realInt
module- All BIL is now consolidated in one module named
Bil
. This module
contains everything, including constructors for statements, expressions
casts, binary and unary operations. It also includes functional
constructors, that are now written by hand and, thus, don't suffer from
syntactic clashes with keywords. There're also a plenty of other
functions and new operators, available from the newBap_helpers
module, see later. Old modules, likeExpr
,Stmt
, etc are still
available, they implementRegular
interface for corresponding types. - New feature: visitor classes to traverse and transform the AST.
Writing a pattern matching code every time you need to traverse or map
the BIL AST is error prone and time-consuming. This visitors, do all the
traversing for you, allowing you to override default behavior. Some
handy algorithms, that use visitors are provided in an internal
Bap_helpers
module, that is included into resultingBil
module. Several optimizations were added tobap-objdump
utility, like
constant propogation, inlining, pruning unused variables and resolving
addresses to symbols. - Insn interface now provides predicates to query insn classes, this
predicates use BIL if available. - Disam interface now provides
linear_sweep
function.
Minor Changes
There're some bug fixes, the most important is fixing bitsub
.
Now it is renamed to extract
, as it can output words of greater
size, and it also handles signed extraction correctly.
The drastic disassemble_file
function now checks for errors.
v0.9.2
CFG Recovery and Simplified Interface
This is a major update, that brings:
1. Recursive descent disassembler
2. High-level simple to use interface to BAP
3. New utility `bap-objdump`
4. Enhanced pretty-printing
5. Lots of small fixes and new handy functions
6. Automatically generated documentation.
There're some breaking changes also, like:
1. `Bitvector` is no longer `Identifiable` (i.e., doesn't implement `Identifiable` interface)
2. `Memory.size` is renamed to `Memory.length`
3. Basic disassembler as well as its `Insn` is moved to `Disasm_expert` namespace