joxeankoret / diaphora

Diaphora, the most advanced Free and Open Source program diffing tool.
http://diaphora.re
GNU Affero General Public License v3.0
3.51k stars 371 forks source link

BinaryNinja support? #105

Open deepgray opened 6 years ago

deepgray commented 6 years ago

considering the entry cost of IDA Pro for the individual researcher for both x86 and x86_64, it would be nice if you supported BinaryNinja (at $300) as well as IDA Pro ($1409)...any plans?

for x86 support only, BinaryNinja is free with IDA Pro ($739)...

joxeankoret commented 6 years ago

I tried to add support for Binary Ninja in the past, but my initial tests were not very successful: no GUI APIs and some heuristics already available with IDA would not be useable at all with Binary Ninja (see this https://github.com/joxeankoret/diaphora/issues/29#issuecomment-248210862).

So, I would love to add support for it (and I know the developers do want too) but unless I write an external GUI myself, one would not be able to graphically display the results and, also, many heuristics will not be supported either. Perhaps in the not so far away future...

BTW, if someone wants to make/start the port, I would gladly help him or her.

deepgray commented 6 years ago

how about for Hopper?

joxeankoret commented 6 years ago
Check this:  Support for Hopper · Issue #29 · joxeankoret/diaphora

|

Support for Hopper · Issue #29 · joxeankoret/diaphora

During BerlinSides 1 person asked for support for Hopper. If you're interested on it, this is the place to send "+1" and "me too" messages, so I know how many people is interested on it. Please not... | |

|

|

Help would be highly appreciated Enviado desde Yahoo Mail con Android

El sáb., ene. 20, 2018 a 1:47, Jason Knightnotifications@github.com escribió:
how about for Hopper?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

deepgray commented 6 years ago

Binary Ninja and Hopper are great entry level decompilers compared to IDA Pro...

so how would you like me to throw in a +1 me too?

psifertex commented 6 years ago

We continue to have requests for this so I'm coming back to re-evaluate this since we're actively working on extending the UI plugins which removes one of the biggest blockers.

I'll look into the GetInstructionList request to see if we can implement something for that which should be the only other blocker that I know of and report back.

joxeankoret commented 6 years ago

The biggest problem will be UI integration, I think. Can I read somewhere about the GUI APIs that you're adding? Or, if you prefer, I can tell you what I need.

psifertex commented 6 years ago

The goal is to allow arbitrary QT GUI elements so I imagine it will be more than sufficient. If you prefer simpler pre-built mechanisms like the ones we have now (https://api.binary.ninja/search.html?q=interaction&check_keywords=yes&area=default#) that could work if you only have a small list of UI elements you're using.

And yeah, GetInstructionList is going to be easy to implement. I'll make sure that's done before the UI extension stuff is in.

AshKetch-um commented 5 years ago

Politely asking for the current status of this issue. At the moment, this seems like it is in limbo and I'm not sure what if any blockers remain at this time.

Are there plans to add this support?

What are the current blockers (e.g. Binary Ninja GUI API, IDA API equivalency for some heuristic features, time/resources on the diaphora side?)

I am obviously +1 to this feature request!

Thank you!

joxeankoret commented 5 years ago

I don't know if it supports already GUI plugins or not as I don't use Binary Ninja. If GUI plugins are already supported, I could start porting it.

psifertex commented 5 years ago

GUI plugins are doable via hacks that several plugins use, but we're only weeks away from third party UI plugins being supported first class without janky QT hooking. In the meantime, I think the analysis itself should be fine and maybe worth starting due to the UI coming alone?

I think the only other one was the list of all architecture mnemonics though I'd really rather see those based on ILs instead but don't know what changes would be required for that. If arch mnemonics are required I probably add them for our integrated architectures but would require all the plugin authors to support new APIs so it's not my first choice.

@joxeankoret hit me up if you do decide to work on this and I'll bump your license for you so you don't have to repurchase.

joxeankoret commented 5 years ago

If GUI plugins is only some weeks away, then let's wait a bit as, presumably, I'll be porting it to Ghidra too (if it makes any sense) and, also, because one of the biggest changes I'm working on is heuristics based on IRs.

PS: A workaround I was thinking about with regard to the all arch's mnemonics is to, simply, generate a huge .py file with all of them so I don't need the underlying disassembler to support it.

psifertex commented 5 years ago

Sounds good. Let me know if I can help answer any questions about our IL stack.

psifertex commented 5 years ago

Just an update that UI plugins have been on the dev branch for a little while now. If you've got any questions, let me know. Katai, Triage, and Snippets are all python-based UI plugin examples available from: https://github.com/Vector35/binaryninja-api/tree/dev/python/examples

The APIs will also land in the next stable though I don't have a hard-deadline it will likely be fairly soon. That said, the APIs shouldn't be changing from now to then, just be a matter of bug fixes and testing so it's safe to start developing against.

joxeankoret commented 5 years ago

For anyone interested on the subject: I'm currently working on the port. However, I don't have an ETA.

WanderingGlitch commented 4 years ago

Is there a public branch with your work on the port ? I'd like to help contribute

psifertex commented 4 years ago

Joxean can of course speak for himself, but I believe I have heard him mention in other contexts that he prefers to work on private or local branches until things are fairly far along.

joxeankoret commented 4 years ago

Sorry, I missed the comments. As Jordan says, I prefer to work on my own until I have something half-stable, then do private beta testing and, after that, publish everything. However, in this case I'm afraid I don't have anything even in private that can be considered worth of releasing at all. I haven't had time at all to work on it.

blaquee commented 4 years ago

I came in here to find the status a diaphora port for binja as Ive recently renewed my license. So just putting my bookmark and request in here as well. Also willing to test it when/if it does make it out of private branch. Thank you :)

ghost commented 4 years ago

I'm interested as well, just leaving my +1 here :) At the moment I'm not customer of Binary Ninja because I'm still used to IDA and its plugins, but as BN is getting all these great plugins I'd definitely change :)

ExecuteProtect commented 9 months ago

I'm really excited to see this get implemented

thanasisk commented 3 months ago

Is there effort on this underway? I would really, really love to see this implemented

joxeankoret commented 3 months ago

Not really because I don't use it. It's highly likely that the very first port will be to Ghidra.