iOS 二进制重排

news/2024/7/20 21:03:58 标签: ios, 二进制重排
  • 原理:减少page fault次数,将启动用到的代码都放到一个page里。

  • 操作:

    • 统计启动过程中用到的函数。

      • http://yulingtianxia.com/blog/2019/09/01/App-Order-Files/

    • Other C flag里加上-fsanitize-coverage=func,trace-pc-guard,C/C++/OC/block代码都能调试到。

      • func可以换成edge和bb。https://clang.llvm.org/docs/SanitizerCoverage.html#id12。

    • 自己声明下面的函数

  • #include <stdint.h>
    #include <stdio.h>
    #include <sanitizer/common_interface_defs.h>
    #include <dlfcn.h>
    
     void __sanitizer_cov_trace_pc_guard_init(uint32_t *start,
                                                        uint32_t *stop) {
        static uint64_t N;  // Counter for the guards.
        if (start == stop || *start) return;  // Initialize only once.
        printf("INIT: %p %p\n", start, stop);
        for (uint32_t *x = start; x < stop; x++)
            *x = ++N;  // Guards should start from 1.
    }
    
     void __sanitizer_cov_trace_pc_guard(uint32_t *guard) {
         if (!*guard) return; 
         void *PC = __builtin_return_address(0);
         Dl_info info;
         dladdr(PC, &info);
         printf("guard:%p 开始执行:%s \n", PC, info.dli_sname);
    }

  • 收集到符号信息后,可以把符号分行书写到自定义的order文件。

  • OC类函数-[+[开头可以直接写入,其他的要额外加一个下划线_,info.dli_sname会少一个下划线。

//order.order
-[ViewController viewDidLoad]
-[AppDelegate applicationSupportsSecureRestorableState:]
___29-[ViewController viewDidLoad]_block_invoke
__ZN1A4testEv
___29-[ViewController viewDidLoad]_block_invoke_2
  • 在build setting->Order file指定文件路径。

  • 注意!

  • +load因为触发时机比__sanitizer_cov_trace_pc_guard_init早,所以无法监听到,这个可以扫描mach-o文件查看哪些类有load,直接加上去。


http://www.niftyadmin.cn/n/5477121.html

相关文章

Centos Docker Oracle11g 密码过期修改

症状&#xff1a; Centos Oracle11g环境变量配置 如果没有配置环境变量&#xff0c;需要先配置Oracle环境变量&#xff0c;否则执行sqlplus时会提示&#xff1a;SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 配置方法&#xff1a; 第一步&a…

rust实现一个post小程序

主要是白天折磨了半天&#xff0c;无论如何post出去都不能成功&#xff0c;搞得我专门修改了一堆server的代码&#xff0c;以拦截任何访问服务器的数据&#xff0c;结果还是返回502&#xff0c;结果晚上回来一遍过&#xff0c;也真是奇怪的不行。先把一遍过的代码放出来&#x…

Xinstall助力提升用户体验:一键打开App用户页面

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地打开和使用App&#xff0c;提升用户体验&#xff0c;成为了开发者和广告主们亟待解决的问题。此时&#xff0c;Xinstall作为国内专业…

稀碎从零算法笔记Day42-LeetCode:分发糖果

题型&#xff1a;数组、贪心 链接&#xff1a; 来源&#xff1a;LeetCode 题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更…

2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互

文章目录 1 玩家配置2 物体配置3 添加视觉效果4 添加文字5 其他操作5.1 双面渲染5.2 替换图片 ​ 在开始操作前&#xff0c;我们导入先前配置好的预制体 MyOVRCameraRig&#xff0c;相关介绍在 《2024-04-03 NO.4 Quest3 手势追踪抓取物体-CSDN博客》 文章中。 1 玩家配置 &a…

【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

TSINGSEE青犀边缘计算AI智能分析网关V4客流统计算法的配置步骤及使用

TSINGSEE青犀AI智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为、烟火等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。硬件支持RTSP、GB28181协议、以及厂家私有协议接入&#xff0c;可兼容市面上常见的…

spring cloud gateway openfeign 联合使用产生死锁问题

spring cloud gateway openfeign 联合使用产生死锁问题&#xff0c;应用启动的时候阻塞卡住。 spring.cloud 版本如下 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><vers…