Binary tool for obfuscating Mach-O apps on Apple platforms
Top 59.6% on sourcepulse
MachObfuscator is a programming-language-agnostic tool for obfuscating Mach-O binaries on Apple platforms, targeting developers and security researchers seeking to hinder reverse engineering efforts. It operates by transforming symbol names within Mach-O files without requiring source code access, offering a method to obscure Objective-C class names, selectors, and Swift reflection data.
How It Works
MachObfuscator functions as a binary symbolic obfuscator, directly manipulating Mach-O file structures. It identifies and obfuscates symbol names (like Objective-C class and method names) and other metadata within executables and libraries. The tool analyzes the entire dependency graph of an application bundle, distinguishing between obfuscable files within the bundle and unobfuscable external dependencies. It then applies a chosen "mangler" (e.g., ROT13 or random words) to symbol names and replaces them in the relevant Mach-O sections, including __objc_classname
, __objc_methname
, and LC_DYLD_INFO_ONLY
for export and binding information.
Quick Start & Requirements
./MachObfuscator <APP_BUNDLE|FILE> [OPTIONS]
obfuscate.sh
script.Highlighted Details
caesar
(ROT13) and realWords
(random words).Maintenance & Community
Licensing & Compatibility
Limitations & Caveats
MachObfuscator does not support binaries with a minimum Deployment Target of 12.X or run on macOS versions with a Deployment Target of 12.X or higher. It also does not support watchOS, tvOS, or Bitcode. Automatic code re-signing is not included; manual re-signing is required. Some features like Swift reflection obfuscation may cause issues with Swift versions >= 4.2.
2 years ago
1 day