SlideShare a Scribd company logo
BinDbg: Easy Windows
Debugging for Binary Ninja
Dave Kukfa
https://kukfa.co
@kukfa_
whoami
● Dave Kukfa
● Corporate security engineer by day
● Hobbyist reverse engineer by night
● RIT CSEC Graduate
● SF Bay Area
● Blog: https://kukfa.co
● Twitter: @kukfa_
Disclaimer: This talk and all materials are being released on my own behalf, not on behalf of my employer
Binary analysis tools
● Gold standard: IDA Pro
○ $$$
○ Typically only justifiable by professionals
● Several recent challengers:
○ Radare
○ Hopper
○ Binary Ninja
● Binary Ninja is a powerful static analysis tool
○ Looking at the program’s disassembly without executing it
● I missed the dynamic (debugger) integrations that IDA had
○ So I set out to recreate it in Binja!
Source: https://binary.ninja/
Source: https://www.hex-rays.com/products/ida/
BinDbg
● Binary Ninja plugin that syncs a running debugger (WinDbg) to Binary Ninja
○ Combining static and dynamic analyses
○ Use the debugger’s information to supplement Binary Ninja’s analysis
○ Control the debugger within Binary Ninja
● This has been done before
○ snare’s Binjatron: https://github.com/snare/binjatron
○ Eric Hennenfent’s Binja Dynamics: https://github.com/ehennenfent/binja_dynamics
● Windows support on existing solutions is lacking
○ Because I primarily reverse PEs, I wanted to create an easy-to-use Windows solution
Primary features (1/4)
● Launch and control debugging sessions directly from Binary Ninja
● Syncs Binja disassembly graph with WinDbg instruction pointer
Primary features (2/4)
● Set breakpoints and move instruction pointer directly on Binja’s disassembly graph
Primary features (3/4)
● Highlight branch decisions on disassembly graph (see where jumps are going)
Primary features (4/4)
● Resolve vtable calls and vtable references (determine object types)
Demo
Lessons learned
● Lots of time spent wrestling with pykd
○ Just catch its exceptions and keep going ¯_(ツ)_/¯
● Determining object type using vtables is not 100% reliable
○ In the case of multiple inheritance, can’t just observe the first vtable and call it a day
● Windows is weird
○ Named pipes implementation
○ API and COM interfaces
● In hindsight, would have been easier to improve Windows support on existing tools
Questions?
https://github.com/kukfa/bindbg

More Related Content

PDF
Nimble - iOS dependency management
PPTX
.NET compiler platform codename Roslyn
PDF
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
PDF
Build a real app with react native
ODP
What's unique to Qt
PDF
Phonegap - Girl Geek Sydney
PDF
HackConf2015 - Ruby on Rails: Unexpected journey
PDF
Programming for non tech entrepreneurs
Nimble - iOS dependency management
.NET compiler platform codename Roslyn
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
Build a real app with react native
What's unique to Qt
Phonegap - Girl Geek Sydney
HackConf2015 - Ruby on Rails: Unexpected journey
Programming for non tech entrepreneurs

Similar to BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary Ninja (20)

PDF
The state of Jenkins pipelines or do I still need freestyle jobs
PDF
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
PDF
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
PDF
Drupal and contribution (2010 - 2011 / 2)
PDF
Headless Android
PPTX
Building lightning apps by Daniel Peter
PDF
VN Tech Seminor Vol.2 Docker Tutorial
PDF
Continuous Delivery: 5 years later (Incontro DevOps 2018)
PDF
Xamarin.android memory management gotchas
ODP
Advanced Video Production with FOSS
PDF
Devoxx : being productive with JHipster
PDF
Learning to Mod Minecraft: A Father/Daughter Retrospective
PDF
Bdd agile requirements
PDF
Drools & jBPM Workshop London 2013
PDF
Influx/Days 2017 San Francisco | Dan Vanderkam
PDF
Headless Android at AnDevCon3
PDF
Montreal.rb ruby debugging basics - march 20th 2012
PDF
How is Java / JVM built ? Back then and now...
PDF
UX Sprint Demo Process
PDF
Releaseflow: a healthy build and deploy process
The state of Jenkins pipelines or do I still need freestyle jobs
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
Drupal and contribution (2010 - 2011 / 2)
Headless Android
Building lightning apps by Daniel Peter
VN Tech Seminor Vol.2 Docker Tutorial
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Xamarin.android memory management gotchas
Advanced Video Production with FOSS
Devoxx : being productive with JHipster
Learning to Mod Minecraft: A Father/Daughter Retrospective
Bdd agile requirements
Drools & jBPM Workshop London 2013
Influx/Days 2017 San Francisco | Dan Vanderkam
Headless Android at AnDevCon3
Montreal.rb ruby debugging basics - march 20th 2012
How is Java / JVM built ? Back then and now...
UX Sprint Demo Process
Releaseflow: a healthy build and deploy process
Ad

More from JosephTesta9 (12)

PDF
BSides Rochester 2018: Chaim Sanders: Easily Deploying and Optimizing Open So...
PDF
BSides Rochester 2018: Chaim Sanders: How the Cookie Crumbles: Modern HTTP St...
PPTX
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
PDF
BSides Rochester 2018: Timothy Duffy: Civic and Humanitarian Open Source
PPTX
BSides Rochester 2018: Michael West: Sentry, Or: How I Learned To Stop Worryi...
PPTX
BSides Rochester 2018: Lee Kagan: Red and Blue Ping Pong
PPTX
BSides Rochester 2018: Jonathan Myers: IoT Malware Detection with Machine Lea...
PDF
BSides Rochester 2018: Issa Hafiri & Christian Halbert: IOT Devices (And Why ...
PDF
BSides Rochester 2018: Esteban Rodriguez: Ducky In The Middle: Injecting keys...
PPTX
BSides Rochester 2018: Drew Kirkpatrick: Open Source SAST and DAST Tools for ...
ODP
BSides Rochester 2018: Chris Partridge: Turning Domain Data Into Domain Intel...
PPTX
BSides Rochester 2018: Anthony DiDonato: Virtualization Based Security
BSides Rochester 2018: Chaim Sanders: Easily Deploying and Optimizing Open So...
BSides Rochester 2018: Chaim Sanders: How the Cookie Crumbles: Modern HTTP St...
BSides Rochester 2018: Justin Moore: Automated HTTP Request Repeating With Bu...
BSides Rochester 2018: Timothy Duffy: Civic and Humanitarian Open Source
BSides Rochester 2018: Michael West: Sentry, Or: How I Learned To Stop Worryi...
BSides Rochester 2018: Lee Kagan: Red and Blue Ping Pong
BSides Rochester 2018: Jonathan Myers: IoT Malware Detection with Machine Lea...
BSides Rochester 2018: Issa Hafiri & Christian Halbert: IOT Devices (And Why ...
BSides Rochester 2018: Esteban Rodriguez: Ducky In The Middle: Injecting keys...
BSides Rochester 2018: Drew Kirkpatrick: Open Source SAST and DAST Tools for ...
BSides Rochester 2018: Chris Partridge: Turning Domain Data Into Domain Intel...
BSides Rochester 2018: Anthony DiDonato: Virtualization Based Security
Ad

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
A Presentation on Artificial Intelligence
PPTX
Spectroscopy.pptx food analysis technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Approach and Philosophy of On baking technology
PPTX
Cloud computing and distributed systems.
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
sap open course for s4hana steps from ECC to s4
PDF
cuic standard and advanced reporting.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
NewMind AI Weekly Chronicles - August'25-Week II
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
A Presentation on Artificial Intelligence
Spectroscopy.pptx food analysis technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Approach and Philosophy of On baking technology
Cloud computing and distributed systems.
Assigned Numbers - 2025 - Bluetooth® Document
“AI and Expert System Decision Support & Business Intelligence Systems”
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The AUB Centre for AI in Media Proposal.docx
Network Security Unit 5.pdf for BCA BBA.
sap open course for s4hana steps from ECC to s4
cuic standard and advanced reporting.pdf
Encapsulation_ Review paper, used for researhc scholars
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Empathic Computing: Creating Shared Understanding
MIND Revenue Release Quarter 2 2025 Press Release
Spectral efficient network and resource selection model in 5G networks
NewMind AI Weekly Chronicles - August'25-Week II

BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary Ninja

  • 1. BinDbg: Easy Windows Debugging for Binary Ninja Dave Kukfa https://kukfa.co @kukfa_
  • 2. whoami ● Dave Kukfa ● Corporate security engineer by day ● Hobbyist reverse engineer by night ● RIT CSEC Graduate ● SF Bay Area ● Blog: https://kukfa.co ● Twitter: @kukfa_ Disclaimer: This talk and all materials are being released on my own behalf, not on behalf of my employer
  • 3. Binary analysis tools ● Gold standard: IDA Pro ○ $$$ ○ Typically only justifiable by professionals ● Several recent challengers: ○ Radare ○ Hopper ○ Binary Ninja ● Binary Ninja is a powerful static analysis tool ○ Looking at the program’s disassembly without executing it ● I missed the dynamic (debugger) integrations that IDA had ○ So I set out to recreate it in Binja! Source: https://binary.ninja/ Source: https://www.hex-rays.com/products/ida/
  • 4. BinDbg ● Binary Ninja plugin that syncs a running debugger (WinDbg) to Binary Ninja ○ Combining static and dynamic analyses ○ Use the debugger’s information to supplement Binary Ninja’s analysis ○ Control the debugger within Binary Ninja ● This has been done before ○ snare’s Binjatron: https://github.com/snare/binjatron ○ Eric Hennenfent’s Binja Dynamics: https://github.com/ehennenfent/binja_dynamics ● Windows support on existing solutions is lacking ○ Because I primarily reverse PEs, I wanted to create an easy-to-use Windows solution
  • 5. Primary features (1/4) ● Launch and control debugging sessions directly from Binary Ninja ● Syncs Binja disassembly graph with WinDbg instruction pointer
  • 6. Primary features (2/4) ● Set breakpoints and move instruction pointer directly on Binja’s disassembly graph
  • 7. Primary features (3/4) ● Highlight branch decisions on disassembly graph (see where jumps are going)
  • 8. Primary features (4/4) ● Resolve vtable calls and vtable references (determine object types)
  • 10. Lessons learned ● Lots of time spent wrestling with pykd ○ Just catch its exceptions and keep going ¯_(ツ)_/¯ ● Determining object type using vtables is not 100% reliable ○ In the case of multiple inheritance, can’t just observe the first vtable and call it a day ● Windows is weird ○ Named pipes implementation ○ API and COM interfaces ● In hindsight, would have been easier to improve Windows support on existing tools