summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <dontpanic@binaryninja.com>2015-03-20 01:21:01 -0400
committerRusty Wagner <dontpanic@binaryninja.com>2015-03-20 01:21:01 -0400
commitdde32cdf497fe54312eca476bc32e147671d3c0d (patch)
treef2eaa9006710c44348d0bf090a4ce14328e8f7ea /binaryninjaapi.h
parent7726825ec41005363115a69a5c4768d489c5cfec (diff)
Code cross references, undo for creation of functions
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index d7c2c091..26bf6759 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -338,6 +338,13 @@ namespace BinaryNinja
uint64_t GetAddress() const;
};
+ struct ReferenceSource
+ {
+ Ref<Function> func;
+ Ref<Architecture> arch;
+ uint64_t addr;
+ };
+
class BinaryView: public RefCountObject
{
protected:
@@ -352,6 +359,7 @@ namespace BinaryNinja
static size_t InsertCallback(void* ctxt, uint64_t offset, const void* src, size_t len);
static size_t RemoveCallback(void* ctxt, uint64_t offset, uint64_t len);
static BNModificationStatus GetModificationCallback(void* ctxt, uint64_t offset);
+ static bool IsValidOffsetCallback(void* ctxt, uint64_t offset);
static uint64_t GetStartCallback(void* ctxt);
static uint64_t GetLengthCallback(void* ctxt);
static uint64_t GetEntryPointCallback(void* ctxt);
@@ -364,6 +372,7 @@ namespace BinaryNinja
virtual size_t PerformRemove(uint64_t offset, uint64_t len) { (void)offset; (void)len; return 0; }
virtual BNModificationStatus PerformGetModification(uint64_t offset) { (void)offset; return Original; }
+ virtual bool PerformIsValidOffset(uint64_t offset);
virtual uint64_t PerformGetStart() const { return 0; }
virtual uint64_t PerformGetLength() const { return 0; }
virtual uint64_t PerformGetEntryPoint() const { return 0; }
@@ -423,6 +432,7 @@ namespace BinaryNinja
void AddFunctionForAnalysis(Architecture* arch, uint64_t addr);
void AddEntryPointForAnalysis(Architecture* arch, uint64_t start);
+ void RemoveAnalysisFunction(Function* func);
void UpdateAnalysis();
void AbortAnalysis();
@@ -435,6 +445,8 @@ namespace BinaryNinja
Ref<BasicBlock> GetRecentBasicBlockForAddress(uint64_t addr);
std::vector<Ref<BasicBlock>> GetBasicBlocksForAddress(uint64_t addr);
+ std::vector<ReferenceSource> GetCodeReferences(uint64_t addr);
+
Ref<Symbol> GetSymbolByAddress(uint64_t addr);
Ref<Symbol> GetSymbolByRawName(const std::string& name);
std::vector<Ref<Symbol>> GetSymbolsByName(const std::string& name);