summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2021-02-05 20:28:13 +0800
committerXusheng <xusheng@vector35.com>2021-04-22 10:52:39 +0800
commitc4b1dd712783e7474570705e6d95183a0c02a76e (patch)
tree0393986e0078cb20610c8ad091db061f8f41a08b /binaryninjacore.h
parenta355d5c9aa1978d10f378931bfd5f06be60bae98 (diff)
add persistent search result
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h79
1 files changed, 66 insertions, 13 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 8318d8e8..9dd5e40e 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -28,14 +28,14 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 6
+#define BN_CURRENT_CORE_ABI_VERSION 7
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
// will require rebuilding. The minimum version is increased when there are
// incompatible changes that break binary compatibility, such as changes to
// existing types or functions.
-#define BN_MINIMUM_CORE_ABI_VERSION 5
+#define BN_MINIMUM_CORE_ABI_VERSION 6
#ifdef __GNUC__
# ifdef BINARYNINJACORE_LIBRARY
@@ -2176,6 +2176,22 @@ extern "C"
FindCaseInsensitive = 1
};
+ enum BNFindRangeType
+ {
+ AllRangeType,
+ CustomRangeType,
+ CurrentFunctionRangeType
+ };
+
+ enum BNFindType
+ {
+ FindTypeRawString,
+ FindTypeEscapedString,
+ FindTypeText,
+ FindTypeConstant,
+ FindTypeBytes
+ };
+
enum BNScriptingProviderInputReadyState
{
NotReadyForInput,
@@ -2810,19 +2826,47 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI size_t BNGetInstructionLength(BNBinaryView* view, BNArchitecture* arch, uint64_t addr);
- BINARYNINJACOREAPI bool BNFindNextData(BNBinaryView* view, uint64_t start, BNDataBuffer* data, uint64_t* result,
- BNFindFlag flags);
- BINARYNINJACOREAPI bool BNFindNextText(BNBinaryView* view, uint64_t start, const char* data, uint64_t* result,
- BNDisassemblySettings* settings, BNFindFlag flags);
- BINARYNINJACOREAPI bool BNFindNextConstant(BNBinaryView* view, uint64_t start, uint64_t constant, uint64_t* result,
- BNDisassemblySettings* settings);
+ BINARYNINJACOREAPI bool BNFindNextData(BNBinaryView* view, uint64_t start,
+ BNDataBuffer* data, uint64_t* result, BNFindFlag flags);
+ BINARYNINJACOREAPI bool BNFindNextText(BNBinaryView* view, uint64_t start, const char* data,
+ uint64_t* result, BNDisassemblySettings* settings, BNFindFlag flags,
+ BNFunctionGraphType graph);
+ BINARYNINJACOREAPI bool BNFindNextConstant(BNBinaryView* view, uint64_t start,
+ uint64_t constant, uint64_t* result, BNDisassemblySettings* settings,
+ BNFunctionGraphType graph);
- BINARYNINJACOREAPI bool BNFindNextDataWithProgress(BNBinaryView* view, uint64_t start, uint64_t end, BNDataBuffer* data, uint64_t* result, BNFindFlag flags,
+ BINARYNINJACOREAPI bool BNFindNextDataWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, BNDataBuffer* data, uint64_t* result, BNFindFlag flags,
void* ctxt, bool (*progress)(void* ctxt, size_t current, size_t total));
- BINARYNINJACOREAPI bool BNFindNextTextWithProgress(BNBinaryView* view, uint64_t start, uint64_t end, const char* data, uint64_t* result,
- BNDisassemblySettings* settings, BNFindFlag flags, void* ctxt, bool (*progress)(void* ctxt, size_t current, size_t total));
- BINARYNINJACOREAPI bool BNFindNextConstantWithProgress(BNBinaryView* view, uint64_t start, uint64_t end, uint64_t constant, uint64_t* result,
- BNDisassemblySettings* settings, void* ctxt, bool (*progress)(void* ctxt, size_t current, size_t total));
+ BINARYNINJACOREAPI bool BNFindNextTextWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, const char* data, uint64_t* result, BNDisassemblySettings* settings,
+ BNFindFlag flags, BNFunctionGraphType graph, void* ctxt,
+ bool (*progress)(void* ctxt, size_t current, size_t total));
+ BINARYNINJACOREAPI bool BNFindNextConstantWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, uint64_t constant, uint64_t* result, BNDisassemblySettings* settings,
+ BNFunctionGraphType graph, void* ctxt,
+ bool (*progress)(void* ctxt, size_t current, size_t total));
+
+ BINARYNINJACOREAPI bool BNFindAllDataWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, BNDataBuffer* data, BNFindFlag flags,
+ void* ctxt, bool (*progress)(void* ctxt, size_t current, size_t total),
+ void* matchCtxt,
+ bool (*matchCallback)(void* matchCtxt, uint64_t addr, BNDataBuffer* match));
+ BINARYNINJACOREAPI bool BNFindAllTextWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, const char* data, BNDisassemblySettings* settings, BNFindFlag flags,
+ BNFunctionGraphType graph, void* ctxt,
+ bool (*progress)(void* ctxt, size_t current, size_t total),
+ void* matchCtxt,
+ bool (*matchCallback)(void* matchCtxt, uint64_t addr, const char* match,
+ BNLinearDisassemblyLine* line));
+ BINARYNINJACOREAPI bool BNFindAllConstantWithProgress(BNBinaryView* view, uint64_t start,
+ uint64_t end, uint64_t constant, BNDisassemblySettings* settings,
+ BNFunctionGraphType graph,
+ void* ctxt,
+ bool (*progress)(void* ctxt, size_t current, size_t total),
+ void* matchCtxt,
+ bool (*matchCallback)(void* matchCtxt, uint64_t addr,
+ BNLinearDisassemblyLine* line));
BINARYNINJACOREAPI void BNAddAutoSegment(BNBinaryView* view, uint64_t start, uint64_t length,
uint64_t dataOffset, uint64_t dataLength, uint32_t flags);
@@ -3159,6 +3203,10 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI BNBasicBlock** BNGetBasicBlocksForAddress(BNBinaryView* view, uint64_t addr, size_t* count);
BINARYNINJACOREAPI BNBasicBlock** BNGetBasicBlocksStartingAtAddress(BNBinaryView* view, uint64_t addr, size_t* count);
+ BINARYNINJACOREAPI uint64_t BNGetFunctionHighestAddress(BNFunction* func);
+ BINARYNINJACOREAPI uint64_t BNGetFunctionLowestAddress(BNFunction* func);
+ BINARYNINJACOREAPI BNAddressRange* BNGetFunctionAddressRanges(BNFunction* func, size_t* count);
+
BINARYNINJACOREAPI BNLowLevelILFunction* BNGetFunctionLowLevelIL(BNFunction* func);
BINARYNINJACOREAPI BNLowLevelILFunction* BNGetFunctionLowLevelILIfAvailable(BNFunction* func);
BINARYNINJACOREAPI size_t BNGetLowLevelILForInstruction(BNFunction* func, BNArchitecture* arch, uint64_t addr);
@@ -3247,6 +3295,9 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI BNRegisterValueWithConfidence BNGetFunctionGlobalPointerValue(BNFunction* func);
BINARYNINJACOREAPI BNRegisterValueWithConfidence BNGetFunctionRegisterValueAtExit(BNFunction* func, uint32_t reg);
+ BINARYNINJACOREAPI bool BNGetInstructionContainingAddress(BNFunction* func,
+ BNArchitecture* arch, uint64_t addr, uint64_t* start);
+
BINARYNINJACOREAPI BNFunction* BNGetBasicBlockFunction(BNBasicBlock* block);
BINARYNINJACOREAPI BNArchitecture* BNGetBasicBlockArchitecture(BNBasicBlock* block);
BINARYNINJACOREAPI BNBasicBlock* BNGetBasicBlockSource(BNBasicBlock* block);
@@ -3272,6 +3323,8 @@ __attribute__ ((format (printf, 1, 2)))
BINARYNINJACOREAPI bool BNIsMediumLevelILBasicBlock(BNBasicBlock* block);
BINARYNINJACOREAPI BNLowLevelILFunction* BNGetBasicBlockLowLevelILFunction(BNBasicBlock* block);
BINARYNINJACOREAPI BNMediumLevelILFunction* BNGetBasicBlockMediumLevelILFunction(BNBasicBlock* block);
+ BINARYNINJACOREAPI bool BNGetBasicBlockInstructionContainingAddress(BNBasicBlock* block,
+ uint64_t addr, uint64_t* start);
BINARYNINJACOREAPI BNDisassemblyTextLine* BNGetBasicBlockDisassemblyText(BNBasicBlock* block,
BNDisassemblySettings* settings, size_t* count);