测试已测试 | ✗ |
语言语言 | Objective-CObjective C |
许可 | MIT |
发布日期上次发布 | 2020年1月 |
由 BrunoRocha,Bruno Rocha 维护。
SwiftShield 是一个工具,它为您的 Swift 项目类(包括您的 Pods 和 Storyboards)生成不可逆的加密名称,以保护您的应用程序免受像 class-dump 一样的反工程工具。例如,在运行 SwiftShield 后,以下类
class EncryptedVideoPlayer {
func start() {
let vc = ImportantDecryptingController()
vc.start()
}
}
变为
class djjck3KDxjs04tgbvb {
func start() {
let vc = aAAAa2nc0dfmDssf()
vc.start()
}
}
在成功加密项目后,SwiftShield 生成一个包含它对项目所有更改的 conversionMap.txt
文件,这样您就可以确定加密类到底是什么。
//
// SwiftShield
// Conversion Map
//
Classes:
ViewController ===> YytSIcFnBAqTAyR
AppDelegate ===> uJXJkhVbwdQGNhh
SuperImportantClassThatShouldBeHidden ===> GDqKGsHjJsWQzdq
警告:SwiftShield 会不可逆转地覆盖您所有的 .swift 文件,并将构建时间延长三倍。您应确保它仅在没有存储库的情况下并且在发布构建中运行。
使用 CocoaPods
use_frameworks!
pod 'SwiftShield'
请点击此处了解如何在项目中配置 SwiftShield 。
SwiftShield 是新的,尽管它工作得很好,但需要相当长的时间。它通过混淆类声明并触发一个构建来实现,这个构建将失败,并揭示类使用的地方,然后对其进行访问和混淆。这个过程会一直重复,直到项目成功构建。不幸的是,Swift 编译器有时不会一次性显示所有错误,需要几十次编译才能完全混淆目标。
正确的做法是让 SwiftShield 对 Swift 有一个完整的理解(就像它已经对类声明有了),这样文件就可以一次性进行混淆。这已经相当有效,但 Swift 的模块是这项技术尚未发布的主要原因。如果您想帮忙,可以查看 manual-parsing-obfuscation
分支。
SwiftShield 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE 文件。