iOS10.2下的IPA砸殼

前言

從App Store上下載的ipa裏面的二進制文件是通過加密的,class-dump和Hopper Disassembler都須要用到未加密的二進制文件,須要經過砸殼獲得。網上敲殼教程仍是挺多的,幾乎都差很少,但都太舊了都沒有更新,例如在iOS10.2下,傳統的dumpdecrypted砸殼就會有問題,須要加點其它操做才能敲成功。html

小編這裏推薦一個羣:691040931 裏面有大量的書籍和麪試資料,不少的iOS開發者都在裏面交流技術

查看二進制文件是否加密

使用能夠otool來查看,otool -l 二進制文件路徑 | grep -B 2 cryptios

$ otool -l WeChat.app/WeChat | grep -B 2地穴
          cmd LC_ENCRYPTION_INFO
      cmdsize 20
     cryptoff 16384
    cryptsize 49463296
      cryptid 1
—
             cmd LC_ENCRYPTION_INFO_64
      cmdsize 24
     cryptoff 16384
    cryptsize 53149696
      cryptid 1
複製代碼

cryptid爲1時說明被加密,爲0時則是未加密。能夠看到微信已經被加密了,第一個對應的是較老的armv7架構,後者則是arm64架構。被加密的二進制文件直接拿起來就擼是沒用的,須要先敲殼。git

準備敲殼

ssh連上的iPhone

確保iPhone和Mac在同一個網段,個人iPhone的IP地址爲192.168.1.22.OpenSSH的root密碼默認爲alpine程序員

$ ssh root@192.168.1.22
root@192.168.1.22的密碼: 
Dankal-Device-5s:~root#
複製代碼

這個時候已經順利獲取了iPhone的root權限,root至關於Windows中的管理員,權限最高,可讀寫。github

ssh相關的問題請看以前寫過的「iOS10.2 SSH鏈接越獄設備」,這裏就很少闡述。面試

獲取設備當前的進程

iPhone打開微信,後臺結束其餘APP進程,控制檯輸入ps ax 或者ps -esass

Dankal-Device-5s:~root#ps -e
PID TTY TIME CMD
  1 ??         0:26.19 / sbin / launchd
 21 ??         0:01.77 / usr / sbin / syslogd
 42 ??         0:17.65 / usr / libexec / logd
 44 ??         0:00.08 /System/Library/PrivateFrameworks/MobileSoftwareUpdate.framework/Support/softwareupdated
...
1190 ??         0:08.03 / 變種 /容器/捆綁/應用/ 46316B03 -5DC3- 4534 -8D40-A29FE9315E22 / WeChat.app /微信
...
1391 ?? ??         0:00.17 / usr / local / bin / dropbear -F -R -p 22
1392 ttys000     0:00.04 -sh
1401 ttys000     0:00.01 ps -e
1020 ttys001     0:00.02 login -fp mobile
1021 ttys001     0:00.06 -SH
複製代碼

找到微信的的進程,記住PID爲1190,Bundle路徑/var/containers/Bundle/Application/46316B03-5DC3-4534-8D40-A29FE9315E22/WeChat.app/WeChat安全

勾住進程

Dankal-Device- 5 s: ~root #cygcript - p 1190
CY#
複製代碼

看到cy#的出現就說明,成功勾住了微信的進程。bash

獲取沙盒路徑

經過Cycript與進程交互動態獲取應用的沙盒路徑,輸入如下任一行代碼。服務器

  • [NSHomeDirectory() stringByAppendingString:@"/Documents"]
  • NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0]
cy#[NSHomeDirectory()stringByAppendingStrin g: @ 「/ Documents」 ]
@ 「/ var / mobile / Containers / Data / Application / E2ABB23B-EC66-4DA4-AD3E-E14E20D680B5 / Documents」
複製代碼

出來顯示的字符串即爲沙盒品路徑

dumpdecrypted.dylib

敲殼的最重要的東西就是dumpdecrypted.dylib,確保從Github上下載了最新的dumpdecrypted源碼,解壓後進入dumpdecrypted文件夾的跟目錄,make編譯dumpdecrypted.dylib。

$ cd / Users / bingo / Downloads / dumpdecrypted-master
$ make
`xcrun --sdk iphoneos  - find gcc` -Os -Wimplicit -isysroot`xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path` / System /庫/框架-F`xcrun --sdk iphoneos --show-sdk-path` / System / Library / PrivateFrameworks -arch armv7 -arch armv7s -arch arm64  - c - o dumpdecrypted。o dumpdecrypted。C 
`xcrun --sdk iphoneos  - find gcc` -Os -Wimplicit -isysroot`xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path` / System /庫/框架-F`xcrun --sdk iphoneos --show-sdk-path` / System / Library / PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -dynamiclib  - o dumpdecrypted.dylib dumpdecrypted。Ø

複製代碼

結束後會在當前目錄中生成dumpdecrypted.dylib,這裏有坑,下面會說。

拷貝dumpdecrypted.dylib到沙盒路徑下

scp拷貝貝文件到越獄設備的沙盒路徑下,沙盒目錄剛剛用Cycript動態獲取到了,若是設備不支持scp或者出現問題,能夠參考「讓越獄設備支持scp文件傳輸」,或者使用iTools等工具實現文件傳輸,在此再也不闡述。

$ scp dumpdecrypted.dylib root@192.168.1.22:/ var / mobile / Containers / Data / Application / E2ABB23B-EC66-4DA4-AD3E-E14E20D680B5 / Documents
root@192.168.1.22的密碼: 
dumpdecrypted.dylib 100%193KB 242.3KB / s 00:00
複製代碼

開始敲殼 以上都是準備工做,接下來能夠正式砸殼了。

dumpdecrypted.dylib的具體用法是:DYLD_INSERT_LIBRARIES=to/Path/dumpdecrypted.dylib to/bundlePath

Dankal-設備- 5個S: 〜根#CD的/ var /移動/容器/數據/應用/ E2ABB23B-EC66- 4 DA4-AD3E-E14E20D680B5 /文件
Dankal-設備- 5個S:的/ var /移動/容器/數據/應用/ E2ABB23B-EC66- 4 DA4-AD3E-E14E20D680B5 /文檔根#DYLD_INSERT_LIBRARIES = dumpdecrypted.dylib 「的/ var /容器/捆綁/應用/ 46316B03-5DC3 -4534-8D40-A29FE9315E22 / WeChat.app /微信」
dyld:沒法加載插入的庫'dumpdecrypted.dylib',由於找不到合適的圖像。沒有找到:
	dumpdecrypted.dyli B:所需的代碼簽名丟失了 「dumpdecrypted.dylib」
停止陷阱:6
複製代碼

很明顯砸殼失敗了,這跟說好的不同!爲何別人砸殼成功了,而我卻砸失敗了?重複試了幾回都不成功。

因而開始找問題,首先懷疑個人設備的CPU架構不對,打開iTools能夠明顯看到是iPhone 5s,arm64,已越獄,沒毛病,若是是32位處理器的話應該是越獄不成功的。

再找問題,懷疑是yalu02越獄的時候出了問題,重啓再越獄了一遍,仍是同樣的問題。

繼續尋找,設備不支持嗎?網上搜索「iPhone5s砸殼失敗」,很失望,沒有相關的資料,搜到的全是真的手機殼的相關問題。

最後,懷疑是越獄自己就有問題,畢竟iOS 10.2是非完美越獄。因而搜「iOS 10.2 dumpdecrypted失敗」,終於摸索到相關文章,真的不容易啊,卡了一天,終於找到了解決方案。學會定位問題與使用搜索引擎對於程序員來講仍是很重要的!

正確砸殼

dumpdecrypted對系統ios 9.3.2以上的版本砸殼失敗,會報錯Killed: 9解決方案

固然,咱們如今是iOS 10.2,上面的解決方案可能還有問題,最後找到正確的解決方法,就是另外下載dumpdecrypted.dylib,連接來自上面解決方案的頁面下的評論。

masbog

也許一些用戶須要最新的.dylib與iOS 10.2 sdk ... masbog.com/dumpdecrypt…和一些iOS 10.2教程:擁抱:

最終能找到問題所在我也感到很是神奇與幸運,爲了預防站長的服務器掛掉或者連接失效,我已經將.dylib上傳到了七牛雲上,cdn加速下載鏈,以防不備之需。

使用方法

拷貝最新的dumpdecrypted.dylib到設備上的/usr/lib

$ scp dumpdecrypted.dylib root@192.168.1.22:/ usr / lib
root@192.168.1.22的密碼: 
dumpdecrypted.dylib 100%193KB 410.8KB / s 00:00
複製代碼

iOS 10+:

Dankal-Device- 5 s: ldid -S /usr/lib/dumpdecrypted.dylib

複製代碼

最終一砸

Dankal-設備- 5個S:的/ var /移動/容器/數據/應用/ E2ABB23B-EC66- 4 DA4-AD3E-E14E20D680B5 /文檔根#DYLD_INSERT_LIBRARIES = / usr / lib中/ dumpdecrypted.dylib 「的/ var /容器/包/應用程序/ 46316B03-5DC3-4534-8D40-A29FE9315E22 / WeChat.app /微信」
馬赫Ø解密自卸車
免責聲明:此工具是 只意味着用於安全研究的目的,而不是用於應用餅乾。
[+] 在內存中檢測到64位ARM二進制文件。
找到[+]偏移到 cryptid :@ 0 x1000a0ca8(從0 x1000a0000)= ca8
[+]在地址00004000處找到長度爲53149696字節的加密數據- 類型 1。
[+]打開/私有的/ var /容器/捆綁/應用/ 46316 B03- 5 DC3- 4534 - 8 D40-A29FE9315E22 / WeChat.app /微信爲讀數。
[+]閱讀標題
[+]檢測標題類型
[+]可執行是 一個 FAT圖像-搜索爲 右架構
[+]正確拱是在偏移58195968中文件
[+]開放WeChat.decrypted 用於寫入。
[+]複製文件的未加密開頭
[+]將解密的數據轉儲到文件中
[+]複製未加密的文件剩餘部分
[+] 在偏移3780 ca8 處將LC_ENCRYPTION_INFO-> cryptid設置爲 0
[+]關閉原始文件
[+]關閉轉儲文件
Dankal-設備- 5個S:的/ var /移動/容器/數據/應用/ E2ABB23B-EC66- 4 DA4-AD3E-E14E20D680B5 /文件根#
複製代碼

查當作果 砸殼完畢,會自動在當前目錄生成砸殼後的二進制文件WeChat.decrypted

$ ls
00000000000000000000000000000000   Ksid MMResourceMgr SafeMode.dat db.globalconfig
8 f9f003b02f320ae7f28b1250270eb48 LocalInfo.lst MMappedKV WeChat.decrypted mmupdateinfo.archive
複製代碼

後話

終於砸殼完畢,說難也不難,從App Store上下載的ipa就這樣被砸掉了殼,可見所謂的Apple Store給ipa穿上的戰衣也不過如此,並無多麼安全。敲殼後的二進制文件就能夠作一些好玩的東西了,好比dump出頭文件等,接下來的文章會慢慢記錄。

  • 本文做者: 賓果
  • 本文連接: https //bingozb.github.io/23.html
  • 版權聲明: 本博客全部文章除特別聲明外,均採用麻省理工學院許可協議。轉載請註明出處!

小編這裏推薦一個羣:691040931 裏面有大量的書籍和麪試資料,不少的iOS開發者都在裏面交流技術

相關文章
相關標籤/搜索