diff options
| author | Rusty Wagner <rusty@vector35.com> | 2016-08-18 02:29:53 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2016-08-18 02:29:53 -0400 |
| commit | 228ee0e979268afab31b66efb357f2236238751d (patch) | |
| tree | 409bd231174c4724f05fa1592909beff3464f4e0 /binaryninjacore.h | |
| parent | 5f444e5444cec4ff3f270e1ced16b60f00f57f9e (diff) | |
Add Python script provider for UI Python console
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 78 |
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 |
