Vector35 / binaryninja-api

Public API, examples, documentation and issues for Binary Ninja
https://binary.ninja/
MIT License
900 stars 204 forks source link

Updates on official documentation #4689

Closed Zerotistic closed 9 months ago

Zerotistic commented 11 months ago

Is this a general concept that needs to be documented or a specific API? It is general concepts and updates to already documented section.

What concept or API needs more documentation? I am sorry for this is many different parts/sections

Is this documentation related to a specific API? No it is not.

Are there any known examples of people using this API/concept? Aside from myself, there are people who made community plugins and I had colleagues ask me.

psifertex commented 11 months ago

It's not actually necessary to install separately -- the linux setup script calls the other one for you automatically. https://github.com/Vector35/binaryninja-api/blob/dev/scripts/linux-setup.sh#L72

I'm going to make a separate issue for all of the images as every image in the documentation and website will be redone for 4.0 as we're changing the default theme.

print_all_types is intended, but it's easy enough to improve, done.

More descriptions written, thanks!

Workflows unfortunately needs to hold off until we've made some important internal changes that will impact how they're used. Once the updated feature lands (hopefully in 4.0 it should include documentation)

Since Rebasing is a single API call that comes up when searching for that keyword I don't think calling it out specifically is really helpful. Though it could use an example in the API docs which I've just added!

The other resources I added to the "what's next" section of the getting started guide.

psifertex commented 11 months ago

The only things not yet resolved are the UI plugin details or the SSA documentation as those will take a bit more time. I've actually already been working on updated documentation for UI plugins, but it would really help me would be if you could describe:

RE: SSA form, we should probably just write up a more formal description of SSA in https://docs.binary.ninja/dev/bnil-overview.html or as a separate page in that section and then link to important concepts while demonstrating how to walk the SSA forms in a particular example

Zerotistic commented 11 months ago

I was planning to do a PR to fix most of those but you beat me to it!

It's not actually necessary to install separately -- the linux setup script calls the other one for you automatically. https://github.com/Vector35/binaryninja-api/blob/dev/scripts/linux-setup.sh#L72

Oh is it not? I remember having to do it manually before, maybe its because I am on an unsupported distro (obligatory I use arch btw)?

I'm going to make a separate issue for all of the images as every image in the documentation and website will be redone for 4.0 as we're changing the default theme.

Yeah I just saw your issue and was going to comment you should track those there.

Workflows unfortunately needs to hold off until we've made some important internal changes that will impact how they're used. Once the updated feature lands (hopefully in 4.0 it should include documentation)

Fair enough, no need to update the doc if it'll be updated again soon. Excited for v4.0 👀

The only things not yet resolved are the UI plugin details or the SSA documentation as those will take a bit more time. Fair enough, completely understand. I've actually already been working on updated documentation for UI plugins, but it would really help me would be if you could describe:

* What did you want to do with a UI plugin that didn't come up with an API search?

* Which examples were the most helpful?

* Are there some APIs you think need more examples than others?

It is likely that I just don't know what word to look up, but "Sidebar" in the API search only brings back color related functions. I tried "Widget', which only bring back color related functions too. Looking at the navbar for "UI" or something similar there is no result (on the Python API doc). I believe I had to go look at the community plugins to figure it out. If not adding documentation for it, at least somehow mention what and where we should look for in the API? Searching how to update the new widget (I think its like that you call them?) or how to have different data in it depending on the view had me struggle a lot.

The most useful resources were community plugins and Qt6 documentation (and a bit of trial and error).

I can't think of any right now, but I can come back to you later if you want. I haven't had to make an UI in a while.

psifertex commented 11 months ago

Ahh, yeah, the main issue there is that all of the UI stuff is only documented in the C++ docs due to some Shiboken quirks. The more I think about it the more a small update to the UI plugin documentation could help. Let me take a stab at it. I'd still welcome any PRs if you see other things though!

psifertex commented 9 months ago

Final items are done with https://github.com/Vector35/binaryninja-api/commit/66be2657a30056b99fab83c7211092f288b44e69