diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-09-01 00:18:59 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-09-01 16:45:32 -0400 |
| commit | 183385ae0c88ad5d8c070560bad4bd937129fb45 (patch) | |
| tree | 6fc220ec082d39540fa87d4ee01446388acf4b8e /binaryninjaapi.cpp | |
| parent | c0e76778ad4149565de0f2729c6c36464fb522f0 (diff) | |
Add user plugins and Python plugin support
Diffstat (limited to 'binaryninjaapi.cpp')
| -rw-r--r-- | binaryninjaapi.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/binaryninjaapi.cpp b/binaryninjaapi.cpp new file mode 100644 index 00000000..f5999003 --- /dev/null +++ b/binaryninjaapi.cpp @@ -0,0 +1,87 @@ +#include "binaryninjaapi.h" + +using namespace BinaryNinja; +using namespace std; + + +void BinaryNinja::InitCorePlugins() +{ + BNInitCorePlugins(); +} + + +void BinaryNinja::InitUserPlugins() +{ + BNInitUserPlugins(); +} + + +string BinaryNinja::GetBundledPluginDirectory() +{ + char* path = BNGetBundledPluginDirectory(); + if (!path) + return string(); + string result = path; + BNFreeString(path); + return result; +} + + +void BinaryNinja::SetBundledPluginDirectory(const string& path) +{ + BNSetBundledPluginDirectory(path.c_str()); +} + + +string BinaryNinja::GetUserPluginDirectory() +{ + char* path = BNGetUserPluginDirectory(); + if (!path) + return string(); + string result = path; + BNFreeString(path); + return result; +} + + +string BinaryNinja::GetPathRelativeToBundledPluginDirectory(const string& rel) +{ + char* path = BNGetPathRelativeToBundledPluginDirectory(rel.c_str()); + if (!path) + return rel; + string result = path; + BNFreeString(path); + return result; +} + + +string BinaryNinja::GetPathRelativeToUserPluginDirectory(const string& rel) +{ + char* path = BNGetPathRelativeToUserPluginDirectory(rel.c_str()); + if (!path) + return rel; + string result = path; + BNFreeString(path); + return result; +} + + +bool BinaryNinja::ExecuteWorkerProcess(const string& path, const vector<string>& args, const DataBuffer& input, + string& output, string& errors) +{ + const char** argArray = new const char*[args.size() + 1]; + for (size_t i = 0; i < args.size(); i++) + argArray[i] = args[i].c_str(); + argArray[args.size()] = nullptr; + + char* outputStr; + char* errorStr; + bool result = BNExecuteWorkerProcess(path.c_str(), argArray, input.GetBufferObject(), &outputStr, &errorStr); + + output = outputStr; + errors = errorStr; + BNFreeString(outputStr); + BNFreeString(errorStr); + delete[] argArray; + return result; +} |
