使用IPAPatch免越獄除錯別人的APP
現在大家都開始使用MonkeyDev來除錯別人的APP了,但是越牛逼的框架使用起來越繁瑣,畢竟功能跟易用性是呈反比的。但是對於簡單的滲透來說,用IPAPatch還是方便一些。
首先從github上下載IPAPatch,然後解壓縮,發現就是一個iOS的工程檔案,先看一下他的檔案結構:
├── Assets
│ ├── Dylibs
│ ├── Frameworks
│ │ └── RevealServer.framework
│ ├── Resources
│ └── app.ipa
├── IPAPatch
│ ├── IPAPatchBypassAntiDebugging.h
│ ├── IPAPatchBypassAntiDebugging.m
│ ├── IPAPatchEntry.h
│ ├── IPAPatchEntry.m
│ ├── Info.plist
│ └── Vendors
│ └── fishhook
├── IPAPatch-DummyApp
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Info.plist
│ ├── ProjectConfigurationWarning.cpp
│ ├── ProjectConfigurationWarning.hpp
│ └── main.m
├── IPAPatch.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ └── xcuserdata
│ └── xcuserdata
│ └── youssef.xcuserdatad
├── LICENSE
├── README.md
├── Temp
│ ├── Payload
│ │ └── app-resign.app
│ └── __MACOSX
│ └── Payload
└── Tools
├── create_ipa.sh
├── options.plist
├── optool
├── patch.sh
└── restore-symbol
我們可以看到,在Assets資料夾下,可以放入脫殼的app.ipa,這裡有兩點要注意,首先必須是脫殼的ipa,其次必須重新命名成app.ipa.
Assets資料夾下面的Frameworks資料夾裡,可以放入需要重新打包進APP的framework,這裡我放了RevealServer.framework,是為了用Reveal檢視他的UI結構。
重新打包之後生成的app放在了Temp->Payload資料夾下面。
然後用xcode開啟IPAPatch工程。
其實我們需要用到的就是IPAPatchEntry.m檔案,我們主要的hook程式碼就寫在裡面。
在重新打包之前,我們要先改一下IPAPatch-DummyApp的bundleID和證書檔案:
證書選擇個人證書就行,bundleID隨便改,只要不跟別人的衝突。
將已經砸殼過得app.ipa放入Assets資料夾中,然後連線上手機,執行一下。。
這個手機選擇也是有講究的,我試過iOS8-iOS11的未越獄手機,發現在iOS11.4.1上會安裝失敗,其他系統會成功,所以最好是找個iOS10或者iOS9的手機測試。
在安裝過程中,如果出現錯誤:
couldn’t be opened because you don’t have permission to view it. Even though i have placed my app decrypted with clutch and named it app.ipa
我的解決方法是進入options.plist檔案(Xcode裡面檔案搜一下),把裡面的RESTORE_SYMBOLS欄位改為NO,然後重新執行就好。