diff options
| author | Andrew Lamoureux <andrew@vector35.com> | 2017-03-15 13:41:40 -0400 |
|---|---|---|
| committer | Andrew Lamoureux <andrew@vector35.com> | 2017-03-15 13:41:40 -0400 |
| commit | 14fe0e379f5c9f10011750232c63d4f057dcf26d (patch) | |
| tree | 0bfa07702311c257d8295d1301c07c72e54d8d07 /examples/breakpoint/src/breakpoint.cpp | |
| parent | 2f71ffd2a1ab18eeaf9c3c7821343c7a820679b9 (diff) | |
| parent | 5a42aec73a77a3a54baf054cde9047533709be31 (diff) | |
Merge branch 'dev' of https://github.com/bambu/binaryninja-api into bambu-dev
Diffstat (limited to 'examples/breakpoint/src/breakpoint.cpp')
| -rw-r--r-- | examples/breakpoint/src/breakpoint.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/breakpoint/src/breakpoint.cpp b/examples/breakpoint/src/breakpoint.cpp new file mode 100644 index 00000000..41476411 --- /dev/null +++ b/examples/breakpoint/src/breakpoint.cpp @@ -0,0 +1,36 @@ +#include <inttypes.h> +#include "binaryninjaapi.h" + +using namespace BinaryNinja; +using namespace std; + +void write_breakpoint(BinaryNinja::BinaryView *view, uint64_t start, uint64_t length) +{ + // Sample function to show registering a plugin menu item for a range of bytes. + // Also possible: + // register + // register_for_address + // register_for_function + + Ref<Architecture> arch = view->GetDefaultArchitecture(); + string arch_name = arch->GetName(); + + if (arch_name.compare(0, 3, "x86") == 0) { + string int3s = string(length, '\xcc'); + view->Write(start, int3s.c_str(), length); + } else { + LogError("No support for breakpoint on %s", arch_name.c_str()); + } +} + +extern "C" +{ + BINARYNINJAPLUGIN bool CorePluginInit() + { + // Register the plugin with Binary Ninja + PluginCommand::RegisterForRange("Convert to breakpoint", + "Fill region with breakpoint instructions.", + &write_breakpoint); + return true; + } +} |
