码迷,mamicode.com
首页 > 其他好文 > 详细

oc代码混淆

时间:2017-12-05 13:29:56      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:stat   ring   搜索   ict   数据   利用   pac   string   app   

混淆内容

1、混淆思路:利用宏定义进行混淆,混淆文件需要在需要混淆的文件中引用(或全局引用)

2、混淆内容:(橘黄色)

  公开变量  @property (nonatomic, strong) NSString  *gameName;

  私有变量 @interface XXXX () {

          NSString  *gameName;

      }

  类名    @interface ClassName ()

  方法名 

    公开 - (void)getUserName:(NSString *)name age:(NSInteger)age;

    私有 - (void)openFile:(NSString *)filePath size:(NSInteger)size {

      }

  文件名混淆(只混淆 .m 文件)

     UserInfo.h

     UserInfo.m

  字典中的key值(用于过滤混淆内容)

    [result objectForKey:@"status"]

    result[@"status"]

以上是需要混淆的内容,接下来说注意事项

公开变量:  @property (nonatomicstrong) NSString  *gameName;

  我们使用时会用到 self.gameName 、 _gameName 、- (void)setGameName:(NSString *)gameName.

  那么混淆时一个公开变量需要对应进行三次混淆。假定将 gameName 混淆为 gjkgnshd

    1、gjkgnshd

    2、_gjkgnshd

    3、setGjkgnshd (这里需要注意,gameName 的 set 方法为 setGameName , 变量名的首字母需大写,之前大写则不变)

私有变量:  一次直接混淆

类名:    一次直接混淆

方法名:   一次直接混淆  (这里需要注意 set 方法需要过滤掉,如果这里进行set方法混淆,会造成重复混淆,99.99%产生错误,因为在混淆公开变量的时候你已经混淆过了,但公开变量的set方法和参数有特定联系,所以必须在混淆公开变量时进行混淆)

文件名:  批量重命名即可

字典中的key值:混淆时一定要过滤掉字典中的key值 :(举个栗子 )

私有变量  @property (nonatomicstrong) NSString  *gameName;

字典key值  dict = @{@"gameName" : @"大逃杀"}    

   在你混淆 gameName -> gjkgnshd 时 ,下面为混淆结果

      @property (nonatomicstrong) NSString  *gjkgnshd; 

      dict = @{@"gjkgnshd" : @"大逃杀"}   

   当dict为客户端自定义的字典时不会产生影响,但当dict为服务器返回数据时,轻则取不到数据,重则崩溃。

      因为:返回结果为   {@"gameName" : @"大逃杀"}       客户端取值时为  dict[@"gjkgnshd"]  key不存在而引起错误。 

抱怨几句:这是我第一次做代码混淆,网上没有搜索到有关oc的混淆有实际意义的脚本或者软件,所以自己利用自己肤浅的python,勉强完成了这次混淆任务。这其中的坑有很多,相信看了这篇博客后,可以让初次尝试混淆的同行们躲过几个。话不多说,上代码

 

 

 

接下来就简单了 , 直接上代码

 

oc代码混淆

标签:stat   ring   搜索   ict   数据   利用   pac   string   app   

原文地址:http://www.cnblogs.com/z-z-z/p/7986106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!