ROSE  0.9.9.109
Namespaces | Classes | Typedefs | Functions
Rose::BinaryAnalysis Namespace Reference

Description

Binary analysis.

ROSE supports both source code analysis and binary analysis. This namespace contains most of the binary analysis features. The Binary analysis tutorial is a good place to get started, and most of its examples link to the API documentation. Follow those links to the enclosing class and/or namespace to obtain an overview of how those classes and namespaces work.

Namespaces

 CallingConvention
 Support for binary calling conventions.
 
 InstructionSemantics2
 Binary instruction semantics.
 
 Partitioner2
 Binary function detection.
 
 PointerDetection
 Pointer detection analysis.
 
 ReturnValueUsed
 Contains functions that analyze whether a function returns a value which is used by the caller.
 
 StackDelta
 Stack delta analysis.
 
 Strings
 Suport for finding strings in memory.
 
 SymbolicExpr
 Namespace supplying types and functions for symbolic expressions.
 
 Unparser
 Generates pseudo-assembly listings.
 

Classes

class  AbstractLocation
 Abstract location. More...
 
class  AsmFunctionIndex
 Functions indexed by entry address. More...
 
class  AsmUnparser
 Unparses binary AST into text. More...
 
class  BestMapAddress
 Finds best address for mapping code. More...
 
class  BinaryDebugger
 Simple debugger. More...
 
class  BinaryLoader
 Base class for loading a static or dynamic object. More...
 
class  BinaryLoaderElf
 
class  BinaryLoaderElfObj
 A loader suitable for ELF object files. More...
 
class  BinaryLoaderPe
 
class  BinaryToSource
 Convert binary to low-level C source code. More...
 
class  ControlFlow
 Binary control flow analysis. More...
 
class  DataFlow
 Various tools for data-flow analysis. More...
 
class  Demangler
 
class  Disassembler
 Virtual base class for instruction disassemblers. More...
 
class  DisassemblerArm
 Disassembler for the ARM architecture. More...
 
class  DisassemblerM68k
 Disassembler for Motorola M68k-based instruction set architectures. More...
 
class  DisassemblerMips
 
class  DisassemblerPowerpc
 Disassembler for the PowerPC architecture. More...
 
class  DisassemblerX86
 Disassembler for the x86 architecture. More...
 
class  Dominance
 
class  DwarfLineMapper
 Build mappings between source locations and virtual addresses. More...
 
class  FeasiblePath
 Feasible path analysis. More...
 
class  FunctionCall
 Binary function call analysis. More...
 
class  FunctionSimilarity
 Analysis to test the similarity of two functions. More...
 
struct  InsnCFGVertexWriter
 A vertex property writer for instruction-based CFGs. More...
 
class  InstructionProvider
 Provides and caches instructions. More...
 
class  MagicNumber
 
class  Matrix
 Matrix values. More...
 
class  MemoryMap
 An efficient mapping from an address space to stored data. More...
 
class  NoOperation
 Analysis that looks for no-op equivalents. More...
 
class  Reachability
 Analysis that computes reachability of CFG vertices. More...
 
class  RegisterParts
 Holds a set of registers without regard for register boundaries. More...
 
class  SMTSolver
 Interface to Satisfiability Modulo Theory (SMT) solvers. More...
 
class  SRecord
 Motorola S-Record. More...
 
struct  StackVariable
 A multi-byte variable that appears on the stack. More...
 
struct  StackVariableLocation
 Information about the location of a stack variable. More...
 
struct  StackVariableMeta
 Meta information for a stack variable. More...
 
class  SymbolicExprParser
 Parses symbolic expressions from text. More...
 
class  TaintedFlow
 Various tools for performing tainted flow analysis. More...
 
class  YicesSolver
 Interface to the Yices Satisfiability Modulo Theory (SMT) Solver. More...
 

Typedefs

typedef std::vector< StackVariableStackVariables
 Multiple stack variables. More...
 

Functions

std::ostream & operator<< (std::ostream &, const BinaryLoaderElf::VersionedSymbol &)
 
template<typename T >
alignUp (T address, T alignment)
 Align address downward to boundary. More...
 
template<typename T >
alignDown (T address, T alignment)
 Align address upward to boundary. More...
 
std::ostream & operator<< (std::ostream &, const AbstractLocation &)
 
template<class V , class E >
Sawyer::Container::Graph< V, E >::VertexValue get_ast_node (const Sawyer::Container::Graph< V, E > &cfg, size_t vertexId)
 Return the AST node associated with a vertex. More...
 
template<class V , class E , class AstNode >
void put_ast_node (Sawyer::Container::Graph< V, E > &cfg, size_t vertexId, AstNode *astNode)
 Set the AST node associated with a vertex. More...
 
template<class A , class B , class C , class D , class E , class F , class G >
boost::property_traits< typename boost::property_map< boost::adjacency_list< A, B, C, D, E, F, G >, boost::vertex_name_t >::type >::value_type get_ast_node (const boost::adjacency_list< A, B, C, D, E, F, G > &cfg, typename boost::graph_traits< boost::adjacency_list< A, B, C, D, E, F, G > >::vertex_descriptor vertex)
 
template<class A , class B , class C , class D , class E , class F , class G >
void put_ast_node (boost::adjacency_list< A, B, C, D, E, F, G > &cfg, typename boost::graph_traits< boost::adjacency_list< A, B, C, D, E, F, G > >::vertex_descriptor vertex, typename boost::property_traits< typename boost::property_map< boost::adjacency_list< A, B, C, D, E, F, G >, boost::vertex_name_t >::type >::value_type ast_node)
 
std::ostream & operator<< (std::ostream &, const FunctionSimilarity &)
 
std::ostream & operator<< (std::ostream &, const SymbolicExprParser::SyntaxError &)
 
std::ostream & operator<< (std::ostream &out, const TaintedFlow::State &state)
 
std::ostream & operator<< (std::ostream &, const DwarfLineMapper::SrcInfo &)
 
std::ostream & operator<< (std::ostream &, const DwarfLineMapper &)
 

Typedef Documentation

Multiple stack variables.

Definition at line 88 of file BinaryStackVariable.h.

Function Documentation

template<typename T >
T Rose::BinaryAnalysis::alignUp ( address,
alignment 
)

Align address downward to boundary.

Returns the largest multiple of alignment which is less than or equal to address.

Definition at line 26 of file MemoryMap.h.

template<typename T >
T Rose::BinaryAnalysis::alignDown ( address,
alignment 
)

Align address upward to boundary.

Returns the smallest multiple of alignment which is greater than or equal to address. Returns zero if no such value can be returned due to overflow.

Definition at line 35 of file MemoryMap.h.

template<class V , class E >
Sawyer::Container::Graph<V, E>::VertexValue Rose::BinaryAnalysis::get_ast_node ( const Sawyer::Container::Graph< V, E > &  cfg,
size_t  vertexId 
)
template<class V , class E , class AstNode >
void Rose::BinaryAnalysis::put_ast_node ( Sawyer::Container::Graph< V, E > &  cfg,
size_t  vertexId,
AstNode *  astNode 
)