swiftshield v4.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
- Instance, class and global properties will now be obfuscated, with the exception of properties under types that inherit from
Codableand classes exposed to Objective-C. For more information, check the limitations document.
Although we have lots of tests checking if property obfuscation is working correctly, we’re still not certain that we covered all edge cases. If you don’t feel like gambling on this, it might be better to use version
Copyright (c) 2019 SwiftRocks.