SwiftShield 3.5.1

SwiftShield 3.5.1

测试已测试
语言语言 Objective-CObjective C
许可 MIT
发布日期上次发布2020年1月

BrunoRochaBruno Rocha 维护。



Swift 代码混淆器

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,我该如何处理崩溃日志/分析呢?

在成功加密项目后,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 文件。