Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/whitequark/binja_itanium_cxx_abi
Binary Ninja Itanium C++ ABI Plugin
https://github.com/whitequark/binja_itanium_cxx_abi
Last synced: 19 days ago
JSON representation
Binary Ninja Itanium C++ ABI Plugin
- Host: GitHub
- URL: https://github.com/whitequark/binja_itanium_cxx_abi
- Owner: whitequark
- License: 0bsd
- Created: 2018-01-13T10:45:51.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-27T05:51:46.000Z (4 months ago)
- Last Synced: 2024-10-13T01:45:34.143Z (about 1 month ago)
- Language: Python
- Size: 1 MB
- Stars: 63
- Watchers: 8
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-0BSD.txt
Awesome Lists containing this project
README
# Binary Ninja Itanium C++ ABI Plugin
The Itanium C++ ABI plugin provides a custom demangler, an analysis that decodes mangled names and updates function signatures, and an analysis that decodes RTTI and vtables and discovers new procedures based on virtual function pointers.
## Custom demangler
The custom demangler converts the mangled names into abstract syntax trees, allowing to extract more type information than the built-in one. For example, it differentiates between complete and base class constructors and destructors.
## Function signature decoding
Before / after:
Note that the decoding is necessarily heuristic as some information is lost, e.g. class members and standalone functions in a namespace have an exactly identical mangling. It is possible that the `this` argument (or worse) would be missing--consult the full decoded name of the function (`current_function.symbol.full_name`) to see the result of decoding, and apply your expertise.
## RTTI and vtable decoding
Before / after:
## License
[0-clause BSD](LICENSE-0BSD.txt)