Peter's Den

悲观者只见到机会后面的问题,乐观者却看见问题后面的机会

Hello,在下2012年涉足Apple Developer,至今在iOS/OSX领域混迹多年,本职工作以iOS为主


精通Objective-c/Swift,对Python/Java/.Net/JavaScript也略懂一二,会与大家在这里记录分享

iOS逆向开发

iOS逆向开发

现在越狱的同学越来越少了,因为苹果经过这么多年借鉴越狱开发者的功能使得iOS本身已经很方便,以至于用户没有太大的必要去越狱了。

但是作为一名iOS开发者,逆向开发还有必要的,不管是学习他人的App还是自己想做一些功能,例如微信抢红包啥的。

下面所提到的所有逆向都支持安装在非越狱的iPhone上

准备工具

  • 一台已越狱的iPhone(用来砸壳):本文用的是iOS13.2.2
  • yololib:https://github.com/gaoshilei/yololib
  • frida
    • 越狱手机安装: 源:https://build.frida.re
    • mac安装:sudo pip3 install frida
    • 下载python脚本:https://github.com/AloneMonkey/frida-ios-dump
      • 配置:sudo pip3 install -r requirements.txt –ignore-installed six
  • ssh:越狱必备工具
  • iresign:重签工具

砸壳

  • 配置代理:iproxy 2222 22
  • 登录ssh:ssh -p 2222 root@127.0.0.1 (密码默认是alpine)
  • 查看手机已安装app:dump.py -l
  • 砸壳:dump.py (app 名称及bundleID)

不出意外,砸壳成功,当前目录就会产生一个ipa

可以通过otool查看砸壳是否成功

otool -l Payload/xxx.app/xxx | grep crypt

cryptid为0就是成功了

cryptid 0

注入

yololib <mach-o> <framework/xxx.framework/xxx>
#注意,这里是framework的mach-o必须是相对路径
#当出现启动crash,报无法加载framework时,可以通过machOView来看路径是否正确

查看签名情况

codesign -vv -d xxx.framework

ipa重签的时候记得需要把frameworks下面的所有重新签名先

codesign -fs "Apple Distribution: xxxx (xxxx)" xxx.framework
//若app有plugIns,务必删除
最近的文章

iOS启动优化之二进制重排

启动优化 关于启动优化,在客户端开发中是一个老生常谈的话题,图片压缩/删除代码等方式都已经老掉牙了,一般的面试中也回答这些方案,在众多面试者中也无亮点。 下面的文章主要来讲讲,利用二进制重排的方案,来做优化启动时间。概念 在讲重排之前,我们需要了解几个概念。 虚拟内存和物理内存 物理内存:内存条(硬件)上的地址就叫物理地址,以前的计算机都是通过CPU访问物理内存拿到数据的,这样存在安全问题(金手指?),而且随着软件发展速度快于硬件速度,物理内存也越发不够…… ...…

iOS继续阅读
更早的文章

iOS代码测试覆盖率(一)初探

Code Coverage 我们平时开发过程中,有多少同学有纠结过这些问题: 我们写的代码或功能,测试同学有没有测试过呢? 测试同学是否把所有case都跑过了呢? 测试同学有没有漏测了什么功能呢? 我们设计的代码有没有多余的? 其实这些疑问不是怀疑自己或他人的工作能力,只是我们希望自己的代码能够被全部测试,从而不会出现线上的故障,一个体量庞大的App若在线上出现一个故障,影响面有多广可想而知。 像之前苹果没有封杀热修复的时候,若我们的代码覆盖率能够做到...…

iOS继续阅读