Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support For Binary Ninja #52

Closed
the-wondersmith opened this issue Oct 30, 2020 · 4 comments
Closed

Support For Binary Ninja #52

the-wondersmith opened this issue Oct 30, 2020 · 4 comments
Assignees

Comments

@the-wondersmith
Copy link

I've found myself using Binary Ninja more and more recently, and really like the way that ret-sync makes x64dbg work with Ghidra. It'd be really useful if the same thing could be done in Binary Ninja. BN supports pure-python plugins, and I am primarily a Python developer so I'm happy to do the dev work. I have no concept of where to start though.

Is there any way you could point me in the correct direction?

Also, thank you for making this to begin with. It's fricken' awesome.

@bootleg
Copy link
Owner

bootleg commented Nov 2, 2020

Hi @the-wondersmith

thanks for the nice feedback.

Regarding Binary Ninja, I've never had the opportunity (I may have access to an old one) to use it so far thus I may be out off topic. Here are a couple of ideas though.

Depending on how Binary Ninja handles multiples input files (binaries) the design of the plugin may differ a little. For IDA I've used a dispatcher in front of the IDA instances. Whereas for Ghidra I've used an internal feature of the tool (ProgramManager). There are some pros&cons (for example it implies to load all binaries in the same Ghidra's workspace and window).

Once that point is set. I'd say you only need a couple of features. You may look at the Ghidra plugin which is more cleaner and more modular. Sweeping over the files, basically the kind of features you'd need are:

  • ListenerBackground.java: a persistent TPC server receiving request from debugger clients
  • LocalColorizerService.java: a way to interact with the code UI (disassembler/decompiler UI), setting position/highlight)
  • RequestHandler.java: dissecting requests (basically a tag + json) you'd need to handle a handful of them at first (new_dbg, module, loc)
  • RetSyncComponent.java: a way to insert into the UI of the tool (widget, etc.)
  • RetSyncPlugin.java: plugin backbone, registering commands, etc.

best regards.

@bootleg bootleg pinned this issue Nov 25, 2020
@bootleg bootleg self-assigned this Nov 30, 2020
@bootleg
Copy link
Owner

bootleg commented Dec 4, 2020

Work in progress. I can share access to an alpha on request (see email in CREDITS).

@bootleg
Copy link
Owner

bootleg commented Jan 5, 2021

Initial support is now pushed: 0ad9bc7

@bootleg
Copy link
Owner

bootleg commented Jan 11, 2021

Closing this one as it is now pushed. Let's open separated issues for bugs.

@bootleg bootleg closed this as completed Jan 11, 2021
@bootleg bootleg unpinned this issue Jan 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants