天天看點

如何去反編譯一個ipa包

<h3>1.前言</h3>

上傳到appStore的ipa蘋果會自動加一層防護殼,如果想要反編譯從appStore下載下傳的ipa包,必須要先要進行一次脫殼操作。直接使用Xcode打出的企業包可以直接進行反編譯。

<h3>2.工具</h3>

1.有一部已經越獄的手機

2.dumpdecrypted

<h3>3.步驟總結</h3>

0.連接配接你已經越獄的手機

1.裝置中打開需要砸殼的APP

2.SSH連結到手機,找到ipa包的位置并記錄下來

3.Cycript附加到進行,找到App的Documents檔案夾位置并記錄下來

4.拷貝dumpdecrypted.dylib 到App的Documents 的目錄。

5.執行砸殼後,并拷貝出砸殼後的檔案,然後完成。

<h5>0.連接配接你已經越獄的手機</h5>

一、在WiFi的情況下

yalu2 beta 8 此次越獄工具預設安裝了 SSH,是以越獄後就要去更改 root 密碼,更改方法打開 Cydia 首頁就有,切記不需要再安裝 openssh 插件了。

越獄開發者作者為了增強越獄後的 ssh 安全防護性,采用了 Dropbear 取代 Openssh,這會導緻我們無法直接通過 ssh 連上 iOS10 裝置,需要手動修改調整 dropbear.plist。

通過 filza 或者 ifile,或者在電腦上用 iTools 等工具,找到 yalu102 的程式目錄,路徑在 /private/var/containers/Bundle/Application/

下,找到對應的沙盒目錄,然後到 yalu102.app 目錄中修改 dropbear.plist。

其中 ProgramArguments 項展開,把 Item 4 中原來的内容 127.0.0.1:22直接改為22,儲存然後重新開機裝置即可通過 ssh 連上 iPhone。

重新開機裝置後終端連接配接手機,保證 iPhone 和 Mac 在同個網絡下,直接 ssh 連接配接 iPhone 所在的 IP,預設密碼是alpine

,第一次連接配接會有個警告,敲 yes 即可。

Bingos-MacBook-Pro:~ bingo$ ssh [email protected]
ssh: connect to host . port : Connection refused
Bingos-MacBook-Pro:~ bingo$ ssh [email protected]
The authenticity of host '192.168.1.22 (192.168.1.22)' can't be established.
ECDSA key fingerprint is SHA256:pPdllw8r6fWz1InP8OpZbmyqieH1OarSdkjcQ98jvXI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '.' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Dankal-Device-s:~ root#
                

這樣就連上 iPhone 裝置了,接下來就可以終端指令行玩轉 Unix 系統了。

二、通過USB

首先,同樣手機要越獄,越獄胡要安裝openssh工具。

第二,通過USB通路,有沒有WiFi無所謂了,但是你得在pc安裝usbmuxd服務,沒有的大家可以去http://cgit.sukimashita.com/usbmuxd.git/ 下載下傳1.0.8版本。解壓進入 Python-client目錄後,執行指令:

python tcprelay.py –t 22:2222

,這樣就開通了一個從本機2222端口通往目标主機22号端口的通道,執行完後會出現Forwarding local port 2222 to remote port 22

第三, 另起終端,執行指令

ssh [email protected] –p 2222

,然後提示輸入密碼,這是手機的密碼,預設為alpine。

最後,此時,同樣可以達到ssh通路手機的效果,而且比WiFi更快更穩定

<h5>1.裝置中打開需要砸殼的APP</h5>

通過

ssh [email protected]

登入到越獄手機之後,在電腦終端執行

ps -e

檢視所有正在運作的程序

如何去反編譯一個ipa包

Snip20170720_1.png

通過上面的截圖,可以看見我們要脫殼的app的程序号是885

然後執行

cycript -p 885(附加程序)

當你執行這個指令,一定要保證你的app是處于打開狀态的。不能是處于背景。

如何去反編譯一個ipa包

Snip20170720_3.png

要想使用cycript需要在越獄手機上使用Cydia搜尋cycript安裝才可以
           

然後通過執行

[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

檢視Doumnets的位置。

如何去反編譯一個ipa包

Snip20170720_3.png

<h5>2.拷貝dumpdecrypted.dylib 到App的Documents的目錄:</h5>

重新打開一個終端執行

scp ~/dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/

當我們直接執行這個指令的時候會報錯:

如何去反編譯一個ipa包

Snip20170720_4.png

這個問題在Cydia上安裝OpenSSH就可以了,注意安裝了不要重新開機,重新開機之後就無法通過WIFI進行SSH連接配接了。

如何去反編譯一個ipa包

Snip20170720_5.png

<h5>3.執行砸殼</h5>

進入到 Documents 目錄下,然後進行砸殼:

需要用到的指令:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/F606BDF-DAFFF02-B34E-BF1FDB5FF432/yidian-x.app/yidian-x 
                

執行上面的指令時會報一下錯誤

如何去反編譯一個ipa包

Snip20170720_6.png

解決方法:(這個指令設定MAC上執行,不在手機終端上執行)

## 列出可簽名證書
security find-identity -v -p codesigning
## 為dumpecrypted.dylib簽名
codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
           

用簽過名的dumpdecrypted.dylib,再次砸殼即可。

如何去反編譯一個ipa包

Snip20170720_10.png

檢視目前檔案夾就生成了一個.decrypted的檔案,這個問價就是砸殼之後生成的檔案

另外開啟一個終端,使用

scp [email protected]:/var/mobile/Containers/Data/Application/221A0662-311C-4659-9BE5-5F952BDF5D30/Documents/yidian-x.decrypted ~/Desktop/

将生成的檔案拷貝到電腦桌面

可以安裝一個Hopper(https://www.hopperapp.com/download.html) ,然後将砸殼後的檔案,去掉字尾名,拖進Hopper裡面就可以看見反編譯的僞代碼了

參考文檔:

iOS逆向之IPA脫殼

使用ssh 通路越獄iPhone的兩種方式

iOS10.2 SSH連接配接越獄裝置

iOS10.2下的ipa砸殼

iOS開發利器Reveal檢視任意app 的界面

iOS逆向工程(簡單利用"dumpdecrypted"給ipa砸殼)

作者:流星大石頭

連結:https://www.jianshu.com/p/a1f2b70fa292

來源:簡書

簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。