From 7853b6eea8c80b537e2fa199a19dde0f68845449 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Sun, 10 Jul 2016 02:41:25 -0400 Subject: Add APIs for accessing linear disassembly --- binaryninjacore.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index 805ff090..9784b4ab 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -169,6 +169,16 @@ extern "C" AddressDisplayToken = 68 }; + enum BNLinearDisassemblyLineType + { + CodeDisassemblyLineType, + DataVariableLineType, + HexDumpLineType, + FunctionHeaderLineType, + FunctionContinuationLineType, + StackVariableLineType + }; + enum BNSymbolType { FunctionSymbol = 0, @@ -299,6 +309,9 @@ extern "C" { ShowAddress = 0, + // Linear disassembly options + GroupLinearDisassemblyFunctions = 64, + // Debugging options ShowBasicBlockRegisterState = 128, ShowFlagUsage = 129 @@ -580,6 +593,22 @@ extern "C" size_t count; }; + struct BNLinearDisassemblyLine + { + BNLinearDisassemblyLineType type; + BNFunction* function; + BNBasicBlock* block; + size_t lineOffset; + BNDisassemblyTextLine contents; + }; + + struct BNLinearDisassemblyPosition + { + BNFunction* function; + BNBasicBlock* block; + uint64_t address; + }; + struct BNReferenceSource { BNFunction* func; @@ -1231,6 +1260,19 @@ extern "C" BINARYNINJACOREAPI BNAnalysisProgress BNGetAnalysisProgress(BNBinaryView* view); + BINARYNINJACOREAPI uint64_t BNGetNextFunctionStartAfterAddress(BNBinaryView* view, uint64_t addr); + BINARYNINJACOREAPI uint64_t BNGetNextBasicBlockStartAfterAddress(BNBinaryView* view, uint64_t addr); + BINARYNINJACOREAPI uint64_t BNGetNextDataAfterAddress(BNBinaryView* view, uint64_t addr); + + BINARYNINJACOREAPI BNLinearDisassemblyPosition BNGetLinearDisassemblyPositionForAddress(BNBinaryView* view, + uint64_t addr); + BINARYNINJACOREAPI void BNFreeLinearDisassemblyPosition(BNLinearDisassemblyPosition* pos); + BINARYNINJACOREAPI BNLinearDisassemblyLine* BNGetPreviousLinearDisassemblyLines(BNBinaryView* view, + BNLinearDisassemblyPosition* pos, BNDisassemblySettings* settings, size_t* count); + BINARYNINJACOREAPI BNLinearDisassemblyLine* BNGetNextLinearDisassemblyLines(BNBinaryView* view, + BNLinearDisassemblyPosition* pos, BNDisassemblySettings* settings, size_t* count); + BINARYNINJACOREAPI void BNFreeLinearDisassemblyLines(BNLinearDisassemblyLine* lines, size_t count); + // Disassembly settings BINARYNINJACOREAPI BNDisassemblySettings* BNCreateDisassemblySettings(void); BINARYNINJACOREAPI BNDisassemblySettings* BNNewDisassemblySettingsReference(BNDisassemblySettings* settings); -- cgit v1.3.1