summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-07-10 02:41:25 -0400
committerRusty Wagner <rusty@vector35.com>2016-07-10 02:41:25 -0400
commit7853b6eea8c80b537e2fa199a19dde0f68845449 (patch)
treea2f9dfaad82faf2ba77df029493041fbf7707c66 /binaryninjacore.h
parent05b8dae707da62437abf262fe8d1dd2b74a5f98f (diff)
Add APIs for accessing linear disassembly
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h42
1 files changed, 42 insertions, 0 deletions
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);