Using Hopper to Investigate an iOS Bug
Article Summary
Alexander Nikishin from Bumble's engineering team cracked open iOS 13's binary code with a disassembler to find a bug Apple couldn't fix for 8 months. What he discovered was a single misplaced bit in a keyboard mask.
When iOS 13 broke phone number autocomplete suggestions in Bumble and Badoo's registration flows, Apple's bug reports went nowhere. Nikishin used Hopper Disassembler to reverse engineer UIKit's private classes, diving into assembly code and bit manipulation to pinpoint exactly why UIPredictionViewController was failing for phone pad keyboards.
Key Takeaways
- Bug persisted from iOS 13 beta through 13.3 despite developer reports
- Hopper revealed a 12-bit mask (0x930) incorrectly disabled phone pad suggestions
- Method swizzling confirmed the fix before understanding root cause
- Assembly analysis showed UIKeyboardTypePhonePad caught as collateral damage
Critical Insight
A single incorrect bit in UIKit's keyboard type validation mask broke phone number autocomplete, discoverable only through reverse engineering the compiled framework.