Load plugins from per-machine directory

Open
#1,615 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp

Research direction

No files or tests are named. Start by locating the plugin discovery and loading entry points, then review how user-specific paths are determined on Linux, macOS, and Windows. Done means supported per-machine directories are searched, user directories take precedence, and the behavior is covered for each platform.

Written by the indexing model from the issue text.

Description

Component: Plugin Effort: Low Impact: Low

There is no default path for Binary Ninja, since it is usually installed per-user (i.e. a directory in the users' home dir).

For tools like BinDiff, that ship with an installer/package that installs per-machine, this makes it necessary to ask users during installation where a particular tool can be found.

We could simply place plugin modules like libbinexport11.so (built from here) into ~/.binaryninja/plugins.
However, in Debian install scripts, for example, there is no clean way to get the installing user (it'll be root). On Windows and macOS this is easier, but it's still somewhat inelegant to have a system-wide installer dropping files into per-user folder.

TL;DR - Please consider loading plugins from additional well-kown per-machine paths.
E.g.:

  • Linux /etc/opt/binaryninja/plugins
  • macOS /Application Support/Vector35/BinaryNinja/plugins
  • Windows %ProgramData%/Vector35/BinaryNinja/plugins

Files in per-user directories should take precedence over per-machine ones.

Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Vector35/binaryninja-api

All issues in Vector35/binaryninja-api

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.