iOS马甲包混淆代码细节

目前iOS机审AI已经非常智能了,代码部分尤其是属性和方法我们应该注意什么呢?

也许有的人只是简单全局替换一小部分比较长的名称,或者用工具做一些简单全局替换,结果就是4.3或者2.3.1,严重点的封号。如何避免,关键是细节上做到位,以下是部分关键点的示例总结:

混淆前

@interface Node : NSObject

@property(nonatomic, copy) NSString *title;
@property(nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger userClickCount;

- (void)reloadData;
+ (BOOL)sendMsg;
- (BOOL)sendMsg;
- (void)refreshData:(UILabel *)label byName:(NSString *)name;

@end

混淆后

普通做法

常见的混淆有以下缺陷:

  1. 混淆不彻底:title是UIViewController的属性,reloadData是UITableView的方法,其实只要不他们的子类都是可以混淆的
  2. 命名怪异生僻:大量字母数字下划线单独随机组合,来避免命名冲突,没有实际意义
  3. 没有做方法类型区分:类方法和对象方法虽然同名,混淆完无法区分处理,只是简单一起替换
  4. 混淆不够完整:方法名多参或带有block时,第二个以上参数没处理
@interface Node : NSObject

@property(nonatomic, copy) NSString *title;
@property(nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSInteger f_34App;

- (void)reloadData;
+ (BOOL)selcouthBottomPronk;
- (BOOL)selcouthBottomPronk;
- (void)mesonoxianDepone:(UILabel *)label byName:(NSString *)name;

@end

模拟人工处理

需要做到什么底部才算合格呢

我认为应该做到以下几点:

  1. 命名尽可能短常见或者利用系统常见名称例如title、view
  2. 不同的类,可以适当复用相同命名
  3. 相同的类,静态方法和对象方法独立混淆,最好不要简单全局替换,这样会造成比重没有改变
  4. 方法名的所有参数应该都混淆,只改第一个远远不够
@interface Node : NSObject

@property(nonatomic, copy) NSString *subTitle;
@property(nonatomic, copy) NSString *user;
@property(nonatomic, assign) NSInteger count;

- (void)refresh;
+ (BOOL)sendInfo;
- (BOOL)pushData;
- (void)reset:(UILabel *)label with:(NSString *)name;

@end

好的工具完全能做到这些

参考

WHC_ConfuseSoftware
DiffHelper
STCObfuscator
iOS_NQConfuseTool
ZFJObsLib
520coding/confuse

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值