Метод | Описание | |
---|---|---|
AddBlock ( Address addr, Procedure proc, string blockName ) : Reko.Core.Block |
Adds a new basic block to the procedure proc.
|
|
CreateBlockWorkItem ( Address addrStart, Procedure proc, |
Creates a work item which will process code starting at the address addrStart. The resulting block will belong to the procedure proc.
|
|
CreateCallRetThunk ( Address addrFrom, Procedure procOld, Procedure procNew ) : Reko.Core.Block |
Creates a small basic block, consisting solely of a 'call' followed by a 'return' instruction.
|
|
CreatePromoteWorkItem ( Address addrStart, Reko.Core.Block block, Procedure procNew ) : Reko.Scanning.PromoteBlockWorkItem | ||
CreateReader ( Address addr ) : Reko.Core.ImageReader | ||
EnqueueImageSymbol ( Reko.Core.ImageSymbol sym, bool isEntryPoint ) : void | ||
EnqueueJumpTarget ( Address addrSrc, Address addrDest, Procedure proc, |
||
EnqueueProcedure ( Address addr ) : void | ||
EnqueueUserGlobalData ( Address addr, DataType dt ) : void | ||
EnqueueUserProcedure ( Address addr, FunctionType sig ) : void | ||
EnqueueUserProcedure ( |
||
EnsurePseudoProcedure ( string name, DataType returnType, int arity ) : |
||
Error ( Address addr, string message ) : void | ||
FindContainingBlock ( Address address ) : Reko.Core.Block | ||
FindExactBlock ( Address address ) : Reko.Core.Block | ||
GetCallSignatureAtAddress ( Address addrCallInstruction ) : FunctionType | ||
GetImportedGlobal ( Address addrImportThunk, Address addrInstruction ) : Identifier | ||
GetImportedProcedure ( Address addrImportThunk, Address addrInstruction ) : Reko.Core.ExternalProcedure |
If addrImportThunk is the known address of an import thunk / trampoline, return the imported function as an ExternaProcedure. Otherwise, check to see if the call is an intercepted call.
|
|
GetInterceptedCall ( Address addrImportThunk ) : Reko.Core.ExternalProcedure |
This method is used to detect if a trampoline (call [foo] where foo: jmp bar) is jumping into the body of a procedure that was loaded with GetProcAddress or the like.
|
|
GetTrace ( Address addrStart, |
||
GetTrampoline ( Address addr ) : Reko.Core.ProcedureBase |
Tries to determine if the instruction at addr is a trampoline instruction. If so, we return a call to the imported function directly. procedure. A trampoline is a procedure whose only contents is an indirect JUMP to a location that contains the address of an imported function. Because these trampolines may take on different appearances depending on the processor architecture, we have to call out to the architecture to assist in matching them. |
|
InjectProcedureEntryInstructions ( Address addr, Procedure proc ) : void |
Inject statements into the starting block that establish the frame, and if the procedure has been given a valid signature already, copy the input arguments into their local counterparts.
|
|
IsBlockLinearProcedureExit ( Reko.Core.Block block ) : bool | ||
IsLinearReturning ( Reko.Core.Block block ) : bool |
Determines whether a block is a linear sequence of assignments followed by a return statement.
|
|
PseudoProcedure ( string name, DataType returnType ) : Expression | ||
PseudoProcedure ( string name, ProcedureCharacteristics c, DataType returnType ) : Expression | ||
ScanImage ( ) : void |
Performs the work of scanning the image and resolving any cross procedure jumps after the scan is done.
|
|
ScanImageHeuristically ( ) : void |
Uses the HeuristicScanner to try to located code heuristically.
|
|
ScanImageSymbol ( Program program, ImageSymbol sym, bool isEntryPoint ) : void | ||
ScanProcedure ( Address addr, string procedureName, ProcessorState state ) : ProcedureBase |
Performs a scan of the blocks that constitute a procedure named procedureName
|
|
Scanner ( Program program, IImportResolver importResolver, IServiceProvider services ) : Reko.Analysis | ||
SetAssumedRegisterValues ( Address addr, ProcessorState st ) : void | ||
SetProcedureReturnAddressBytes ( Procedure proc, int returnAddressBytes, Address address ) : void | ||
SplitBlock ( Block blockToSplit, Address addr ) : Block |
Splits the given block at the specified address, yielding two blocks. The first block is the original block, now truncated, with a single out edge to the new block. The second block receives the out edges of the first block.
|
|
TerminateBlock ( Block block, Address addr ) : void |
Terminates the block at
|
|
Warn ( Address addr, string message ) : void |
Метод | Описание | |
---|---|---|
CloneBlockIntoOtherProcedure ( Reko.Core.Block block, Procedure proc ) : Reko.Core.Block | ||
Dump ( string title, IEnumerable |
||
EnsureProcedure ( Address addr, string procedureName ) : Procedure | ||
EstablishInitialState ( Address addr, |
Before processing the body of a procedure, perform housekeeping tasks.
|
|
IsNoDecompiledProcedure ( Address addr ) : bool | ||
ProcessQueue ( ) : void | ||
TerminateAnyBlockAt ( Address addr ) : void | ||
TryGetNoDecompiledParsedProcedure ( Address addr, Procedure_v1 &parsedProc ) : bool | ||
TryGetNoDecompiledProcedure ( Address addr, ExternalProcedure &ep ) : bool | ||
TryGetNoDecompiledProcedure ( Address addr, Procedure_v1 &sProc ) : bool |
public AddBlock ( Address addr, Procedure proc, string blockName ) : Reko.Core.Block | ||
addr | Address | |
proc | Procedure | |
blockName | string | |
Результат | Reko.Core.Block |
public CreateBlockWorkItem ( Address addrStart, Procedure proc, |
||
addrStart | Address | |
proc | Procedure | |
stateOnEntry | ||
Результат | BlockWorkitem |
public CreateCallRetThunk ( Address addrFrom, Procedure procOld, Procedure procNew ) : Reko.Core.Block | ||
addrFrom | Address | |
procOld | Procedure | |
procNew | Procedure | |
Результат | Reko.Core.Block |
public CreatePromoteWorkItem ( Address addrStart, Reko.Core.Block block, Procedure procNew ) : Reko.Scanning.PromoteBlockWorkItem | ||
addrStart | Address | |
block | Reko.Core.Block | |
procNew | Procedure | |
Результат | Reko.Scanning.PromoteBlockWorkItem |
public CreateReader ( Address addr ) : Reko.Core.ImageReader | ||
addr | Address | |
Результат | Reko.Core.ImageReader |
public EnqueueImageSymbol ( Reko.Core.ImageSymbol sym, bool isEntryPoint ) : void | ||
sym | Reko.Core.ImageSymbol | |
isEntryPoint | bool | |
Результат | void |
public EnqueueJumpTarget ( Address addrSrc, Address addrDest, Procedure proc, |
||
addrSrc | Address | |
addrDest | Address | |
proc | Procedure | |
state | ||
Результат | Reko.Core.Block |
public EnqueueProcedure ( Address addr ) : void | ||
addr | Address | |
Результат | void |
public EnqueueUserGlobalData ( Address addr, DataType dt ) : void | ||
addr | Address | |
dt | DataType | |
Результат | void |
public EnqueueUserProcedure ( Address addr, FunctionType sig ) : void | ||
addr | Address | |
sig | FunctionType | |
Результат | void |
public EnqueueUserProcedure ( |
||
sp | ||
Результат | void |
public EnsurePseudoProcedure ( string name, DataType returnType, int arity ) : |
||
name | string | |
returnType | DataType | |
arity | int | |
Результат |
public Error ( Address addr, string message ) : void | ||
addr | Address | |
message | string | |
Результат | void |
public FindContainingBlock ( Address address ) : Reko.Core.Block | ||
address | Address | |
Результат | Reko.Core.Block |
public FindExactBlock ( Address address ) : Reko.Core.Block | ||
address | Address | |
Результат | Reko.Core.Block |
public GetCallSignatureAtAddress ( Address addrCallInstruction ) : FunctionType | ||
addrCallInstruction | Address | |
Результат | FunctionType |
public GetImportedGlobal ( Address addrImportThunk, Address addrInstruction ) : Identifier | ||
addrImportThunk | Address | |
addrInstruction | Address | |
Результат | Identifier |
public GetImportedProcedure ( Address addrImportThunk, Address addrInstruction ) : Reko.Core.ExternalProcedure | ||
addrImportThunk | Address | |
addrInstruction | Address | Used to display diagnostics. |
Результат | Reko.Core.ExternalProcedure |
public GetInterceptedCall ( Address addrImportThunk ) : Reko.Core.ExternalProcedure | ||
addrImportThunk | Address | |
Результат | Reko.Core.ExternalProcedure |
public GetTrace ( Address addrStart, |
||
addrStart | Address | |
state | ||
frame | ||
Результат | IEnumerable |
public GetTrampoline ( Address addr ) : Reko.Core.ProcedureBase | ||
addr | Address | |
Результат | Reko.Core.ProcedureBase |
public InjectProcedureEntryInstructions ( Address addr, Procedure proc ) : void | ||
addr | Address | |
proc | Procedure | |
Результат | void |
public IsBlockLinearProcedureExit ( Reko.Core.Block block ) : bool | ||
block | Reko.Core.Block | |
Результат | bool |
public IsLinearReturning ( Reko.Core.Block block ) : bool | ||
block | Reko.Core.Block | |
Результат | bool |
public PseudoProcedure ( string name, DataType returnType ) : Expression | ||
name | string | |
returnType | DataType | |
Результат | Expression |
public PseudoProcedure ( string name, ProcedureCharacteristics c, DataType returnType ) : Expression | ||
name | string | |
c | ProcedureCharacteristics | |
returnType | DataType | |
Результат | Expression |
public ScanImageSymbol ( Program program, ImageSymbol sym, bool isEntryPoint ) : void | ||
program | Program | |
sym | ImageSymbol | |
isEntryPoint | bool | |
Результат | void |
public ScanProcedure ( Address addr, string procedureName, ProcessorState state ) : ProcedureBase | ||
addr | Address | Address of the code from which we will start scanning. |
procedureName | string | |
state | ProcessorState | |
Результат | ProcedureBase |
public Scanner ( Program program, IImportResolver importResolver, IServiceProvider services ) : Reko.Analysis | ||
program | Program | |
importResolver | IImportResolver | |
services | IServiceProvider | |
Результат | Reko.Analysis |
public SetAssumedRegisterValues ( Address addr, ProcessorState st ) : void | ||
addr | Address | |
st | ProcessorState | |
Результат | void |
public SetProcedureReturnAddressBytes ( Procedure proc, int returnAddressBytes, Address address ) : void | ||
proc | Procedure | |
returnAddressBytes | int | |
address | Address | |
Результат | void |
public SplitBlock ( Block blockToSplit, Address addr ) : Block | ||
blockToSplit | Block | |
addr | Address | |
Результат | Block |
public TerminateBlock ( Block block, Address addr ) : void | ||
block | Block | |
addr | Address | |
Результат | void |
public Warn ( Address addr, string message ) : void | ||
addr | Address | |
message | string | |
Результат | void |