0%

说在前面

  • 注意事项:此文仅限于技术交流,请不要做违法的事情。对于那些居心叵测的人根据此文造成违法的事情与本人无关。此文章不得转载!!!如果APP方需要删除,请发邮件xxoo@hotmail.com,谢谢。
  • 推荐先阅读macOS逆向之跳过XtraFinder试用界面,这篇文章各种工具的使用介绍的更详细。
  • 开发环境:macOS11.2.3、Xcode11.7、IDA7.0、class-dump、超级右键2.1.9(写这篇文章时的最新版)
  • 具备技能:X64汇编基础、OC基础知识、iOS逆向基础知识
  • 为什么使用:
    • macOS系统本身并不支持右键新建文件,本人每次通过iTerm2,使用touch命令新建文件,这样就很麻烦,效率很低。
      1
      2
      3
      cd 目标目录
      touch test.txt
      touch test.md
    • 如果要用VSCode打开一个文件夹,需要首先打开VSCode,然后再从里面选取对应的文件夹。一两次操作还行,次数多了,真的是浪费时间。
    • 超级右键是macOS上最强大的右键菜单管理工具,拥有丰富的功能,可以提升使用体验。针对上面两个问题,超级右键一键解决,看下图是不是很爽。
  • 目标结果:使用了一段时间,正爽的时候,突然给你来个弹框,提示你试用到期了,让你付费使用。作为一个技术,难道还能被技术难住了,于是走向了逆向之路。
阅读全文 »

说在前面

  • 网络上关于怎样做App启动优化的文章太多了,有些是对自己项目有用的,有些是对自己项目无用的。本文就是看了很多文章,经过自己的筛选和总结而成的。
  • 本文讲解在NXPlayer这款App中怎样做的启动优化,大家可以从AppStore上下载体验。
  • 启动优化,顾名思义就是缩短App启动的时间。本文从动态库转静态库和二进制重排两个方向入手,详细描述怎样做启动优化的。
  • 项目纯Swift编写,使用Cocoapods管理三方库。
阅读全文 »

说在前面

  • 注意事项:此文仅限于技术交流,请不要做违法的事情。对于那些居心叵测的人根据此文造成违法的事情与本人无关。此文章不得转载!!!如果APP方需要删除,请发邮件xxoo@hotmail.com,谢谢。
  • 开发环境:macOS11.2.3、Xcode12.4、IDA7.0、class-dump、XtraFinder1.6.1
  • 具备技能:X64汇编基础、OC基础知识
  • 目标结果:XtraFinder是macOS上超级好用的资源管理器软件,对它爱不释手。一直使用的是无限试用(非付费)版本,每次重启都会有下面这个等待30s的弹框,今天决定去除试用弹框。
阅读全文 »

说在前面

  • iOS14的适配集中在用户隐私和安全方面,包含相册、位置、本地网络、广告标识符、剪切板等隐私权限的适配。前段时间做了相册权限和本地网络权限的适配,相册权限的适配比较简单,不在本文讲解范围内,本文主要讲解本地网络适配。
  • 苹果官方没有给出具体API查询本地网络权限是否开启,这给开发者带来了难度。本文采用间接的方式在需要本地网络权限的时候,提示是否开启权限,如果没有开启权限就不能执行相应的操作。本文讲解在NXPlayer这款App中怎样适配本地网络权限的。
    阅读全文 »

前言

  • 起因:
    • App端需要实现WebDAv客户端功能,搭建一台WebDAV服务器满足客户端的增删改查需求。
    • 云端现有的WebDAV服务器不能满足自己的需要
  • 从零开始:
    • 下载centOS服务器镜像
    • 安装centOS服务器系统
    • 安装指定版本nginx
    • 在centOS服务器上安装WebDAV服务
  • 环境
    • macOS10.14.6
    • Parallels Desktop 14,虚拟机软件,安装centOS服务器
    • centOS7.6,centOS操作系统
    • SecureCRT,centOS操作系统的macOS客户端
阅读全文 »

说在前面

  • 本文警告:此文仅限于技术交流,如果损害了App方利益,请发邮件xxoo@hotmail.com,谢谢。
  • 开发工具:
    • Reveal查看App界面
    • Frida跟踪方法调用过程
    • class-dump导出头文件
    • IDA分析Mach-O文件
    • theos开发tweak插件
    • restore-symbol恢复符号表
  • 本文目标:去除开屏广告、下载广告、页内广告
阅读全文 »

说在前面

  • iOS逆向开发中,当我们命中方法断点后,需要打印方法调用者、方法名、参数。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Process 42106 resuming
    Process 42106 stopped
    * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x00000001008f7bfc OCTest` __hidden#17_ at __hidden#40_:126
    Target 0: (OCTest) stopped.
    (lldb) po $x0 // 打印方法调用者
    <ViewController: 0x101e1d000>
    (lldb) po (char *)$x1 // 打印方法名
    "performLoginWithUserName:password:encryptType:completion:"
    (lldb) po $x2 // 打印第一个参数
    lyy2020@163.com
    (lldb) po $x3 // 打印第二个参数
    L163.2020
    (lldb) po $x4 // 打印第三个参数
    1
    (lldb) po $x5 // 打印第四个参数
    1
  • 每次都做相同的操作显得特别啰嗦,浪费时间又浪费精力,有没有比较简单的方法呢,答案是有的。
  • 我们可以自定义脚本,断点命中后,执行一个自定义命令自动打印以上参数,大大提高逆向的效率,何其快哉。
阅读全文 »

前言

  • 如果某个App耗电量过大会导致手机发烫,会导致电池寿命变短,会导致用户体验不好。
  • 本文给出Energy impact、Energy Log、sysdiagnose三种耗电检测方案,帮你找到耗电的代码,帮你提高用户体验
阅读全文 »