iOS攻防ios 逆向开发

《iOS防护06》代码混淆

2020-11-02  本文已影响0人  不仅仅是个程序猿

项目中一些关键的类名和方法名,我们可以通过混淆使类名和方法名变得无意义,以此来增加理解和逆向的难度。

创建工程

先创建一个名为 ManualConfusionDemo 的工程。

  1. 新建一个 UserInfo 类

UserInfo.m实现如下:

#import "UserInfo.h"

@implementation UserInfo

- (BOOL)isVipWithAccount:(NSString *)account {
    if ([account isEqualToString:@"123456"]) {
        return YES;
    }
    return NO;
}

@end
  1. 在ViewController.m 中调用 UserInfo 的方法

ViewController.m实现如下:

#import "ViewController.h"
#import "UserInfo.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    if ([[UserInfo new] isVipWithAccount:@"123456"]) {
        NSLog(@"UserInfo 是Vip");   //这里的UserInfo是字符串,不会被替换
    } else {
        NSLog(@"UserInfoA 不是Vip");   //这里的UserInfo不会被替换
    }
}

@end
  1. 创建预编译头文件 PrefixHeader.pch
截屏2020-11-02上午11.19.37.png
手动混淆

手动混淆是通过在PrefixHeader.pch宏定义来替换类名和方法名。

  1. 混淆类名

PrefixHeader.pch

#define UserInfo ABCDEF

这样的话项目中出现的 UserInfo 标识,就会被替换成 ABCDEF。

在Hopper在查看MachO文件,UserInfo 类的名称确实被替换。


截屏2020-11-02下午2.25.27.png
  1. 混淆方法名

PrefixHeader.pch

#define isVipWithAccount ABCDEF

注释:这里将方法名也定义成ABCDEF,与上面类名定义的相同,类似于ABCDEF这个类去调用它的ABCDEF方法。但是不同的类不可以定义成一个标识,会引起重复而不能通过编译。

在Hopper在查看MachO文件,isVipWithAccount 方法的名称确实被替换。


截屏2020-11-02下午2.49.17.png
总结
  1. 因为预编译文件打包后是拿不到的,所以对方在不知道你宏定义规则的情况下,是无法还原的。

  2. 定义的标识符中不能含有特殊符号,如 # @ 等

  3. 一般我们定义一个类文件,比如UserInfo,默认的UserInfo.h和UserInfo.m中的Class即是文件名UserInfo,事实上我们可以修改这个默认值。

UserInfo.h

#import <Foundation/Foundation.h>

@interface UserInfoClass : NSObject

- (BOOL)isVipWithAccount:(NSString *)account;

@end

UserInfo.m

#import "UserInfo.h"

@implementation UserInfoClass

- (BOOL)isVipWithAccount:(NSString *)account {
    if ([account isEqualToString:@"123456"]) {
        return YES;
    }
    return NO;
}

@end

调用的时候这样调用:
[[UserInfoClass new] isVipWithAccount:@"123456"]

混淆:

#define  UserInfoClass  ABCDEF
注意点
自动混淆工具
上一篇下一篇

猜你喜欢

热点阅读