逆向(一)

最近重拾逆向,整理一下最新实战方法,这篇主要整理了需要配置的环境和安装的软件,后面会陆续介绍相关的使用和其他相关概念

越狱

把家里的一台闲置6sPlus拿来作为越狱机了,系统为iOS11.4.1,没有仔细研究目前不同的系统版本越狱后会有什么差异,个人建议还是尽量找一个可越狱的最高系统版本,防止以后随着Depoyment Target版本升高而无法安装App Store包

基本概念

完美越狱

iphone重启后软件依然正常使用,iOS9.1之后再无完美越狱

不完美越狱

iphone重启后软件无法正常使用,需要重新越狱,当然现在使用的主流越狱工具app都自带一键重新越狱,也并不麻烦

工具

  • 爱思助手
    刚开始尝试的是爱思助手,里面有一键越狱工具,目前支持iOS10-12.1.2,内部使用的是electra工具来进行的越狱,按照操作指引,越狱成功!
    一张图片
    接下来就是痛苦的时刻了,装afc2报错,cycript报错,Cydia Substrate报错,直接原地爆炸,各种找资料,找解决办法,得出结论恢复未越狱环境,重新用其他工具越狱,这里 会教你如何恢复用electra来越狱的环境。

    恢复好环境,换工具。。。

  • unc0ver
    按照官网指引,

    • 打开xcode,新建一个工程
    • 连接要越狱的真机
    • 登陆开发者账号随便填写一个identifier,自动生成证书和provisionfiles
      一张图片
    • 从官网下载最新的ipa文件
    • 用从官网下载iOS App Signer签名工具签名,证书勾选选择xcode生成的证书,点击Start
      一张图片
    • 打开xcode->Window->Devices and Simulators
      一张图片
    • 点击左下角+,安装重签名后的ipa
    • 安装完毕后手机会有一个unc0ver app,打开,点击蓝色越狱按钮
      一张图片
    • 一系列的步骤结束后,Cydia出现,越狱成功

    Tips:免费账号签名的证书只有7天有效期,建议有条件的还是用付费个人账号,或者企业账号签名App,不然到期之后又需要重签。那有什么关系呢?由于现在都是不完美越狱,手机重启后就需要用unc0ver重新一键越狱,证书过期会导致unc0ver无限闪退,所以只有充钱才能变强

  • CheckRa1n

    • 也是主流越狱方式,精力关系没有尝试

配置开发环境

添加Cydia源

由于自带的源可能不包含所需的开发者工具,所以需要添加一些第三方源,这里推荐几个:

  • 雷锋源:https://apt.abcydia.com
  • 小苹果:http://apt.cydiabc.top
  • XLsn0w: https://slsn0w.github.io/tweak

手机安装

AFC2

一个能读取手机系统全路径的插件,否则用IFunBox或者爱思工具查看系统文件路径时会显示不全,展示的目录不能从/开始,可能只能media开始

  • 在Cydia中搜索“AFC2 iOS11~13系统路径”
    一张图片
  • 安装,重启SpringBoard

Cycripy

一个必备的调试工具,这里是官网简介

  • 同样的方法在Cydia中搜索Cycript
    一张图片
  • 安装

Reveal2Loader

一个必备的App UI界面分析工具

  • 同样的方法在Cydia中搜索Reveal2Loader
    一张图片
  • 安装
  • 打开手机->设置->Reveal,讲需要调试的app 打开
    一张图片
    一张图片

AppSync Unfied关闭签名

关闭iOS签名,可以随意安装ipa

  • Cydia中搜索AppSync
    一张图片

CrackerXI+

脱壳工具
一张图片

若手机是iOS11及以上建议用此工具,下图是常用工具及可使用的对应版本

一张图片

Mac上安装

Reveal客户端

这里推荐这里下载绿色版到mac

  • 打开Mac端的Reveal,可能会报错提示版本问提
    一张图片

    • 解决办法:
    • 打开/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework
    • 复制framework下的RevealServer复制到电脑桌面并重名为Reveal2Loader.dylib
    • 将Reveal2Loader.dylib复制到移动设备的/Library/MobileSubstrate/DynamicLibraries目录下,替换掉原来的动态库
    • 重启Reveal即可

iFunBox

一个能读取、操作手机目录文件的工具,爱思助手也有这个功能,大同小异

  • 官网直接下载安装即可
    一张图片

配置usbmuxd

端口映射工具,用usb来实现ssh登陆,从而用usb连接代替tcp来传输数据,大大提高效率

  • 下载工具包,运行tcprelay.py脚本

  • python tcprelay.py -t 22(被替换的端口):80880(替换端口)
    一张图片

  • 本地再需要ssh到手机就只需要ssh [email protected] -p 80880

  • 通常会配合公钥配置到服务端的方式来更加简单实现免密码登陆

theos

提供tweak模版,hook代码在此编写,提供hook的动态库生成,动态库注入能力

  • 安装ldid
bew intall ldid
  • 新增环境变量到~/.bash_profile
export THEOS=~/theos
export PATH=$THEOS/bin:$PATH
  • 环境变量立即生效
source ~/.bash_profile
  • 下载theos
git clone --recursive https://github.com/theos/theos.git $THEOS

class-dump

能把Mach-O文件的class信息dump出来,生成.h头文件

  • 点这里 下载下来可执行文件
  • 将可执行文件放入/usr/local/bin目录
  • 若无执行权限需加chmod +x /usr/local/bin/class-dump
  • 用法
class-dump  -H  Mach-O文件路径(脱壳后的文件)  -o  头文件存放目录

MachOView

一款图形化界面查看、分析Mach-O文件的工具

一张图片

Hopper Disassembler

图形化反编译工具,将Mach-O二进制文件反编译成汇编代码,绿色版下载链接
一张图片