前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iPhone手机越狱-逆向砸壳-代码注入

iPhone手机越狱-逆向砸壳-代码注入

作者头像
周希
发布2020-10-19 17:46:13
1.9K0
发布2020-10-19 17:46:13
举报
文章被收录于专栏:APP自动化测试APP自动化测试

iPhone手机越狱

逆向砸壳

代码注入

工具下载 操作越狱

安装待逆向应用(app) 使用OpenSSH连接手机 找到应用二进制文件地址 找到应用document沙盒地址 拷贝砸壳工具(dumpdecrypt.dylib)到document目录 砸壳 使用class-dump导出头文件

Theos安装与配置 创建tweak逆向工程 Tweak工程配置 编写注入代码 Tweak工程编译、打包、安装

  1. 工具下载
  2. 操作越狱
  3. 安装待逆向应用(app)
  4. 使用OpenSSH连接手机
  5. 找到应用二进制文件地址
  6. 找到应用document沙盒地址
  7. 拷贝砸壳工具(dumpdecrypt.dylib)到document目录
  8. 砸壳
  9. 使用class-dump导出头文件
  10. Theos安装与配置
  11. 创建tweak逆向工程
  12. Tweak工程配置
  13. 编写注入代码
  14. Tweak工程编译、打包、安装

一、iPhone手机越狱

1. 工具下载

目前13以上系统还没有完美越狱的方案,可以临时使用checkra1n方案对手机进行越狱:

下载地址: 点我下载

直接安装即可

2. 操作越狱

打开checkra1n

点击start按引导设置手机进入恢复模式

仔细看下步骤说明,再点start设置手机进入DFU模式

开始自动越狱进程

越狱成功后,手机上会多出checkra1n和Cydia两个app

注意: 非完美越狱手机重启后会失效,如果手机重启了需要重新越狱一次

二、逆向砸壳

1. 安装待逆向应用(app)

把待逆向的app安装到手机上(例如: 小爱同学), 并打开应用(需保持应用在前台开启状态)

2. 使用OpenSSH连接手机

在Cydia中下载安装OpenSSH

查看手机ip地址: xxx.xxx.xxx.xxx

打开终端,使用ssh命令连接手机:

代码语言:javascript
复制
ssh root@xxx.xxx.xxx.xxx(ip)

默认密码是: alpine

示例:

3. 找到应用二进制文件地址

在ssh连接中使用指令查询应用二进制文件地址:

代码语言:javascript
复制
ps -e | grep XiaoAiLite

运行示例:

记录下应用二进制文件地址,后面会用到

4. 找到应用document沙盒地址

在ssh连接中使用cycript注入目标进程:

代码语言:javascript
复制
cycript -p XiaoAiLite

示例:

如果提示找不到cycript指令,到cydia搜索安装一下

ssh连接中使用OC代码查询沙盒地址:

代码语言:javascript
复制
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]

示例:

记录下应用document沙盒地址,后面会用到

5. 拷贝砸壳工具(dumpdecrypt.dylib)到document目录

下载dumpdecrypted源码: https://github.com/stefanesser/dumpdecrypted

打开一个新的终端进入dumpdecrypted源码路径,使用make指令进行编译

检查有生成: dumpdecrypted.dylib文件

对生成的dylib文件签名

打开电脑上的钥匙串,找到自己的开发者证书, 复制证书名称(一般证书名称格式: "Mac Developer: 你的开发者邮箱")

在终端中使用codesign指令对dumpdecrypted.dylib文件进行签名:

代码语言:javascript
复制
codesign -f -s "证书名称(一般证书名称格式:  "Mac Developer: 你的开发者邮箱")" dumpdecrypted.dylib 

在终端中使用scp指令将签名后的dumpdecrypted.dylib文件拷贝到应用沙盒目录

代码语言:javascript
复制
scp dumpdecrypted.dylib root@10.224.202.59://var/mobile/Containers/Data/Application/DB5D7297-CCE6-4275-866F-4EC04F4A55FC/Documents

示例:

6. 砸壳

(如果还在cycript交互环境,用ctrl+z退出到root连接)

在ssh连接中使用以下指令进行砸壳

DYLD_INSERT_LIBRARIES=应用documents沙盒路径/dumpdecrypted.dylib 应用二进制路径

例如:

代码语言:javascript
复制
DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/323F1DF8-E8E8-48DC-911B-56DDBEAD25A0/Documents/dumpdecrypted.dylib /var/containers/Bundle/Application/35DE68F0-52C1-47B9-8D19-0C711BB78AB9/XiaoAiLite.app/XiaoAiLite

示例:

砸壳成功后root路径下会生成一个xxx.decrypted文件(这里我们生成的是: XiaoAiLite.decrypted)

可以在ssh连接中使用ls指令检查是否有生成:

使用scp将生成的XiaoAiLite.decrypted拷贝到电脑上

代码语言:javascript
复制
scp root@10.224.202.59:/var/root/XiaoAiLite.decrypted /Users/zhouxi/Documents/Xiaomi/Code/utils/dumpdecrypted

示例:

7. 使用class-dump导出头文件

安装class-dump

下载class-dump.dmg文件, 下载地址: http://stevenygard.com/projects/class-dump/

打开class-dump.dmg,将的class-dump文件拷贝到电脑的/usr/local/bin目录下

在终端输入class-dump检查可以显示class-dump帮助信息

在之前拷贝的XiaoAiLite.decrypted文件统计目录创建一个Headers文件夹

在终端中使用class-dump指令导出头文件:

代码语言:javascript
复制
class-dump -H XiaoAiLite.decrypted -o Headers 

示例:

在Headers文件夹中查看导出的头文件

三、代码注入

1. Theos安装与配置

安装Theos之前需要安装dpkg、fakerroot、ldid三个依赖库, 安装指令如下

代码语言:javascript
复制
brew install ldid
brew install fakeroot
brew install dpkg

打开终端进入/opt路径, 如果根目录没有opt目录就新建一个

代码语言:javascript
复制
cd /opt

在opt目录clone Theos源码

代码语言:javascript
复制
sudo git clone --recursive https://github.com/theos/theos.git

修改权限

代码语言:javascript
复制
sudo chown -R $(id -u):$(id -g) theos 

终端中修改环境变量

代码语言:javascript
复制
vi ~/.bash_profile

添加一下两行

代码语言:javascript
复制
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH

启用配置文件

代码语言:javascript
复制
source ~/.bash_profile

2. 创建tweak逆向工程

打开终端进入要存放工程的目录,执行Theos创建项目指令:

代码语言:javascript
复制
 nic.pl

示例:

选择iPhone/tweak, 输入: 15

然后依次输入ProjectName/PackageName/AuthorName/目标BundleID/目标二进制文件名

3. Tweak工程配置

Tweak工程包含HookXiaoai.plist、Makefile、Tweak.x、control四个文件

control文件记录基本信息,可以按需要修改或者添加,比如加上公司主页或者博客地址

HookXiaoai.plist文件记录Hook目标应用的bundleID

Makefile是编译脚本

使用指令查询mac上iOS SDK版本:

代码语言:javascript
复制
xcodebuild -showsdks 

示例:

添加SDKVERSION信息

代码语言:javascript
复制
SDKVERSION = 12.1

查看设备ip, 添加THEOS_DEVICE_IP信息

代码语言:javascript
复制
THEOS_DEVICE_IP = 10.224.202.59

修改后的makefile文件内容

备注: 如果需要自己配置指令集可以按需要添加指令集信息:

代码语言:javascript
复制
ARCHS = armv7 armv7s arm64

Tweak.x文件是编写注入代码用

4. 编写注入代码

代码注入的方式是从导出的头文件中找到需要Hook的方法,修改或者注入自己的逻辑

代码的写法可以看下Tweak.x文件里面的说明

这里以Hook AppDelegate中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

为例子,我们加一个弹窗, 以下是代码

代码语言:javascript
复制
%hook AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    BOOL awesome = %orig;
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告"
    message:@"你的程序被篡改啦!!!"
    delegate:nil
    cancelButtonTitle:@"好" otherButtonTitles:nil];
    [alert show];
    return awesome;

}

%end

执行编译指令: make

执行打包指令: make package

执行安装指令: make install

安装过程中需要输入密码, 默认是alpine

如果一切正常,打开app后会出现一个弹窗

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、iPhone手机越狱
    • 1. 工具下载
      • 2. 操作越狱
      • 二、逆向砸壳
        • 1. 安装待逆向应用(app)
          • 2. 使用OpenSSH连接手机
            • 3. 找到应用二进制文件地址
              • 4. 找到应用document沙盒地址
                • 5. 拷贝砸壳工具(dumpdecrypt.dylib)到document目录
                  • 6. 砸壳
                    • 7. 使用class-dump导出头文件
                    • 三、代码注入
                      • 1. Theos安装与配置
                        • 2. 创建tweak逆向工程
                          • 3. Tweak工程配置
                            • 4. 编写注入代码
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档