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
New Binary Ninja Plugin #751
Open
xfoxfu
wants to merge
11
commits into
Perfare:master
Choose a base branch
from
xfoxfu:master
base: master
Could not load branches
Branch not found: {{ refName }}
Could not load tags
Nothing to show
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+482
−120
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Note to self and other people using this: Line 197 of
|
Thanks! The plugin is amazing! :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This new version of Binary Ninja plugin will provide better experience over the existing one.
Features
It will not load the entire
il2cpp.h
header file into Binary Ninja, since this is super slow on big projects. (Shall we add an option to allow the user to still load the entire header file?)When the user wants to get type information on a function or a static
ScriptMetadata
item, the user would use Il2Cpp Annotate from the plugin menu to load function signature and all related global variable types. (Note: the type may not update immediately after annotation for Binary Ninja's problem, so the user has to manually switch to graph view and back to get the views updated.)It no longer requires preprocessing header file with
il2cpp_header_to_binja.py
. Instead, it uses tree-sitter to compute the type dependencies to comply with Binary Ninja's C++ parser.It additionally loads
ScriptMetadata
andScriptMetadataMethod
.Demo
Load
The menu Il2Cpp Load loads
script.json
andil2cpp.h
to the Binary Ninja instance.It can optionally mark the functions and global variables with names, string literal values, etc. If the user opens an existing BNDB, it does not need to load names, and this will make loading faster.
After loading and marking names, the functions and global data variables are marked without types.
Annotate
The menu Il2Cpp Annotate will load type information for a given function or data variable. The user does not have to select precisely the beginning of the function. It will detect the surrounding function at the current cursor position.
Annotate is only available after loading. If the user saves the project as BNDB, and reopens it, it requires to use Il2Cpp Load first without loading the names (Skip naming = Yes).
Annotate will load the types and all its dependents to Binary Ninja, and then load the function signature type or the data variable type.
After annotating function, the analysis may not update. The user has to switch to graph view and back to get it updated (shortcut: press
Space
twice). This is a known problem of Binary Ninja.Credits to @SyxP and @exstrim401 for their existing work. This code is based on @SyxP 's IL2CPPDumperBinja and @exstrim401 's version in this repository.