扫描无用的类原理

静态扫描的原理

在iOS编译的产物 Mach-o文件中 __DATA __objc_classrefs 段记录了引用类的地址,__DATA __objc_classlist段记录了所有类的地址,取差集可以得到未使用的类的地址,然后进行符号化,就可以得到未被引用的类信息。 (PS:静态类获取的类会有误差,需要人工确认才可删除!)

方法介绍

  • 第一步 通过otool -v -s __DATA __objc_classrefs获取到引用类(明确用到的)的地址。
  • 第二步 通过otool -v -s __DATA __objc_classlist获取所有类的地址。
  • 第三步 用所有类信息减去引用类的信息,此时我们可以拿到未使用类的地址信息。
  • 第四步 通过nm -nm命令可以得到地址和对应的类名字。

 

转自:https://github.com/a20251313/unusedclass

posted @   黄增松  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2018-04-27 开发环境和发布环境切换以方便测试
点击右上角即可分享
微信分享提示