summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-08-18 02:29:53 -0400
committerRusty Wagner <rusty@vector35.com>2016-08-18 02:29:53 -0400
commit228ee0e979268afab31b66efb357f2236238751d (patch)
tree409bd231174c4724f05fa1592909beff3464f4e0 /binaryninjacore.h
parent5f444e5444cec4ff3f270e1ced16b60f00f57f9e (diff)
Add Python script provider for UI Python console
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 13f54943..61ecb235 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -99,6 +99,8 @@ extern "C"
struct BNPlatform;
struct BNAnalysisCompletionEvent;
struct BNDisassemblySettings;
+ struct BNScriptingProvider;
+ struct BNScriptingInstance;
//! Console log levels
enum BNLogLevel
@@ -963,6 +965,47 @@ extern "C"
FindCaseInsensitive = 1
};
+ enum BNScriptingProviderInputReadyState
+ {
+ NotReadyForInput,
+ ReadyForScriptExecution,
+ ReadyForScriptProgramInput
+ };
+
+ enum BNScriptingProviderExecuteResult
+ {
+ InvalidScriptInput,
+ IncompleteScriptInput,
+ SuccessfulScriptExecution
+ };
+
+ struct BNScriptingInstanceCallbacks
+ {
+ void* context;
+ void (*destroyInstance)(void* ctxt);
+ BNScriptingProviderExecuteResult (*executeScriptInput)(void* ctxt, const char* input);
+ void (*setCurrentBinaryView)(void* ctxt, BNBinaryView* view);
+ void (*setCurrentFunction)(void* ctxt, BNFunction* func);
+ void (*setCurrentBasicBlock)(void* ctxt, BNBasicBlock* block);
+ void (*setCurrentAddress)(void* ctxt, uint64_t addr);
+ void (*setCurrentSelection)(void* ctxt, uint64_t begin, uint64_t end);
+ };
+
+ struct BNScriptingProviderCallbacks
+ {
+ void* context;
+ BNScriptingInstance* (*createInstance)(void* ctxt);
+
+ };
+
+ struct BNScriptingOutputListener
+ {
+ void* context;
+ void (*output)(void* ctxt, const char* text);
+ void (*error)(void* ctxt, const char* text);
+ void (*inputReadyStateChanged)(void* ctxt, BNScriptingProviderInputReadyState state);
+ };
+
BINARYNINJACOREAPI char* BNAllocString(const char* contents);
BINARYNINJACOREAPI void BNFreeString(char* str);
@@ -1844,6 +1887,41 @@ extern "C"
BNType** outType,
char*** outVarName,
size_t* outVarNameElements);
+
+ // Scripting providers
+ BINARYNINJACOREAPI BNScriptingProvider* BNRegisterScriptingProvider(const char* name,
+ BNScriptingProviderCallbacks* callbacks);
+ BINARYNINJACOREAPI BNScriptingProvider** BNGetScriptingProviderList(size_t* count);
+ BINARYNINJACOREAPI void BNFreeScriptingProviderList(BNScriptingProvider** providers);
+ BINARYNINJACOREAPI BNScriptingProvider* BNGetScriptingProviderByName(const char* name);
+
+ BINARYNINJACOREAPI char* BNGetScriptingProviderName(BNScriptingProvider* provider);
+ BINARYNINJACOREAPI BNScriptingInstance* BNCreateScriptingProviderInstance(BNScriptingProvider* provider);
+
+ BINARYNINJACOREAPI BNScriptingInstance* BNInitScriptingInstance(BNScriptingProvider* provider,
+ BNScriptingInstanceCallbacks* callbacks);
+ BINARYNINJACOREAPI BNScriptingInstance* BNNewScriptingInstanceReference(BNScriptingInstance* instance);
+ BINARYNINJACOREAPI void BNFreeScriptingInstance(BNScriptingInstance* instance);
+ BINARYNINJACOREAPI void BNNotifyOutputForScriptingInstance(BNScriptingInstance* instance, const char* text);
+ BINARYNINJACOREAPI void BNNotifyErrorForScriptingInstance(BNScriptingInstance* instance, const char* text);
+ BINARYNINJACOREAPI void BNNotifyInputReadyStateForScriptingInstance(BNScriptingInstance* instance,
+ BNScriptingProviderInputReadyState state);
+
+ BINARYNINJACOREAPI void BNRegisterScriptingInstanceOutputListener(BNScriptingInstance* instance,
+ BNScriptingOutputListener* callbacks);
+ BINARYNINJACOREAPI void BNUnregisterScriptingInstanceOutputListener(BNScriptingInstance* instance,
+ BNScriptingOutputListener* callbacks);
+
+ BINARYNINJACOREAPI BNScriptingProviderInputReadyState BNGetScriptingInstanceInputReadyState(
+ BNScriptingInstance* instance);
+ BINARYNINJACOREAPI BNScriptingProviderExecuteResult BNExecuteScriptInput(BNScriptingInstance* instance,
+ const char* input);
+ BINARYNINJACOREAPI void BNSetScriptingInstanceCurrentBinaryView(BNScriptingInstance* instance, BNBinaryView* view);
+ BINARYNINJACOREAPI void BNSetScriptingInstanceCurrentFunction(BNScriptingInstance* instance, BNFunction* func);
+ BINARYNINJACOREAPI void BNSetScriptingInstanceCurrentBasicBlock(BNScriptingInstance* instance, BNBasicBlock* block);
+ BINARYNINJACOREAPI void BNSetScriptingInstanceCurrentAddress(BNScriptingInstance* instance, uint64_t addr);
+ BINARYNINJACOREAPI void BNSetScriptingInstanceCurrentSelection(BNScriptingInstance* instance,
+ uint64_t begin, uint64_t end);
#ifdef __cplusplus
}
#endif