@@ -312,6 +312,8 @@ extern "C"
312312 typedef struct BNIndirectBranchInfo BNIndirectBranchInfo;
313313 typedef struct BNArchitectureAndAddress BNArchitectureAndAddress;
314314 typedef struct BNConstantRenderer BNConstantRenderer;
315+ typedef struct BNStringRecognizer BNStringRecognizer;
316+ typedef struct BNCustomStringType BNCustomStringType;
315317
316318 typedef bool (*BNProgressFunction)(void *, size_t , size_t );
317319
@@ -1631,6 +1633,15 @@ extern "C"
16311633 size_t nameCount;
16321634 } BNQualifiedName;
16331635
1636+ typedef struct BNDerivedString
1637+ {
1638+ BNStringRef* value;
1639+ bool addrValid;
1640+ uint64_t addr;
1641+ uint64_t len;
1642+ BNCustomStringType* customType;
1643+ } BNDerivedString;
1644+
16341645 typedef struct BNBinaryDataNotification
16351646 {
16361647 void * context;
@@ -1656,6 +1667,8 @@ extern "C"
16561667 void (*symbolUpdated)(void * ctxt, BNBinaryView* view, BNSymbol* sym);
16571668 void (*stringFound)(void * ctxt, BNBinaryView* view, BNStringType type, uint64_t offset, size_t len);
16581669 void (*stringRemoved)(void * ctxt, BNBinaryView* view, BNStringType type, uint64_t offset, size_t len);
1670+ void (*derivedStringFound)(void * ctxt, BNBinaryView* view, BNDerivedString* str);
1671+ void (*derivedStringRemoved)(void * ctxt, BNBinaryView* view, BNDerivedString* str);
16591672 void (*typeDefined)(void * ctxt, BNBinaryView* view, BNQualifiedName* name, BNType* type);
16601673 void (*typeUndefined)(void * ctxt, BNBinaryView* view, BNQualifiedName* name, BNType* type);
16611674 void (*typeReferenceChanged)(void * ctxt, BNBinaryView* view, BNQualifiedName* name, BNType* type);
@@ -3817,6 +3830,31 @@ extern "C"
38173830 BNOperatorPrecedence precedence);
38183831 } BNCustomConstantRenderer;
38193832
3833+ typedef struct BNCustomStringRecognizerResult
3834+ {
3835+ BNCustomStringType* type;
3836+ bool addrValid;
3837+ uint64_t addr;
3838+ size_t len;
3839+ BNDataBuffer* value;
3840+ } BNCustomStringRecognizerResult;
3841+
3842+ typedef struct BNCustomStringRecognizer
3843+ {
3844+ void * context;
3845+ void (*freeObject)(void * ctxt);
3846+ bool (*isValidForType)(void * ctxt, BNHighLevelILFunction* hlil, BNType* type);
3847+ bool (*recognizeConstantPointer)(void * ctxt, BNHighLevelILFunction* hlil, size_t expr, BNType* type,
3848+ int64_t val, BNCustomStringRecognizerResult* result);
3849+ } BNCustomStringRecognizer;
3850+
3851+ typedef struct BNCustomStringTypeInfo
3852+ {
3853+ char * name;
3854+ char * stringPrefix;
3855+ char * stringPostfix;
3856+ } BNCustomStringTypeInfo;
3857+
38203858 BINARYNINJACOREAPI char * BNAllocString (const char * contents);
38213859 BINARYNINJACOREAPI char * BNAllocStringWithLength (const char * contents, size_t len);
38223860 BINARYNINJACOREAPI void BNFreeString (char * str);
@@ -5260,6 +5298,11 @@ extern "C"
52605298 BNBinaryView* view, uint64_t start, uint64_t len, size_t * count);
52615299 BINARYNINJACOREAPI void BNFreeStringReferenceList (BNStringReference* strings);
52625300
5301+ BINARYNINJACOREAPI BNDerivedString* BNGetDerivedStrings (BNBinaryView* view, size_t * count);
5302+ BINARYNINJACOREAPI BNReferenceSource* BNGetDerivedStringCodeReferences (
5303+ BNBinaryView* view, BNDerivedString* str, size_t * count, bool limit, size_t maxItems);
5304+ BINARYNINJACOREAPI void BNFreeDerivedStringList (BNDerivedString* strings, size_t count);
5305+
52635306 BINARYNINJACOREAPI BNVariableNameAndType* BNGetStackLayout (BNFunction* func, size_t * count);
52645307 BINARYNINJACOREAPI void BNFreeVariableNameAndTypeList (BNVariableNameAndType* vars, size_t count);
52655308 BINARYNINJACOREAPI void BNCreateAutoStackVariable (
@@ -8691,9 +8734,25 @@ extern "C"
86918734 const char * name, BNCustomConstantRenderer* renderer);
86928735 BINARYNINJACOREAPI BNConstantRenderer* BNGetConstantRendererByName (const char * name);
86938736 BINARYNINJACOREAPI BNConstantRenderer** BNGetConstantRendererList (size_t * count);
8694- BINARYNINJACOREAPI void BNFreeConstantRendererList (BNLanguageRepresentationFunctionType ** renderers);
8737+ BINARYNINJACOREAPI void BNFreeConstantRendererList (BNConstantRenderer ** renderers);
86958738 BINARYNINJACOREAPI char * BNGetConstantRendererName (BNConstantRenderer* renderer);
86968739
8740+ // String recognizers
8741+ BINARYNINJACOREAPI BNCustomStringType* BNRegisterCustomStringType (BNCustomStringTypeInfo* info);
8742+ BINARYNINJACOREAPI BNCustomStringType* BNGetCustomStringTypeByName (const char * name);
8743+ BINARYNINJACOREAPI BNCustomStringType* BNGetCustomStringTypeByID (uint32_t id);
8744+ BINARYNINJACOREAPI BNCustomStringType** BNGetCustomStringTypeList (size_t * count);
8745+ BINARYNINJACOREAPI void BNFreeCustomStringTypeList (BNCustomStringType** types);
8746+ BINARYNINJACOREAPI char * BNGetCustomStringTypeName (BNCustomStringType* type);
8747+ BINARYNINJACOREAPI char * BNGetCustomStringTypePrefix (BNCustomStringType* type);
8748+ BINARYNINJACOREAPI char * BNGetCustomStringTypePostfix (BNCustomStringType* type);
8749+ BINARYNINJACOREAPI BNStringRecognizer* BNRegisterStringRecognizer (
8750+ const char * name, BNCustomStringRecognizer* recognizer);
8751+ BINARYNINJACOREAPI BNStringRecognizer* BNGetStringRecognizerByName (const char * name);
8752+ BINARYNINJACOREAPI BNStringRecognizer** BNGetStringRecognizerList (size_t * count);
8753+ BINARYNINJACOREAPI void BNFreeStringRecognizerList (BNStringRecognizer** recognizers);
8754+ BINARYNINJACOREAPI char * BNGetStringRecognizerName (BNStringRecognizer* recognizer);
8755+
86978756#ifdef __cplusplus
86988757}
86998758#endif
0 commit comments