美文网首页
iOS逆向之应用瘦身

iOS逆向之应用瘦身

作者: 木子心语 | 来源:发表于2020-02-22 20:47 被阅读0次
    • 上一篇文章地址: iOS逆向之FRAMEWORK/DYLIB调试

    • 如果瘦身是一种美,我们可以吃到美味的水果;如果瘦身是一种水,我们可以喝到甘甜的清水.

    • 我们本篇文章介绍iOS逆向应用瘦身.

    • 我们如何把一个胖应用进行瘦身,通过本篇文章进行详细介绍.

    • 应用瘦身是针对iOS逆向的应用进行瘦身,这里与正向开发进行瘦身还存在区别.

    • 请持续关注iOS逆向文章.

    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. 如果大家喜欢文章,欢迎持续关注 ~_~

    相关文章

      网友评论

          本文标题:iOS逆向之应用瘦身

          本文链接:https://www.haomeiwen.com/subject/jsdrqhtx.html