diff options
| author | Peter LaFosse <peter@vector35.com> | 2017-06-24 01:33:04 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2017-07-01 10:02:27 -0400 |
| commit | 0de62768c8afc5ca27576b59d4591ca8dbbd7cee (patch) | |
| tree | bbd69585e0705905fddef54d32e2ab50aa91f6a6 /binaryninjacore.h | |
| parent | b0778fc4d0271a9ba16e7c81c2c4c67a8273cda6 (diff) | |
Adding settings system apis, and binaryview metadata apis
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 107 |
1 files changed, 106 insertions, 1 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h index d053eb2b..58b0198a 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -137,6 +137,7 @@ extern "C" struct BNRepository; struct BNRepoPlugin; struct BNRepositoryManager; + struct BNMetadata; typedef bool (*BNLoadPluginCallback)(const char* repoPath, const char* pluginPath, void* ctx); @@ -1257,6 +1258,7 @@ extern "C" SuccessfulScriptExecution }; + struct BNScriptingInstanceCallbacks { void* context; @@ -1474,6 +1476,21 @@ extern "C" double seconds; }; + enum BNMetadataType + { + BooleanDataType, + StringDataType, + UnsignedIntegerDataType, + SignedIntegerDataType, + DoubleDataType, + BooleanListDataType, + StringListDataType, + UnsignedIntegerListDataType, + SignedIntegerListDataType, + DoubleListDataType, + RawDataType + }; + BINARYNINJACOREAPI char* BNAllocString(const char* contents); BINARYNINJACOREAPI void BNFreeString(char* str); BINARYNINJACOREAPI void BNFreeStringList(char** strs, size_t count); @@ -1504,6 +1521,7 @@ extern "C" BINARYNINJACOREAPI char* BNGetUserDirectory(void); BINARYNINJACOREAPI char* BNGetUserPluginDirectory(void); BINARYNINJACOREAPI char* BNGetRepositoriesDirectory(void); + BINARYNINJACOREAPI char* BNGetSettingsFileName(void); BINARYNINJACOREAPI void BNSaveLastRun(void); BINARYNINJACOREAPI char* BNGetPathRelativeToBundledPluginDirectory(const char* path); @@ -2859,7 +2877,94 @@ extern "C" // Filesystem functionality BINARYNINJACOREAPI int BNDeleteFile(const char* path); BINARYNINJACOREAPI int BNDeleteDirectory(const char* path, int contentsOnly); - BINARYNINJACOREAPI int BNCreateDirectory(const char* path); + BINARYNINJACOREAPI bool BNCreateDirectory(const char* path, bool createSubdirectories); + BINARYNINJACOREAPI bool BNPathExists(const char* path); + BINARYNINJACOREAPI bool BNIsPathDirectory(const char* path); + BINARYNINJACOREAPI bool BNIsPathRegularFile(const char* path); + + // Settings APIs + BINARYNINJACOREAPI bool BNProcessMainSettingsFile(); + BINARYNINJACOREAPI bool BNSettingGetBool(const char* settingGroup, const char* name, bool defaultValue); + BINARYNINJACOREAPI uint64_t BNSettingGetInteger(const char* settingGroup, const char* name, uint64_t defaultValue); + BINARYNINJACOREAPI char* BNSettingGetString(const char* settingGroup, const char* name, const char* defaultValue); + // intoutSize is number of elements in defaultValue one entry and number of elements in return type on exit + BINARYNINJACOREAPI uint64_t* BNSettingGetIntegerList(const char* settingGroup, const char* name, uint64_t* defaultValue, size_t* inoutSize); + // intoutSize is number of elements in defaultValue one entry and number of elements in return type on exit + BINARYNINJACOREAPI const char** BNSettingGetStringList(const char* settingGroup, const char* name, const char** defaultValue, size_t* inoutSize); + BINARYNINJACOREAPI double BNSettingGetDouble(const char* settingGroup, const char* name, double defaultValue); + + BINARYNINJACOREAPI void BNFreeSettingStringList(char** stringList, size_t size); + BINARYNINJACOREAPI void BNFreeSettingIntegerList(uint64_t* integerList); + //Check the type of a core setting + BINARYNINJACOREAPI bool BNSettingIsBool(const char* name, const char* settingGroup); + BINARYNINJACOREAPI bool BNSettingIsInteger(const char* name, const char* settingGroup); + BINARYNINJACOREAPI bool BNSettingIsString(const char* name, const char* settingGroup); + BINARYNINJACOREAPI bool BNSettingIsStringList(const char* name, const char* settingGroup); + BINARYNINJACOREAPI bool BNSettingIsIntegerList(const char* name, const char* settingGroup); + BINARYNINJACOREAPI bool BNSettingIsDouble(const char* name, const char* settingGroup); + // Check if a plugin setting is present + BINARYNINJACOREAPI bool BNSettingIsPresent(const char* settingGroup, const char* name); + + BINARYNINJACOREAPI bool BNSettingSetBool(const char* settingGroup, const char* name, bool value, bool autoFlush); + BINARYNINJACOREAPI bool BNSettingSetInteger(const char* settingGroup, const char* name, uint64_t value, bool autoFlush); + BINARYNINJACOREAPI bool BNSettingSetString(const char* settingGroup, const char* name, const char* value, bool autoFlush); + BINARYNINJACOREAPI bool BNSettingSetDouble(const char* settingGroup, const char* name, double value, bool autoFlush); + BINARYNINJACOREAPI bool BNSettingSetIntegerList(const char* settingGroup, const char* name, const uint64_t* value, size_t size, bool autoFlush); + BINARYNINJACOREAPI bool BNSettingSetStringList(const char* settingGroup, const char* name, const char** value, size_t size, bool autoFlush); + + BINARYNINJACOREAPI bool BNSettingFlushSettings(); + + //Metadata APIs + + // Create Metadata of various types + BINARYNINJACOREAPI BNMetadata* BNNewMetadataReference(BNMetadata* data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredBooleanData(bool data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredStringData(const char* data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredUnsignedIntegerData(uint64_t data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredSignedIntegerData(int64_t data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredDoubleData(double data); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredBooleanListData(const bool* data, size_t size); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredStringListData(const char** data, size_t size); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredUnsignedIntegerListData(const uint64_t* data, size_t size); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredSignedIntegerListData(const int64_t* data, size_t size); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredDoubleListData(const double* data, size_t size); + BINARYNINJACOREAPI BNMetadata* BNCreateStructuredRawData(const uint8_t* data, size_t size); + BINARYNINJACOREAPI void BNFreeMetadata(BNMetadata* data); + BINARYNINJACOREAPI void BNFreeMetadataBooleanList(bool* data); + BINARYNINJACOREAPI void BNFreeMetadataStringList(char** data, size_t size); + BINARYNINJACOREAPI void BNFreeMetadataUnsignedIntegerList(uint64_t* data); + BINARYNINJACOREAPI void BNFreeMetadataSignedIntegerList(int64_t* data); + BINARYNINJACOREAPI void BNFreeMetadataDoubleList(double* data); + BINARYNINJACOREAPI void BNFreeMetadataRaw(uint8_t* data); + // Retrieve Structured Data + BINARYNINJACOREAPI bool BNMetadataGetBoolean(BNMetadata* data); + BINARYNINJACOREAPI char* BNMetadataGetString(BNMetadata* data); + BINARYNINJACOREAPI uint64_t BNMetadataGetUnsignedInteger(BNMetadata* data); + BINARYNINJACOREAPI int64_t BNMetadataGetSignedInteger(BNMetadata* data); + BINARYNINJACOREAPI double BNMetadataGetDouble(BNMetadata* data); + BINARYNINJACOREAPI bool* BNMetadataGetBooleanList(BNMetadata* data, size_t* size); + BINARYNINJACOREAPI char** BNMetadataGetStringList(BNMetadata* data, size_t* size); + BINARYNINJACOREAPI uint64_t* BNMetadataGetUnsignedIntegerList(BNMetadata* data, size_t* size); + BINARYNINJACOREAPI int64_t* BNMetadataGetSignedIntegerList(BNMetadata* data, size_t* size); + BINARYNINJACOREAPI double* BNMetadataGetDoubleList(BNMetadata* data, size_t* size); + BINARYNINJACOREAPI uint8_t* BNMetadataGetRaw(BNMetadata* data, size_t* size); + //Query type of Metadata + BINARYNINJACOREAPI BNMetadataType BNMetadataGetType(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsBoolean(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsString(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsUnsignedInteger(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsSignedInteger(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsDouble(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsBooleanList(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsStringList(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsUnsignedIntegerList(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsSignedIntegerList(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsDoubleList(BNMetadata* data); + BINARYNINJACOREAPI bool BNMetadataIsRaw(BNMetadata* data); + + // Store/Query structured data to/from a BinaryView + BINARYNINJACOREAPI void BNBinaryViewStoreMetadata(BNBinaryView* view, const char* key, BNMetadata* value); + BINARYNINJACOREAPI bool BNBinaryViewQueryMetadata(BNBinaryView* view, const char* key, BNMetadata** value); #ifdef __cplusplus } #endif |
