zoukankan      html  css  js  c++  java
  • iPhone手机越狱-逆向砸壳-代码注入

    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. 编写注入代码
    5. 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命令连接手机: 

    ssh root@xxx.xxx.xxx.xxx(ip)

    默认密码是: alpine

    示例:

     

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

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

    ps -e | grep XiaoAiLite

    运行示例:

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

    4. 找到应用document沙盒地址

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

    cycript -p XiaoAiLite

    示例:

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

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

    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文件进行签名:

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

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

    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 应用二进制路径

    例如:

    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拷贝到电脑上

    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指令导出头文件:

    class-dump -H XiaoAiLite.decrypted -o Headers 

    示例:

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

    三、代码注入

    1. Theos安装与配置

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

    brew install ldid
    brew install fakeroot
    brew install dpkg

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

    cd /opt

    在opt目录clone Theos源码

    sudo git clone --recursive https://github.com/theos/theos.git

    修改权限

    sudo chown -R $(id -u):$(id -g) theos 

    终端中修改环境变量

    vi ~/.bash_profile

    添加一下两行

    export THEOS=/opt/theos
    export PATH=/opt/theos/bin/:$PATH

    启用配置文件

    source ~/.bash_profile

    2. 创建tweak逆向工程

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

     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版本: 

    xcodebuild -showsdks 

    示例:

    添加SDKVERSION信息

    SDKVERSION = 12.1

    查看设备ip, 添加THEOS_DEVICE_IP信息

    THEOS_DEVICE_IP = 10.224.202.59

    修改后的makefile文件内容

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

    ARCHS = armv7 armv7s arm64

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

    4. 编写注入代码

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

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

    这里以Hook AppDelegate中的

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

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

    %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后会出现一个弹窗

  • 相关阅读:
    js的event对象 详解
    RestSharp使用详解(1)调用阿里巴巴开放存储服务
    RestSharp使用详解(2)RestSharp的BUG和不足
    WF实例学习笔记:(2)通过Workflow 调用 WCF Data Services 获取数据
    译文:SQL Azure客户端瞬态错误处理最佳实践
    Windbg 基本命令
    RestSharp使用详解(3)OSS文件上传的问题
    Transient Fault Handling and Retry Logic: 瞬间错误处理——重试
    推荐一本免费的Node.js电子书(台湾)
    CSS导航菜单应用滑动门技术的玻璃效果菜单
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/13792220.html
Copyright © 2011-2022 走看看