summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2017-06-24 01:33:04 -0400
committerPeter LaFosse <peter@vector35.com>2017-07-01 10:02:27 -0400
commit0de62768c8afc5ca27576b59d4591ca8dbbd7cee (patch)
treebbd69585e0705905fddef54d32e2ab50aa91f6a6 /binaryninjacore.h
parentb0778fc4d0271a9ba16e7c81c2c4c67a8273cda6 (diff)
Adding settings system apis, and binaryview metadata apis
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h107
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