Overview
Hopper is a commercial disassembler that offers:- Native Mach-O binary support
- Excellent Objective-C and Swift class extraction
- Interactive control flow graphs
- Built-in decompiler (pseudo-code generation)
- Fast analysis and responsive UI
Hopper is particularly strong for Objective-C analysis and provides a more polished UI experience compared to open-source alternatives.
Features for iOS Analysis
Automatic Class Detection
Hopper automatically detects and organizes Objective-C and Swift classes:Class Browser
The left sidebar displays all detected classes in a hierarchical tree:
- Objective-C classes with full method lists
- Swift classes (with mangled names that can be demangled)
- Protocols and categories
Decompilation
Hopper’s pseudo-code decompiler generates C-like code from assembly:- Assembly View
- Pseudo-Code View
Control Flow Graphs
Visualize program flow with interactive CFGs:Navigate the Graph
- Zoom with mouse wheel
- Click basic blocks to view disassembly
- Follow branches to understand logic flow
String Analysis
String Search
View → Strings to see all strings in the binary:
- API endpoints
- Encryption keys
- Error messages
- Debug strings
String References
Right-click any string to see:
- Which functions use it
- How it’s used (passed to function, compared, etc.)
Workflow Tips
Initial Analysis Workflow
Configure Analysis Options
When loading the binary:
- Select the correct architecture (arm64 for modern iOS)
- Enable “Objective-C” analysis
- Enable “Swift” if the app uses Swift
- Click “OK” to start analysis
Wait for Analysis
Hopper will:
- Parse the Mach-O structure
- Identify functions and entry points
- Extract Objective-C classes and methods
- Generate cross-references
Initial analysis typically takes 1-5 minutes depending on binary size.
Keyboard Shortcuts
Navigation
Navigation
View Modes
View Modes
Alt+Shift+A- Assembly viewAlt+Shift+P- Pseudo-code viewAlt+Shift+G- Control flow graphAlt+Shift+H- Hexadecimal view
Analysis
Analysis
N- Rename symbolShift+Cmd+X- References to this address;- Add commentP- Create procedure (function)
Advanced Techniques
- Python Scripting
- Type Library
- Debugging Integration
Automate analysis with Python scripts:
Comparison with Other Tools
- vs. Ghidra
- vs. IDA Pro
- vs. Binary Ninja
Hopper Advantages
- Faster, more responsive UI
- Better macOS integration
- Cleaner pseudo-code output
- Easier to learn
Ghidra Advantages
- Free and open-source
- More powerful scripting (Java/Python)
- Better collaboration features (Ghidra Server)
- More extensive analyzer options
- Cross-platform (Windows/Linux/macOS)
Recommendation: Use Hopper for quick analysis and UI-focused work. Use Ghidra for team projects and complex automation.
Practical Use Cases
Finding Jailbreak Detection
Extracting API Endpoints
Analyzing Encryption
Find Crypto Imports
Look for:
- CommonCrypto functions (
CCCrypt,CCKeyDerivationPBKDF) - OpenSSL functions
- Security.framework methods
Trace Data Flow
- Identify where sensitive data originates
- Follow through encryption functions
- See where encrypted data goes
Best Practices
Save Your Work
Save Your Work
- File → Save to preserve your analysis
- Saved files (.hop) contain all comments, labels, and custom types
- Regular backups recommended for large projects
Use Labels Effectively
Use Labels Effectively
- Rename functions immediately when you understand them (
Nkey) - Use descriptive names:
checkJailbreaknotsub_1000048a0 - Add comments for complex logic (
;key)
Organize Your Analysis
Organize Your Analysis
- Use bookmarks for important locations
- Create meaningful function names
- Document assumptions in comments
Combine with Dynamic Analysis
Combine with Dynamic Analysis
- Use Hopper for static understanding
- Use Frida/LLDB to confirm behavior at runtime
- Iterate between static and dynamic analysis
Limitations
Related Tools
Ghidra
Free alternative with powerful scripting
IDA Pro
Industry-standard professional tool
Frida
Dynamic instrumentation companion
LLDB
Debugging companion for runtime analysis