summaryrefslogtreecommitdiff
path: root/binaryninjaapi.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 /binaryninjaapi.h
parent05b8dae707da62437abf262fe8d1dd2b74a5f98f (diff)
Add APIs for accessing linear disassembly
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h61
1 files changed, 45 insertions, 16 deletions
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<Architecture> 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<InstructionTextToken> tokens;
+ };
+
+ struct LinearDisassemblyPosition
+ {
+ Ref<Function> function;
+ Ref<BasicBlock> block;
+ uint64_t address;
+ };
+
+ struct LinearDisassemblyLine
+ {
+ BNLinearDisassemblyLineType type;
+ Ref<Function> function;
+ Ref<BasicBlock> block;
+ size_t lineOffset;
+ DisassemblyTextLine contents;
+ };
+
+ class DisassemblySettings;
+
class AnalysisCompletionEvent: public CoreRefCountObject<BNAnalysisCompletionEvent,
BNNewAnalysisCompletionEventReference, BNFreeAnalysisCompletionEvent>
{
@@ -811,6 +846,16 @@ namespace BinaryNinja
Ref<AnalysisCompletionEvent> AddAnalysisCompletionEvent(const std::function<void()>& 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<LinearDisassemblyLine> GetPreviousLinearDisassemblyLines(LinearDisassemblyPosition& pos,
+ DisassemblySettings* settings);
+ std::vector<LinearDisassemblyLine> 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<InstructionTextToken> tokens;
- };
-
class Function;
struct BasicBlockEdge