iOS逆向之应用瘦身

2020-02-22  本文已影响0人  木子心语

1.应用瘦身

1. 大多数情况下,如果你的应用中引用了很多的库,资源文件,也有可能无用的代码,开发的应用就会变成胖应用.

2. 我们应该对应用包进行优化了.优化的目的是 节省用户流量,提高用户下载速度.

注意
苹果规定如果应用包大小超过150MB必须使用WiFi环境下载,手机流量则不能再下载应用.

3. 千万级别的应用,一般吧应用包大小优化到最低限制.项目中业务层次比较多,应用包含有的内容就会比较多,比普通应用优化更困难.

4. 如果应用包过大,用户体验不会太好,由于下载慢,也影响升级效率.如果我们不进行优化,用户可能错过你开发的应用.

这里,只是引了一个应用瘦身的话题,正向开发的你,可是要考虑一下开发应用瘦身优化问题.

本篇文章不过多介绍瘦身优化,我会重新开一片专栏进行介绍iOS优化系列的文章.

本篇文章主要介绍iOS逆向应用如何瘦身调试,加快逆向开发调试效率.

2.瘦身小故事

我曾经开发过一款 广告拦截 项目.如果你还没有接触过,我就在这里介绍一下.

我们正向开发应用,从应用开发到上线流程,想必你应该是知道的.

笔者进行应用打包的时候,发现这个架构只支持RM64,也就是只支持iPhone5s以上设备,也就是广告拦截的框架不再支持iPhone5s以下设备.

这样架构减少了,你的应用包大小也会减少一半.

苹果把你的应用包上传应用再次压缩,就是上传到AppStore下载的应用.

3.如何瘦身调试

我们还用以前的代码demo TEST项目

1. 我把源码贴在这里

viewController.m

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong)UIButton *revealBtn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self.view addSubview:self.revealBtn];
}

-(UIButton*)revealBtn{
    if (!_revealBtn) {
        _revealBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _revealBtn.frame = CGRectMake(100,100, 100,40);
        _revealBtn.backgroundColor = [UIColor redColor];
        [_revealBtn setTitle:@"测试" forState:UIControlStateNormal];
        [_revealBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [_revealBtn addTarget:self action:@selector(revealClick) forControlEvents:UIControlEventTouchUpInside];
    }
    return _revealBtn;
}

-(void)revealClick{
    
    NSLog(@"hello");
}

@end

2. 我们进行打包生成ipa包,大家应该知道如何打包,这里不过多的描述.

3. 找到TEST.ipa包

4. 解压ipa包,找到TEST可执行文件

5. 我们通过查看TEST的架构

我们可以看到TEST架构有armv7 和 arm64两种架构模式.

6. 我们通过Hopper查看一下TEST可执行文件描述


我们可以看到两种模式,一种ARM v7,一种AArch64.

7. TEST可执行文件的大小为169KB

我们通过架构瘦身,看一下TEST文件大小会不会减少.

8. 我们对TEST进行瘦身

9. 瘦身后的TEST架构文件大小

10. 如果你是大项目的可执行文件调试,加载的内容比较多,所以需要你把文件进行瘦身后加载,会加快文件的读取速度.

注意
其实这是应用到了lipo 命令,如果大家有时间可以了解一下lipo的具体使用方式.

4.总结

1. 本篇文章主要介绍的是:我们平常开发中要进行应用瘦身,通过应用瘦身会提高用户的体验.

2. 文章没有过多的篇幅介绍如何正向开发瘦身优化,主要介绍逆向应用瘦身调试.

3. lipo命令的使用,通过lipo命令我们可以实现其他更有用的功能.

4. 如果大家喜欢文章,欢迎持续关注 ~_~

上一篇下一篇

猜你喜欢

热点阅读