This comprehensive one-day course will introduce both novice and advanced reverse engineers to the powerful features of Binary Ninja, a relatively new binary analysis tool. Students will hit the ground running with a fast paced comprehensive overview of Binary Ninja’s user interface before diving directly into the defining features of the tool: the Binary Ninja Intermediate Languages, or BNIL.
We will cover both the Low Level IL and Medium Level IL and why they are both superior to native disassembly for program analysis. From there, we will work in-depth with the Python API and explore how to develop plugins to serve as force multipliers in students’ analysis tasks; this will include techniques that are relatively unknown, such as automating creation of types and structures.
Finally, students will work with the various patching methods available in Binary Ninja, including the embedded Shell code C Compiler, to develop both exploits and shell code payloads from within Binary Ninja. Further advanced topics may be covered if time permits.
Minimum Course Requirements:
This training is tailored for those interested in reverse engineering
with at least a basic familiarity with an assembly language,
particularly x86/x64 or ARM. Additionally, some level of competence in
Python is expected. Basic knowledge of C/C++ will also be helpful.
What will be provided?
A USB drive containing the slide deck and all example scripts and binaries
A voucher for a free copy of Binary Ninja Personal edition (which can
also be upgraded to Commercial at a pro-rated price)
Josh Watson is a Senior Security Engineer at Trail of Bits and an
active member of the Binary Ninja community. He has published numerous
articles about reverse engineering with the Binary Ninja APIs and
released several open source plugins and tools. Due to his intimate
knowledge of its features and API, he is often confused for a Binary
For more information: