immunant / ibresolver

A QEMU TCG plugin for resolving indirect branches.
BSD 3-Clause "New" or "Revised" License
4 stars 3 forks source link

Add support for using different backends to detect indirect branches #6

Closed ayrtonm closed 2 years ago

ayrtonm commented 2 years ago

This PR let's us use different backends to check if instructions are indirect branches or not. The plugin is compiled with a built-in backend specified by passing a BACKEND parameter to the makefile and a custom backend can be passed as a QEMU plugin argument to override the built-in one.

The two ways to build the plugin are

  1. just make since BACKEND defaults to the simple backend
  2. make BACKEND=binja BINJA_INSTALL_DIR=/path/to/binja/installation/ to build with the binaryninja backend

To use a custom backend, pass an optional second plugin argument to either build. See the README for details on the build process and usage.

The point of this PR is to avoid the need to pass a list of indirect callsites to the plugin so this closes #3.