简体中文 | English
专业的 Swift 代码混淆工具
通过重命名代码标识符来混淆 Swift 源码,在不改变代码逻辑的前提下保护您的源代码
已通过 100+ SDK 的严格验证,无论您的代码多复杂,都能精准识别并完美混淆
支持大型项目、复杂依赖关系,为您的代码提供企业级安全保护
经过生产环境实战检验,您可以放心在正式项目中使用
官方网站: https://www.swiftyshield.com
前往官网下载最新版本的 SwiftyShield
✅ 已通过 Apple 公证 - 应用已通过 Apple 官方公证,确保安全性和可靠性
深入了解 SwiftyShield 的技术实现、核心混淆场景及设计思路:
👉 拒绝"裸奔"!一款基于 SourceKit-LSP 的 Swift 代码混淆工具 (SwiftyShield)
- 智能混淆: 仅改变代码名称,不影响代码逻辑
- 全局声明混淆: 混淆类名、方法名、属性名等全局标识符
- 临时变量混淆: 可选的临时变量混淆功能
- 增量混淆: 支持基于历史记录的增量混淆,旧代码沿用历史映射,仅混淆新增代码
- 模块选择: 自由选择需要混淆的模块
- 忽略列表: 支持配置忽略的协议名称和变量名
- 编译模式: 支持 Debug 和 Release 两种编译模式
- 关联模块智能处理: 自动处理模块间的依赖关系
- 混淆历史: 本地保存所有混淆操作记录
- 详细信息: 记录混淆时长、混淆数量、模块信息等
- 导入导出: 支持混淆记录的 JSON 导入导出
- 快速复用: 基于历史记录进行增量混淆
- Apple ID 登录: 使用 Apple ID 安全登录
- Premium 会员: 升级 Premium 解锁更多功能
- 个性化定制: Premium 用户可定制混淆功能
- 打开 SwiftyShield 应用
- 点击 Apple 登录 按钮
- 使用您的 Apple ID 完成登录验证
💡 提示:需要登录后才能使用混淆功能
- 在首页点击选择
.xcworkspace或.xcodeproj文件 - 选择编译模式:
- Debug 模式:开发调试使用
- Release 模式:发布版本使用
- 点击开始编译
编译成功后,系统将自动进入模块选择页面:
- 查看所有可混淆的模块列表
- 点击模块可展开查看包含的文件列表
- 选择需要混淆的模块(支持全选/全不选)
- 系统会自动处理模块间的关联关系
- 点击 下一步 继续
📌 注意:如果模块 A 被模块 B 关联,选择 A 时会自动勾选 B
在混淆配置页面设置以下选项:
- 开启或关闭临时变量混淆功能
- 点击"展示例子"查看混淆效果示例
- 添加不需要混淆的协议名称
- 支持添加多个协议名称
- 输入限制:仅支持英文字符,不超过 40 个字符
- 添加不需要混淆的变量名称
- 支持添加多个变量名称
- 输入限制:仅支持英文字符,不超过 40 个字符
- 选择一个文件作为解密实现的写入位置(
String的decrypt扩展方法会写入该文件) - 开启后,混淆过程中会使用 AES-128-CBC 对所有明文字符串进行加密,且每次都会随机生成加密密钥
- 注意:运行时解密会带来额外性能开销,请根据业务场景按需开启
- 开启后,混淆过程中会基于 AST 移除代码中的所有类型注释(非正则匹配/替换)
- 删除范围由语法树精准界定,仅移除注释,不会误删任何业务或可执行代码
- 开启后,混淆过程中会同时混淆文件名与文件夹名
- 该功能的映射会写入本次混淆记录;后续基于同一条记录做增量混淆时,不会因路径再次被重命名而产生不必要的工程结构差异
- 注意:若项目不支持 Xcode 的 Folder-backed 特性,混淆完成后需要将已混淆的文件手动导入到工程中
配置完成后点击 下一步
如果当前项目存在历史混淆记录,系统会询问是否基于历史记录进行增量混淆:
- 选择父记录:新代码将被混淆,旧代码沿用历史映射
- 不选择:执行全新混淆,所有代码重新生成混淆映射
💡 提示:增量混淆可以保持代码的一致性,避免已混淆代码被重复修改
混淆过程中会实时显示:
- Global Declarations 进度:全局声明混淆进度
- Temp Declarations 进度:临时变量混淆进度(如果开启)
- 移除注释进度:移除注释处理进度(如果开启)
- 加密字符串进度:字符串加密处理进度(如果开启)
- 混淆日志:实时输出混淆操作日志
混淆过程中可以点击 停止混淆 按钮中断操作
混淆完成后,点击 下一步 查看结果
在首页点击 混淆历史记录 入口,可以:
- 查看所有混淆操作记录
- 按 Scheme 分组展示
- 查看详细的混淆信息(时长、数量、模块等)
- 导出混淆记录为 JSON 文件
- 复制 JSON 到剪贴板
- 删除不需要的记录
- 导入历史记录
⚠️ 重要:所有混淆记录保存在本地,请定期备份
- 中国大陆用户新增支付宝支付
- 新增加密信息导入
- 优化部分体验
- 优化部分 UI
- 新增多语言支持,目前支持英语、简体中文、繁体中文、韩语、日语
- 修复问题:彻底解决开启字符串混淆后导致 Multipart 网络请求崩溃、长文本转义字符失效的问题
- 优化 UI 界面
- 优化
CodingKeyscase 的属性绑定 - 新增明文字符串加密功能
- 新增文件名及文件夹路径混淆功能
- 新增基于 AST 移除代码内所有注释(不限注释类型)功能
- 新增明文字符串的拆分和混淆功能
⚠️ 定制版本 - 不公开下载:此版本不公开下载,如有需要请联系
- 优化功能:忽略未参与编译代码的混淆
- 优化 sourcekit 强行 indexing 没有参与编译代码而导致的崩溃
如有任何问题或建议,欢迎通过以下方式联系我们:
- 联系邮箱: swiftyshield@outlook.com
A: 不会。SwiftyShield 只改变代码的标识符名称,不改变代码逻辑,因此不会影响代码功能。
A: 不可以。因为无法确定您是否对混淆后的代码做出了改动,所以无法自动还原。我们建议使用 Git 来管理代码版本,在混淆前保留原始代码。
A: 混淆记录中包含了所有的映射关系可供查看。您可以在混淆历史记录中查看混淆前后标识符的详细对应关系。
A: 支持 Swift 5.0 及以上版本。
A: 可以,但建议仅混淆您自己的代码。
A: 完成支付后,Payment ID 会发送到您的注册邮箱,请注意查收(可能需要几分钟)。
A: 如果你的 Model 遵循 Codable 协议,则不需要额外处理,SwiftyShield 会自动处理。否则,你需要自定义一个 protocol,在混淆之前将该 protocol 的名字添加到忽略协议列表中,这样就不会破坏映射关系。