阅读 376

iOS逆向工程操作指令

① 使用SSH WIFI 方式连接iOS设备(密码登录)

ssh root@ip
复制代码

默认密码是alpine

② 使用USB方式SSH连接iOS设备(密码登录)

// 将22端口映射到本地的10010端口
iproxy 10010 22

// 通过本地请求转发到10010端口
ssh -p 10010 root@127.0.0.1
复制代码

输入默认密码 alpine 即可连接成功

③ 使用USB连接SSH免密码登录iOS设备

// 第一步:将本地电脑的公钥文件拷贝到iOS设备上(拷贝时需要输入密码)
// (如果iOS设备的/var/root/.ssh文件夹不存在,则手动创建.ssh文件件)
scp -P 10010  ~/.ssh/id_rsa.pub root@localhost:~/.ssh

// 第二步:使用密码登录到iOS设备,并且cd进入到.ssh文件夹
ssh root@localhost -p 10010

// 第三步:将.ssh文件中的id_rsa.pub文件内容,追加到authorized_keys文件尾部
// 如果authorized_keys文件不存在,会自动创建该文件
cat id_rsa.pub >> authorized_keys

// 第四步:删除.ssh文件夹中的id_rsa.pub文件
rm id_rsa.pub

// exit退出之后,重新使用以下命令即可免密码登录
ssh root@localhost -p 10010
复制代码

④ 使用frida-ios-dump砸壳

第一步:先安装pythonpip

第二步frida-ios-dump是基于frida的,所以先要在手机和电脑上安装frida

Mac上安装frida的命令:
sudo pip install frida
或者 
sudo pip install frida –upgrade –ignore-installed six

iPhone上安装frida的方法:
打开Cydia->软件源->编辑->添加,输入build.frida.re,添加软件源后,搜索安装Frida即可
复制代码

如果出现ImportError: No module named paramiko

安装pyinstaller

pip install pyinstaller
复制代码

安装frida-tools

python3 -m pip install frida-tools
复制代码

如果还有其他报错:ImportError: No module named 'xxx'
直接:sudo pip install 'xxx'

第三步:终端cd到下载的frida-ios-dump-master文件夹中,修改dump.py文件中配置信息

// 根据实际情况修改以下配置信息
User = 'root'
Password = 'alpine'
Host = 'localhost'
// 当前映射端口
Port = 10010
复制代码

第四步:电脑连上iOS设备之后,执行以下命令,查看当前手机安装的App

// 使用python文件查看
./dump.py -l
复制代码

第五步:执行以下命令,脱壳你想要的App

./dump.py [Display name] #或者
./dump.py [Bundle identifier]
复制代码

dump成功后会在你电脑当前文件夹生成app.ipa   

ipa后缀名改为zip,解压之后,得到App的可执行二进制文件。使用以下命令可以查看文件的加密情况

// 使用otool命令
otool -l WeChat | grep crypt
// 输出
cryptoff 16384
cryptsize 138199040
cryptid 0
复制代码

其中cryptid0表示非加壳程序

⑤ 使用MachOView预览二进制文件

将脱壳的应用二进制文件拖入MachOView中,就可以查看App的大致代码

⑥ 使用class-dump导出Mach-O文件信息

class-dump 用来dump目标文件的class信息的工具。它利用Objective-C语言的Runtime的特性,将存储在mach-O文件中的@interface@protocol信息提取出来,并生成对应的.h文件

下载地址

、打开终端输入

open /usr/local/bin
复制代码

、把dmg文件中的class-dump文件复制到/usr/local/bin

、更改权限:终端输入

sudo chmod 777 /usr/local/bin/class-dump
复制代码

、将砸完壳的应用ipa后缀名改为zip之后解压,得到Payload文件夹

用终端输入命令class-dump -H [.app文件的路径] -o [输出文件夹路径]

class-dump -H /Users/mac/Desktop/Payload/Kt.app -o /Users/mac/Desktop/Payload
复制代码

参考链接

⑦ 使用Reveal 预览App

第一步:在手机的Cydia应用上下载并安装Reveal Loader插件,并在iOS系统设置首页中找到Reveal选项,将想要预览的App开关打开

第二步:下载电脑版Reveal官网地址

第三步:配置Reveal文件

找到应用中的iOS Library -> RevealServer.framework -> RevealServer

RevealServer 二进制文件重命名为 libReveal.dylib

一、使用iFunBox找到手机根目录的Library文件夹,新建一个名为RHRevealLoader文件夹,将刚才重命名的libReveal.dylib文件放到里面

二、将刚才电脑上的RevealServer.framework文件,使用iFunBox拷贝到手机根目录下的System -> Library -> Frameworks 文件夹下

重启手机之后,就可以预览App的布局视图了

完美越狱手机重启后不受影响
非完美越狱手机需要重新越狱

⑧ Cycript调试正在运行的App

第一步:通过Cydia安装Cycript插件

第二步:通过ps -A 命令查看手机上所有正在运行的进程

第三步:使用 cycript -p [进程id 或者 进程名称] 进入调试模式

Cycript支持OCC++JSjava的混合语法

使用自定义封装的cy文件方式:

1. 将cy文件放到手机的usr -> lib -> cycript0.9 文件夹中

2. SSH连上iOS设备,进入cycript调试模式后输入 @import 文件名

⑨ 使用theos注入代码

第一步:通过brew安装ldid

brew install ldid
复制代码

第二步:修改电脑根目录下的.bash_profile文件,配置theos环境变量

# 将theos安装在根目录下的theos文件夹中
export THEOS=~/theos
# 将theos的可执行目录配置为全局路径
export PATH=$THEOS/bin:$PATH
复制代码

修改完.bash_profile文件后,在命令行执行source ~/.bash_profile 使配置生效

第三步:使用以下终端命令,下载theos工具源代码,并放在~/theos目录下

git clone --recursive https://github.com/theos/theos.git $THEOS
复制代码

第四步:创建deb插件项目

1. 在桌面创建一个文件夹,并cd进入文件夹 

2. 在终端执行 nic.pl 

NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/activator_listener
  [3.] iphone/application_modern
  [4.] iphone/application_swift
  [5.] iphone/cydget
  [6.] iphone/flipswitch_switch
  [7.] iphone/framework
  [8.] iphone/library
  [9.] iphone/notification_center_widget
  [10.] iphone/notification_center_widget-7up
  [11.] iphone/preference_bundle_modern
  [12.] iphone/theme
  [13.] iphone/tool
  [14.] iphone/tool_swift
  [15.] iphone/tweak
  [16.] iphone/tweak_with_simple_preferences
  [17.] iphone/xpc_service
复制代码

选择iphone/tweak类型的项目,上面的序号为15,所以输入15

根据指示依次输入项目名、包名、作者名、以及要注入代码的App bundle identifier

PS:包名获取方式:

1、使用 cycript -p [进程id 或者 进程名称] 进入调试模式

2、执行 [[NSBundle mainBundle] bundleIdentifier] 即可得到输出

第五步:编写tweak项目

1、打开刚刚创建的iphone/tweak项目,在makefile文件顶部添加以下代码

export THEOS_DEVICE_IP=127.0.0.1
export THEOS_DEVICE_PORT=10010
复制代码

当前使用的是usb方式连接的手机,映射的端口号是10010

2、在Tweak.x文件中编写hook代码,格式如下:

%hook ClassName

- (id)initWithFrame:(struct CGRect)arg1 {
	return nil;
}

%end
复制代码

3、编写完成后,开始编译并执行程序

3.1、cd进入tweak项目目录

3.2、执行make命令编译

3.3、执行make package 打包项目

3.4、执行make install 将项目安装到手机上

3.5、手机会自动重启Springboard,完成后打开App,即可看到效果

卸载手机上的tweak插件项目

通过iFunBox,找到手机上Library -> MobileSubstrate -> DynamicLibraries

删除文件夹中的 xxtweak.dylibxxtweakplist 两个文件,xxtweak为刚刚创建的tweak项目名

⑩ 使用logify命令将头文件转成.x文件

// 使用 ">" 表示覆写文件   如果是 ">>" 表示追加内容
logify  *.h > *.x
复制代码
文章分类
iOS
文章标签