summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Tong <v35stong@users.noreply.github.com>2019-05-23 16:51:03 -0400
committerStephen Tong <v35stong@users.noreply.github.com>2019-05-28 13:17:54 -0400
commit46ea950b5d147e14348806ab8ce6b0265efee06f (patch)
tree6246e4753beda08f4d3cb5abb950a68ac37de71c
parent131952a79f4efebd71117376310f2a8726e118b0 (diff)
WIP: Support adding user-defined xrefs
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryninjacore.h2
-rw-r--r--function.cpp5
-rw-r--r--python/function.py3
4 files changed, 12 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index e9277d65..1d22652d 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -2588,6 +2588,8 @@ namespace BinaryNinja
void SetComment(const std::string& comment);
void SetCommentForAddress(uint64_t addr, const std::string& comment);
+ void SetUserXref(uint64_t addr, uint64_t target);
+
Ref<LowLevelILFunction> GetLowLevelIL() const;
size_t GetLowLevelILForInstruction(Architecture* arch, uint64_t addr);
std::vector<size_t> GetLowLevelILExitsForInstruction(Architecture* arch, uint64_t addr);
diff --git a/binaryninjacore.h b/binaryninjacore.h
index cc707770..c1397596 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -2528,6 +2528,8 @@ extern "C"
BINARYNINJACOREAPI void BNSetFunctionComment(BNFunction* func, const char* comment);
BINARYNINJACOREAPI void BNSetCommentForAddress(BNFunction* func, uint64_t addr, const char* comment);
+ BINARYNINJACOREAPI void BNSetUserXref(BNFunction* func, uint64_t addr, uint64_t target);
+
BINARYNINJACOREAPI BNBasicBlock* BNNewBasicBlockReference(BNBasicBlock* block);
BINARYNINJACOREAPI void BNFreeBasicBlock(BNBasicBlock* block);
BINARYNINJACOREAPI BNBasicBlock** BNGetFunctionBasicBlockList(BNFunction* func, size_t* count);
diff --git a/function.cpp b/function.cpp
index 5b65be00..7ef0926c 100644
--- a/function.cpp
+++ b/function.cpp
@@ -245,6 +245,11 @@ void Function::SetCommentForAddress(uint64_t addr, const string& comment)
BNSetCommentForAddress(m_object, addr, comment.c_str());
}
+void Function::SetUserXref(uint64_t addr, uint64_t target)
+{
+ BNSetUserXref(m_object, addr, target);
+}
+
Ref<LowLevelILFunction> Function::GetLowLevelIL() const
{
diff --git a/python/function.py b/python/function.py
index 9d70d5be..1aea500d 100644
--- a/python/function.py
+++ b/python/function.py
@@ -1293,6 +1293,9 @@ class Function(object):
"""
core.BNSetCommentForAddress(self.handle, addr, comment)
+ def set_user_xref(self, addr, target):
+ core.BNSetUserXref(self.handle, addr, target)
+
def get_low_level_il_at(self, addr, arch=None):
"""
``get_low_level_il_at`` gets the LowLevelILInstruction corresponding to the given virtual address