ROSE  0.11.65.0
Public Attributes | List of all members
Rose::BinaryAnalysis::Partitioner2::PartitionerSettings Struct Reference

Description

Settings that control the engine partitioning.

These switches are used by the engine to control how it partitions addresses into instructions and static data, instructions into basic blocks, and basic blocks and static data into functions. Some of these settings are copied into a Partitioner object while others affect the Engine directly.

The runtime descriptions and command-line parser for these switches can be obtained from partitionerSwitches.

Definition at line 377 of file Partitioner2/BasicTypes.h.

#include <BasicTypes.h>

Collaboration diagram for Rose::BinaryAnalysis::Partitioner2::PartitionerSettings:
Collaboration graph
[legend]

Public Attributes

BasePartitionerSettings base
 
std::vector< rose_addr_t > functionStartingVas
 Addresses at which to start recursive disassembly. More...
 
bool followingGhostEdges
 Should ghost edges be followed during disassembly? A ghost edge is a CFG edge that is apparent from the instruction but which is not taken according to semantics. More...
 
bool discontiguousBlocks
 Should basic blocks be allowed to be discontiguous. More...
 
size_t maxBasicBlockSize
 Maximum basic block size. More...
 
std::vector< rose_addr_t > ipRewrites
 Pairs of addresses for rewriting CFG edges. More...
 
bool findingFunctionPadding
 Look for padding before each function entry point?
 
bool findingDeadCode
 Look for unreachable basic blocks?
 
rose_addr_t peScramblerDispatcherVa
 Run the PeDescrambler module if non-zero. More...
 
size_t findingIntraFunctionCode
 Suck up unused addresses as intra-function code (number of passes). More...
 
bool findingIntraFunctionData
 Suck up unused addresses as intra-function data. More...
 
bool findingInterFunctionCalls
 Look for function calls between functions. More...
 
bool findingFunctionCallFunctions
 Create functions from function calls. More...
 
bool findingEntryFunctions
 Create functions at the program entry point(s). More...
 
bool findingErrorFunctions
 Create functions from error handling and exception information. More...
 
bool findingImportFunctions
 Create functions at import addresses. More...
 
bool findingExportFunctions
 Create functions at export addresses. More...
 
bool findingSymbolFunctions
 Create functions according to symbol tables. More...
 
AddressInterval interruptVector
 Table of interrupt handling functions. More...
 
bool doingPostAnalysis
 Perform enabled post-partitioning analyses?
 
bool doingPostFunctionMayReturn
 Run function-may-return analysis if doingPostAnalysis is set?
 
bool doingPostFunctionStackDelta
 Run function-stack-delta analysis if doingPostAnalysis is set?
 
bool doingPostCallingConvention
 Run calling-convention analysis if doingPostAnalysis is set?
 
bool doingPostFunctionNoop
 Find and name functions that are effectively no-ops. More...
 
FunctionReturnAnalysis functionReturnAnalysis
 How to run the function may-return analysis. More...
 
size_t functionReturnAnalysisMaxSorts
 Number of times functions are sorted before using unsorted lists. More...
 
bool findingDataFunctionPointers
 Look for function pointers in static data. More...
 
bool findingCodeFunctionPointers
 Look for function pointers in instructions. More...
 
bool findingThunks
 Look for common thunk patterns in undiscovered areas. More...
 
bool splittingThunks
 Split thunks into their own separate functions. More...
 
SemanticMemoryParadigm semanticMemoryParadigm
 Container used for semantic memory states. More...
 
bool namingConstants
 Give names to constants by calling Modules::nameConstants. More...
 
AddressInterval namingStrings
 Addresses that might be string literals for commenting integers. More...
 
bool namingSyscalls
 Give names (comments) to system calls if possible. More...
 
boost::filesystem::path syscallHeader
 Name of header file containing system call numbers. More...
 
bool demangleNames
 Run all names through a demangling step. More...
 

Member Data Documentation

std::vector<rose_addr_t> Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::functionStartingVas

Addresses at which to start recursive disassembly.

These addresses are in addition to entry addresses, addresses from symbols, addresses from configuration files, etc.

Definition at line 379 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::followingGhostEdges

Should ghost edges be followed during disassembly? A ghost edge is a CFG edge that is apparent from the instruction but which is not taken according to semantics.

For instance, a branch instruction might have two outgoing CFG edges apparent by looking at the instruction syntax, but a semantic analysis might determine that only one of those edges can ever be taken. Thus, the branch has an opaque predicate with one actual edge and one ghost edge.

Definition at line 382 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::discontiguousBlocks

Should basic blocks be allowed to be discontiguous.

If set, then the instructions of a basic block do not need to follow one after the other in memory–the block can have internal unconditional branches.

Definition at line 389 of file Partitioner2/BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::maxBasicBlockSize

Maximum basic block size.

Number of instructions. 0 => no limit.

Definition at line 393 of file Partitioner2/BasicTypes.h.

std::vector<rose_addr_t> Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::ipRewrites

Pairs of addresses for rewriting CFG edges.

Definition at line 394 of file Partitioner2/BasicTypes.h.

rose_addr_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::peScramblerDispatcherVa

Run the PeDescrambler module if non-zero.

Definition at line 397 of file Partitioner2/BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingIntraFunctionCode

Suck up unused addresses as intra-function code (number of passes).

Definition at line 398 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingIntraFunctionData

Suck up unused addresses as intra-function data.

Definition at line 399 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingInterFunctionCalls

Look for function calls between functions.

Definition at line 400 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingFunctionCallFunctions

Create functions from function calls.

Definition at line 401 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingEntryFunctions

Create functions at the program entry point(s).

Definition at line 402 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingErrorFunctions

Create functions from error handling and exception information.

Definition at line 403 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingImportFunctions

Create functions at import addresses.

Definition at line 404 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingExportFunctions

Create functions at export addresses.

Definition at line 405 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingSymbolFunctions

Create functions according to symbol tables.

Definition at line 406 of file Partitioner2/BasicTypes.h.

AddressInterval Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::interruptVector

Table of interrupt handling functions.

Definition at line 407 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::doingPostFunctionNoop

Find and name functions that are effectively no-ops.

Definition at line 412 of file Partitioner2/BasicTypes.h.

FunctionReturnAnalysis Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::functionReturnAnalysis

How to run the function may-return analysis.

Definition at line 413 of file Partitioner2/BasicTypes.h.

size_t Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::functionReturnAnalysisMaxSorts

Number of times functions are sorted before using unsorted lists.

Definition at line 414 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingDataFunctionPointers

Look for function pointers in static data.

Definition at line 415 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingCodeFunctionPointers

Look for function pointers in instructions.

Definition at line 416 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::findingThunks

Look for common thunk patterns in undiscovered areas.

Definition at line 417 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::splittingThunks

Split thunks into their own separate functions.

Definition at line 418 of file Partitioner2/BasicTypes.h.

SemanticMemoryParadigm Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::semanticMemoryParadigm

Container used for semantic memory states.

Definition at line 419 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingConstants

Give names to constants by calling Modules::nameConstants.

Definition at line 420 of file Partitioner2/BasicTypes.h.

AddressInterval Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingStrings

Addresses that might be string literals for commenting integers.

Definition at line 421 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::namingSyscalls

Give names (comments) to system calls if possible.

Definition at line 422 of file Partitioner2/BasicTypes.h.

boost::filesystem::path Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::syscallHeader

Name of header file containing system call numbers.

Definition at line 423 of file Partitioner2/BasicTypes.h.

bool Rose::BinaryAnalysis::Partitioner2::PartitionerSettings::demangleNames

Run all names through a demangling step.

Definition at line 424 of file Partitioner2/BasicTypes.h.


The documentation for this struct was generated from the following file: