最近在學習iOS逆向,在砸殼這個環節查看了很多資料寫的各有不同最終還是成功了,但是過程相對曲折,這里記錄分享一下自己砸殼的過程希望往后面可以更好的幫助大家。
這里我要說一下砸殼只能在越獄手機上進行如果沒有越獄設備的話是不行的。
- 下載dumpdecrypted
dumpdecrypted源碼下載地址
下載之后放在哪里看你個人喜好。
2.設置Makefile中的SDK字段和設備上的一致
在有些教程里是沒有說設置SDK保持一致的。不設置能不能成功我也沒有嘗試過,不過設置了是一定可以的。
打開下載的dumpdecrypted文件夾里面的Makefile(我用的是sublime)
我們看第三行是SDK,復制sdk后面的內容
xcrun --sdk iphoneos --show-sdk-path
打開終端并輸入上面命令
可以看到我的默認的是9.3的我的xcode版本是7.3的xcode。我的設備是iOS8.3而現在默認的為9.3是不一樣的所以我們找到對應版本的路徑自己設置一下,如果沒有的話就去這里下載舊版本的xcode
舊版xcode下載地址
下載安裝好舊版本xcode之后在xcode目錄下
/Applications/Xcode6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
在這個目錄下找到我們需要的sdk替換默認的
3.修改Makefile中的GCC_UNIVERSAL字段和dumpdecrypted.c
如果是7.0以下的設備我們還需要改些東西,我們要將上圖的第二行修改為
GCC_UNIVERSAL=$(GCC_BASE) -arch armv7 -arch armv7s
還要將dumpdecrypted文件夾里的dumpdecrypted.c文件的第76行
if (lc->cmd == LC_ENCRYPTION_INFO || lc->cmd == LC_ENCRYPTION_INFO_64)
改為
if(lc->cmd == LC_ENCRYPTION_INFO)
4.生成dumpdecrypted.dylib
文件
然后我們在終端cd到dumpdecrypted目錄下,在終端執行命令
&make
完成后dumpdecrypted.dylib
文件出現在當前目錄下,這個就是我們砸殼用的錘頭。
5.將dumpdecrypted.dylib
拷貝到iOS設備上
你可以使用iFunBox,iFile這些圖形界面來操作,相對來說我還是習慣使用命令行。
我們要把“錘頭”拷貝到Documents目錄下。
我們先來定位待砸殼app的可執行文件
設備上運行待砸殼app
,最好只運行這一個,然后終端接入設備
$ssh root@設備ip
有關環境配置請自行查閱資料
接上設備后我們使用
ps -e
執行后如下:
這里只是列出部分結果,因為我們只運行了一個app所以我們找到
/var/mobile/Containers/Bundle/Application/ED230789-AE88-4AAF-9D08-7BB97C7E629D/MinecraftBox.app/MinecraftBox
/var/mobile/Containers/Bundle/Application/
這個字段就是目標
這里以口袋MC盒子
為例,可以看到MinecraftBox.app/MinecraftBox
就是我們要找的可執行文件
然后我們用Cycript找出要砸殼app的Documents目錄路徑,命令輸入
cycript -p 要砸殼的app
輸入之后結果如下:
然后再輸入:
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
得到Documents路徑:
將dumpdecrypted.dylib
拷貝到Documents路徑下
$scp `dumpdecrypted.dylib路徑` root@設備IP:`Documents路徑`;
拷貝成功結果:
6.開始砸殼
DYLD_INSERT_LIBRARIES=/path/to/dumpdecrypted.dylib /path/to/executable
實際操作:
cd 到設備Documents下
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執行文件路徑
運行后可以看到:
接著我們ls一下看看文件夾下的內容:
我們可以看到除了app本身自帶的內容和我們拷貝進去的dumpdecrypted.dylib文件里面還有個后綴為decrypted
文件,沒錯這個就是我們想要的。后綴為decrypted
的文件就是解密后的app的可執行文件,把它拿出來對它進行你想要的操作吧!