文档Objective-C 混淆
Objective-C 混淆
预计阅读时间:15 分钟
概述
CodeFog 对 Objective-C 项目提供全面的混淆支持,包括类名、方法名、属性名、协议名等。 本文档介绍 Objective-C 项目的最佳混淆实践。
支持的混淆类型
类名 (@interface)
分类名 (Category)
协议名 (@protocol)
方法名
属性名 (@property)
实例变量
局部变量
参数名
混淆效果示例
头文件 (.h)
混淆前
@interface UserManager : NSObject
@property (nonatomic, strong) NSString *userName;
@property (nonatomic, assign) BOOL isLoggedIn;
- (void)loginWithUsername:(NSString *)username
password:(NSString *)password;
- (void)logout;
- (BOOL)checkPermission:(NSString *)permission;
@end混淆后
@interface ZFJObj_8xK9m : NSObject
@property (nonatomic, strong) NSString *zfj_4nM2k;
@property (nonatomic, assign) BOOL zfj_7pX3j;
- (void)zfj_9kL4n:(NSString *)zfj_2mN8x
zfj_5jK9p:(NSString *)zfj_3xM7k;
- (void)zfj_6nP2m;
- (BOOL)zfj_8kX4n:(NSString *)zfj_9pM3k;
@end最佳实践
1. 备份项目
混淆前使用 Git 提交或手动备份项目
2. 配置第三方库白名单
将 CocoaPods 引入的库前缀加入白名单:AF、SD、MJ、YY 等
3. 排除 JSON 模型类
使用 JSONModel、YYModel、MJExtension 的模型类需要加入白名单
4. 检查 Runtime 调用
NSClassFromString、NSSelectorFromString 引用的类和方法需要排除
5. 完整测试
混淆后在真机上完整测试所有功能
注意事项
- •Storyboard/XIB 中的类名引用会自动更新
- •plist 文件中的类名引用会自动更新
- •使用 KVC/KVO 的属性需要特别注意
- •Method Swizzling 相关方法需要加入白名单