-
Notifications
You must be signed in to change notification settings - Fork 203
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
Use proper BN_DECLARE_CORE_ABI_VERSION
macro for Binary Ninja plugin
#93
Comments
If I remember correctly, I had a discussion with @psifertex about this at some point. In an ideal world, Binary Ninja would load plugin binaries and check that all functions are actually exported (i.e. depend on the OS loader, like IDA :)). That way, BinExport can continue to work, even if Binary Ninja introduces additional APIs, and it can be skipped if Binary Ninja removes APIs. This of course only works if incompatibly changed APIs come with a rename.
All that is to say that I will look into this a bit more, and I'm not opposed to changing to |
In the meantime, the
|
Please don't. People will forget about the /bin/launchctl unload \
-F /Library/LaunchAgents/com.google.security.zynamics.bindiff.plist |
Just re-checked: The current stable channel of the Binary Ninja API defines
and the current dev version (from 22c0d1f defines
So the BinExport binary will not be able to support both, even though Binary Ninja is at 3.1 for both. This is unfortunate, as this means that people will have to build their own BinExport plugins if they want to use BinDiff 8 and above with the dev channel. |
Many thanks for following up with BN support and for maintaining BinDiff of course. BinDiff is powerful and has been a strong and useful software in my reverse engineering toolbox. Would you please be so kind to consider adding BUILD instructions? May be a Wiki page for start, with BN's and progressively adding other supported tools? FWIW, the
|
You mean like these instructions: https://github.com/google/binexport#how-to-build? If you don't have IDA Pro, use
Ah yes that might work better :) |
I see you got us all covered from the beginning! Confirming it is trivial to build BinExport plugins on macOS following the README instructions 👏
You may want to remove the extra trailing backslash here though:
Thank you (again) 🙏 |
This addresses #93 and fixes the crashes that the BinExport version that ships with BinDiff 7 produces on recent "dev" channel builds of Binary Ninja. Caveat: This means that BinExport has to be rebuilt for the dev channel version. PiperOrigin-RevId: 470696846 Change-Id: I066d33b556002b07b33f4414ccca324991a52b1b
FYI -- related is that we're using Vector35/binaryninja-api#3399 to track the ability to have github actions that could potentially product releases that track both dev and stable automatically. |
This issue has been resolved for a while I believe? |
Yes, I don't think we currently face this issue. Closing. |
So, I think this is my fault since I suggested this be closed already but as of right now the stable installer for bindiff still has the unfortunate behavior of putting back the "old" version of the library even when one already exists. Should I open a new issue to track disabling that as that is the cause of the vast majority of the complaints we receive from users about MacOS BinaryNinja crashing. In particular, it's bitten me several times in the last few days of testing before even I remembered! |
Fixed in BinExport. Still present in BinDiff 7 stable. |
Binary Ninja has a very fast development cycle and sometimes has changes to the core ABI. We have designed a system to prevent loading plugins that use a different core ABI version than the product itself to avoid crashes and other issues.
BinExport tries (and succeeds) to circumvent this safety check by falsely reporting the core ABI version it was linked against:
binexport/binaryninja/main_plugin.cc
Lines 490 to 499 in 43b8d68
As a result, BinExport is a regular source of crashes for a lot of users. Migrating to using the official
BN_DECLARE_CORE_ABI_VERSION
macro would resolve this issue, and is recommended. All that is needed is to replace the entireCorePluginABIVersion
function (shown above) with theBN_DECLARE_CORE_ABI_VERSION
macro.Additionally, it seems that the BinExport plugin re-populates itself after some time if removed. This is very frustrating, especially if BinExport is causing crashes on startup, which it recently has for some users.
The text was updated successfully, but these errors were encountered: