iOS逆向工程(12)免越獄集成Reveal和Flex到任意APP

背景

  • Reveal 和 FLEX 都是非常強大的利器。
  • Reveal 可以查看APP的視圖,層次,動態修改空間位置等,是一款非常強大的界面調試工具利器。
  • FLEX 是應用內部調試工具,包括動態查看類,庫,沙盒,動態修改UI,等一款非常強大的分析利器。
  • 此篇文章是介紹了如何將這兩款工具,在非越獄機上,集成這兩款強大利器。

先演示下效果(抖音APP示例)

快速集成 - 步驟

  1. brew install ldid
  2. 通過腳本安裝Theos:https://github.com/bigsen/Theos-Script
  3. 安裝 MonkeyDev
git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
sudo ./md-install
  1. 下載工程后運行:https://github.com/bigsen/CrackeApp

目錄

  1. Reveal 和 FLEX 介紹
  2. 搭建開發環境 - Theos
  3. 搭建開發環境 - MonkeyDev
  4. 獲取脫殼后的 IPA
  5. 在IPA中植入 Reveal 和 Flex

1. Reveal 和 FLEX 介紹

(1)Reveal 是什么

  • Reveal 官方地址:https://revealapp.com
  • Reveal 是一個iOS程序界面調試工具,可以在Reveal上查看視圖的層級和修改控件的屬性,用來調試UI。
  • Reveal 允許開發者在不修改代碼、不重新構建項目、不重新部署應用程序的情況下就能夠調試iOS應用的用戶界面。

(2)Reveal 延長試用時間方法

  • 對于官網下載的Reveal,默認給予的是14天左右的試用時間。
  • 首先 https://revealapp.com/download/ 從官網下載reveal,并填寫自己(未注冊過)的郵箱。
  • 然后會收到一封郵件,包含試用的激活碼。
  • 打開reveal 輸入激活碼即可。
  • 試用到期后,把電腦時間調整到注冊日期之時,然后再打開reveal即可恢復試用時間。

(1)FLEX 是什么

  • FLEX官方地址:https://github.com/Flipboard/FLEX
  • Flipboard/ FLEX (Flipboard Explorer) 是 Flipboard 發布的應用內調試工具,開發者可在toolbar中查看和修改運行中的應用。

(2)FLEX 安裝

  • 可通過pod方式引入:pod 'FLEX', '~> 2.0'

(3)FLEX 功能:

  1. 查看、實時修改view(與Reveal相關功能類似,視覺驗證中非常有用)


  2. 監控網絡請求記錄(與Charles抓包功能類似)


  3. 沙盒內容查看(數據持久化內容)


  4. 查看App中所有的類以及所用到的系統Framework。


  5. 動態查看和修改NSUserDefaults值。


  6. 快速查看打印日志(來自NSLog)

  7. 動態修改對象屬性值。

  8. 動態調用實例和類方法。


2. 搭建開發環境 - Theos

(1)安裝方式一(自動)

演示:


(2)安裝方式二(手動)

1. 從 GitHub 上下載Theos
export THEOS=/opt/theos 
sudo git clone --recursive https://github.com/theos/theos.git $THEOS

小問題:git 克隆下來的theos,make packget install 如果提示提示缺少 _Prefix/NullabilityCompat.h 等文件,需要我們去https://github.com/theos/headers 把這個頭文件放到/opt/theos/include目錄中就行了。

sudo git clone https://github.com/theos/headers /opt/theos/include/
2. 配置ldid

ldid 是專門用來 名 iOS 可執行文件的工具,用以在越獄 iOS 中 代替 Xcode 自帶的 codesign。

  • 第一種方法:
brew install ldid
  • 第二種方法:
    http://joedj.net/ldid 下 ldid,把它放在“ /opt/theos/bin/ ”下,然后用以下命令賦予它可執行權限:
sudo chmod 777 /opt/theos/bin/ldid
3. dpkg-deb
  • deb 是越獄開發安裝包的標準格式,dpkg-deb 是一個用于操作 deb 文件的工具,有了這個工具,Theos 才能正確地把工程打包成為 deb 文件。

  • https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pldm.pl,將其重命名為 dpkg-deb 后,放到“/opt/theos/bin/”目錄下,然后用以下命令賦予其可執行權限:

sudo chmod 777 /opt/theos/bin/dpkg-deb

3. 搭建開發環境 - MonkeyDev

git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
sudo ./md-install
  • 這樣以后, 本地就有了MonkeyDev 開發功能, 可以在Xcode新建項目時,選擇MonkeyApp。

4. 獲取脫殼后的 IPA (3種方法)

第一種:
第二種:
第三種:
  • 通過越獄設備, 使用PP助手越獄版本, 下載對應APP到手機上。
  • 然后使用ifunbox,從/var/mobile/Containers/Bundle/Application 中找到,拷貝出來.app 包即可。
第四種:

通過PP助手是下載越獄ipa文件。


5. 在IPA中植入Reveal 和 Flex

到現在這一步我們已經有了:
  • FLEX 工具
  • Reveal 工具
  • MonkeyDev 環境
  • 脫殼后的 IPA文件
然后我們就可以正式開始我們的集成工作:

(1)新建 MonkeyDev 工程。

(2)替換 Reveal Framework 為自己電腦當前對應版本。

  • 使用自己電腦的RevealServer.framework替換掉/opt/MonkeyDev/frameworks下面的RevealServer.framework。
sudo rm -f -r /opt/MonkeyDev/Frameworks/RevealServer.framework
sudo cp -f -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework /opt/MonkeyDev/Frameworks/RevealServer.framework

(3)MonkeyDev 工程添加FLEX Pod依賴。

  • 打開 MonkeyDev 工程中的 Podfile,在target ' XXX Dylib' do
    里面填寫pod 'FLEX', '~> 2.0'。

(4)注冊監聽,初始化FLEXManager。

  • 導入頭文件。
  • 在CHConstructor里注冊DidFinish監聽,初始化FLEX。

(5)放入脫殼后的ipa到MonkeyDev工程。
然后運行MonkeyDev工程。

某些APP啟動會Crash,需要打開AntiAntiDebug.m,取消注釋這句話。
rebind_symbols((struct rebinding[1]){{"sysctl", my_sysctl, (void*)&orig_sysctl}},1);


文中Demo示例:https://github.com/bigsen/CrackeApp

http://www.lxweimin.com/p/db142e71ce9a

參考文章

參考書籍

  • 《iOS逆向工程》
  • 《iOS應用與逆向安全》

下一篇:iOS逆向工程(10)破解任意 APP HTTPS 加密

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容