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 --- binaryninjaapi.h | 61 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 16 deletions(-) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 9e8f516c..47490857 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -612,6 +612,41 @@ namespace BinaryNinja Ref arch; uint64_t addr; }; + + struct InstructionTextToken + { + BNInstructionTextTokenType type; + std::string text; + uint64_t value; + + InstructionTextToken(); + InstructionTextToken(BNInstructionTextTokenType type, const std::string& text, uint64_t value = 0); + }; + + struct DisassemblyTextLine + { + uint64_t addr; + std::vector tokens; + }; + + struct LinearDisassemblyPosition + { + Ref function; + Ref block; + uint64_t address; + }; + + struct LinearDisassemblyLine + { + BNLinearDisassemblyLineType type; + Ref function; + Ref block; + size_t lineOffset; + DisassemblyTextLine contents; + }; + + class DisassemblySettings; + class AnalysisCompletionEvent: public CoreRefCountObject { @@ -811,6 +846,16 @@ namespace BinaryNinja Ref AddAnalysisCompletionEvent(const std::function& callback); BNAnalysisProgress GetAnalysisProgress(); + + uint64_t GetNextFunctionStartAfterAddress(uint64_t addr); + uint64_t GetNextBasicBlockStartAfterAddress(uint64_t addr); + uint64_t GetNextDataAfterAddress(uint64_t addr); + + LinearDisassemblyPosition GetLinearDisassemblyPositionForAddress(uint64_t addr); + std::vector GetPreviousLinearDisassemblyLines(LinearDisassemblyPosition& pos, + DisassemblySettings* settings); + std::vector GetNextLinearDisassemblyLines(LinearDisassemblyPosition& pos, + DisassemblySettings* settings); }; class BinaryData: public BinaryView @@ -1035,16 +1080,6 @@ namespace BinaryNinja void AddBranch(BNBranchType type, uint64_t target = 0, Architecture* arch = nullptr, bool hasDelaySlot = false); }; - struct InstructionTextToken - { - BNInstructionTextTokenType type; - std::string text; - uint64_t value; - - InstructionTextToken(); - InstructionTextToken(BNInstructionTextTokenType type, const std::string& text, uint64_t value = 0); - }; - class LowLevelILFunction; class FunctionRecognizer; class CallingConvention; @@ -1396,12 +1431,6 @@ namespace BinaryNinja void SetMaximumSymbolWidth(size_t width); }; - struct DisassemblyTextLine - { - uint64_t addr; - std::vector tokens; - }; - class Function; struct BasicBlockEdge -- cgit v1.3.1