Skip to content

Latest commit

Β 

History

History
122 lines (104 loc) Β· 6.77 KB

File metadata and controls

122 lines (104 loc) Β· 6.77 KB

Binary Ninja Debugger UI Mockup - Bookmark Feature

Main Debugger Sidebar Layout

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Debugger                                              [Γ—]    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ β”Œβ”€ Debug Controls ─────────────────────────────────────────┐ β”‚
β”‚ β”‚ [β–Ά] [⏸] [⏹] [πŸ“„] [πŸ”„]    [Launch] [Attach] [Connect]    β”‚ β”‚
β”‚ β”‚  Play Pause Stop Step  Restart                          β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                             β”‚
β”‚ β”Œβ”€ Tab Controls ──────────────────────────────────────────┐ β”‚
β”‚ β”‚ [Registers] [Breakpoints] [Bookmarks]                   β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                             β”‚
β”‚ β”Œβ”€ Bookmarks Tab ─────────────────────────────────────────┐ β”‚
β”‚ β”‚ Description        β”‚ TTD Position β”‚ Address    β”‚ Time   β”‚ β”‚
β”‚ β”‚ ──────────────────────────────────────────────────────  β”‚ β”‚
β”‚ β”‚ Main entry point   β”‚ 12A:B4       β”‚ 0x401000   β”‚ 14:30  β”‚ β”‚
β”‚ β”‚ Critical section   β”‚ 15C:A2       β”‚ 0x402500   β”‚ 14:35  β”‚ β”‚
β”‚ β”‚ Before API call    β”‚ 18F:DC       β”‚ 0x403100   β”‚ 14:42  β”‚ β”‚
β”‚ β”‚ Exception handler  β”‚ 1A2:3F       β”‚ 0x404800   β”‚ 14:48  β”‚ β”‚
β”‚ β”‚ Loop iteration 5   β”‚ 1C8:91       β”‚ 0x402200   β”‚ 14:52  β”‚ β”‚
β”‚ β”‚                    β”‚              β”‚            β”‚        β”‚ β”‚
β”‚ β”‚ [Add Bookmark...]  [Remove]  [Jump To]                 β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Context Menu (Right-click on bookmark)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β–Ά Jump To Bookmark     β”‚
β”‚ ─────────────────────  β”‚
β”‚ ✎ Edit Description...  β”‚
β”‚ πŸ—‘ Remove Bookmark     β”‚
β”‚ ─────────────────────  β”‚
β”‚ πŸ“‹ Copy Address        β”‚
β”‚ πŸ“‹ Copy TTD Position   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Add Bookmark Dialog (Ctrl+M or menu action)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Add Bookmark                         [Γ—]   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                            β”‚
β”‚ Current Position:                          β”‚
β”‚   Address: 0x401000                        β”‚
β”‚   TTD Position: 12A:B4                     β”‚
β”‚                                            β”‚
β”‚ Description:                               β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ Main function entry point              β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                            β”‚
β”‚              [Cancel]    [Add Bookmark]    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Main Menu Integration

Debugger Menu:
β”œβ”€ Debug Adapter Settings...
β”œβ”€ ──────────────────────────
β”œβ”€ Launch                    F6
β”œβ”€ Attach To Process...
β”œβ”€ Connect to Debug Server
β”œβ”€ ──────────────────────────
β”œβ”€ Pause                     F5
β”œβ”€ Resume                    F9
β”œβ”€ Go Backwards         Shift+F9
β”œβ”€ ──────────────────────────
β”œβ”€ Toggle Breakpoint         F2
β”œβ”€ Add Bookmark         Ctrl+M  ← NEW!
β”œβ”€ ──────────────────────────
└─ Settings...

Key Features Demonstrated:

  1. Integrated Tab Layout: Bookmarks appear as a natural third tab alongside Registers and Breakpoints

  2. Comprehensive Information: Each bookmark shows:

    • User-friendly description
    • TTD position for time-travel navigation
    • Memory address for fallback navigation
    • Timestamp for organization
  3. Multiple Access Methods:

    • Direct tab access for bookmark management
    • Global Ctrl+M shortcut for quick bookmark creation
    • Context menu for bookmark operations
  4. Visual Consistency: Follows existing Binary Ninja debugger UI patterns:

    • Same table layout as breakpoints
    • Consistent button styling and placement
    • Standard dialog patterns
  5. User-Friendly Workflow:

    • One-click bookmark creation
    • Double-click navigation
    • Clear visual feedback and organization

Navigation Behavior:

When double-clicking a bookmark or using "Jump To Bookmark":

  1. TTD Navigation: Attempts !tt 12A:B4 command to set TTD position
  2. Fallback Navigation: If TTD fails, navigates to memory address
  3. Visual Feedback: Updates main view to show bookmarked location
  4. Error Handling: Shows informative messages if navigation fails

This provides a complete time-travel bookmark system that integrates seamlessly with the existing Binary Ninja debugger interface.