swiftshield v4.2.1 releases: protects iOS apps against reverse engineering attacks
SwiftShield is a tool that generates irreversible, encrypted names for your iOS project’s objects (including your Pods and Storyboards) in order to protect your app from tools that reverse engineer iOS apps, like class-dump and Cycript.
🤖 Automatic mode (Swift only)
With the -automatic tag, SwiftShield will use SourceKit to automatically obfuscate entire projects (including dependencies). Note that the scope of SwiftShield’s automatic mode is directly related to the scope of Xcode’s native refactoring tool, which doesn’t refactor everything yet. While the specific cases on the document won’t be obfuscated, SwiftShield will obfuscate all Swift classes and methods that can be reverse-engineered. Take a look at the Example project to see SwiftShield in action!
🛡 Manual mode (Swift/OBJ-C)
If you feel like obfuscating absolutely everything – including typealiases and internal property names, you can also use Manual mode. This is the easiest way of running SwiftShield, but also the most time-consuming. When used, it will obfuscate properties and classes based on a tag of your choice at the end of its name. For example, after running SwiftShield in manual mode and a tag __s, the following code:
💥 Deobfuscating encrypted Crash logs
After successfully encrypting your project, it will generate an output folder containing a conversionMap.txt file containing with all the changes it made to your project. allowing you to pinpoint what an encrypted object really is.
You can use this file to automatically deobfuscate any kind of text-based crash file by running:
swiftshield -deobfuscate CRASH_FILE -deobfuscate-map PATH_TO_CONVERSION_MAP
- Improved how the SWIFTSHIELDED property is added – @strfn
- Fixed SwiftShield not handling files with escaped spaces correctly – @ptwoms
Copyright (c) 2019 SwiftRocks.