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后會出現一個彈窗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM