話不多講進入正題
工具:1.iPhone手機一部
2.Clutch砸殼
3.class-dump導出頭文件
4.Hooper ?Disassembler導出所有.m實現(xiàn)文件
5.Charles 的接口查看
一、安裝ipa
手機系統(tǒng)版10-10.2本如果未越獄下載PP助手(傻瓜操作)五分鐘可完成越獄
8.4版本及以下版本網(wǎng)上月月資料也是甚多,10.2以上、9-10版本暫時沒找到快速方便方法。
越獄之后通過越獄手機下載你所需要破解的app (appstore也可以)。比如:"簡書"(可以換一個 ?因為最后失敗原因:簡書是swift和oc混編 ?導出頭文件時候 不支持swift )
二、安裝clutch軟件
之前AppCrackr這種方式簡單粗暴,省時省力,但正是因為它過于方便,導致幾乎所有iDevice用戶都可輕松上手,所以不少用戶都拿它來破解程序,過于暴力、引起業(yè)界公憤,所以AppCrackr則是1.5舊版,已不能在高級系統(tǒng)中使用。
1.clutch下載地址:https://github.com/KJCracks/Clutch/releases(下載時候注意支持版本和手機版本的匹配)
2.下載之后? 把文件拷到手機上/usr/bin/? 下
? ? 方法一:通過SSH
3.查找ipa然后砸殼
找到"簡書.ipa"前面編號 比如:28
終端輸入:/private/var/mobile/Media/clutch-2 -d 28(/private/var/mobile/Media/clutch-2是clutch路徑? 可以自己看自己的路徑? 如果clutch放在/usr/bin下 ?可以直接使用clutch -d 28)
下面就是砸殼后存放的路徑 ?之后我們就需要把砸殼后的文件拿出來
mv 原路徑 現(xiàn)路經(jīng) ?(路徑中有括號的話 ?加 "\" 轉(zhuǎn)義一下)
手動拉到自己電腦桌面上完成
方法二: iFunBox 或者其他的第三方工具
命令方式:scp Clutch root@設(shè)備IP:/usr/bin
三、安裝class-dump 取.H文件
1、下載地址:http://stevenygard.com/projects/class-dump/
2.將class-dump 復制到/usr/bin/class-dump。如果是OS X 10.11,因為沒有/usr/bin文件夾的寫權(quán)限,所以將class-dump復制到/usr/local/bin/class-dump即可。
3.同時打開Terminal,需要的話就執(zhí)行命令賦予其執(zhí)行權(quán)限:
sudo chmod 777 /usr/bin/class-dump ?正確安裝顯示下面:
然后 輸入? ? class-dump -H "A" -o "B"
A: ?ipa報內(nèi)容里面的DVKIT頭文件框架路徑 ? B:導出的.h要存放的路徑 ?
例如 :class-dump -H /Users/Flywoods/Desktop/簡書破解/com.jianshu.Hugo-iOS7.0-\(Clutch-2.0.3\)/Payload/Hugo.app/Hugo -o /Users/Flywoods/Desktop/簡書破解/jianshuH文件
結(jié)果失敗:swift和oc混編 ? 因為不支持swift ?所以導出失敗
可以換其他APP ?導出結(jié)果:可以導出所有.h(包括pod第三方頭文件,但不包括.pch )
四、Hooper Disassembler 導出.m偽代碼
下載地址:https://www.hopperapp.com/?安裝好之后 把砸殼后的ipa拉進面板內(nèi)
{{{注:實現(xiàn)批量導出偽代碼的功能。具體代碼可以在https://github.com/poboke/Class-Decompile下載。}}}
使用方法
1、將下載的Class Decompile.py文件放到~/Library/Application Support/Hopper/Scripts目錄里。
2、將可執(zhí)行文件拖到Hopper里,等待分析完成。如果日志框里出現(xiàn)以下文字,就說明分析完成了:
Analysis segment __LINKEDIT
Analysis segment External Symbols
Background analysis ended
3、點擊菜單Scripts–>Class Decompile:
然后選擇導出所有偽代碼
4.反編譯出來的偽代碼保存在~/ClassDecompiles目錄里。
至此我們就把一個APP的.h和.m文件拿到了 ?可以放在同一個文件夾,然后新建一個項目 ,把這些文件拉進去 ?可以進行看對方的框架、方法定義、偽代碼就需要你有一雙黑客的眼睛了,畢竟是偽代碼 ?不是直白的。可以進行字符串搜索、方法搜索等等;怎么用就要看大家自己了。
五、Charles使用
下載地址:http://www.charlesproxy.com
Charles 是通過將自己設(shè)置成代理服務器來完成封包截取的,所以使用 Charles 的第一步是將其設(shè)置成系統(tǒng)的代理服務器。
啟動 Charles 后,第一次 Charles 會請求你給它設(shè)置系統(tǒng)代理的權(quán)限。你可以輸入登錄密碼授予 Charles 該權(quán)限。你也可以忽略該請求,然后在需要將 Charles 設(shè)置成系統(tǒng)代理時,選擇菜單中的 “Proxy” -> “Mac OS X Proxy” 來將 Charles 設(shè)置成系統(tǒng)代理。如下所示:
之后自己電腦上網(wǎng)頁一類的請求網(wǎng)絡(luò)的都可以顯示在charles界面
過濾網(wǎng)絡(luò)請求
通常情況下,我們需要對網(wǎng)絡(luò)請求進行過濾,只監(jiān)控向指定目錄服務器上發(fā)送的請求。對于這種需求,以下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字。例如我們的服務器的地址是:http://yuantiku.com, 那么只需要在 Filter 欄中填入 yuantiku 即可。
方法二:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”,然后選擇 Include 欄,選擇添加一個項目,然后填入需要監(jiān)控的協(xié)議,主機地址,端口號。這樣就可以只截取目標網(wǎng)站的封包了。如下圖所示:通常情況下,我們使用方法一做一些臨時性的封包過濾,使用方法二做一些經(jīng)常性的封包過濾。
截取 iPhone 上的網(wǎng)絡(luò)封包
Charles 通常用來截取本地上的網(wǎng)絡(luò)封包,但是當我們需要時,我們也可以用來截取其它設(shè)備上的網(wǎng)絡(luò)請求。下面我就以 iPhone 為例,講解如何進行相應操作。
charles設(shè)置:
要截取 iPhone 上的網(wǎng)絡(luò)請求,我們首先需要將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設(shè)置。如下圖所示:
iPhone 上的設(shè)置
首先我們需要獲取 Charles 運行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”->”Local IP Address”,即可在彈出的對話框中看到 IP 地址,如下圖所示:
在 iPhone 的 “ 設(shè)置 “->” 無線局域網(wǎng) “ 中,可以看到當前連接的 wifi 名,通過點擊右邊的詳情鍵,可以看到當前連接上的 wifi 的詳細信息,包括 IP 地址,子網(wǎng)掩碼等信息。在其最底部有「HTTP 代理」一項,我們將其切換成手動,然后填上 Charles 運行所在的電腦的 IP,以及端口號 8888,如下圖所示:
設(shè)置好之后,我們打開 iPhone 上的任意需要網(wǎng)絡(luò)通訊的程序,就可以看到 Charles 彈出 iPhone 請求連接的確認菜單(如下圖所示),點擊 “Allow” 即可完成設(shè)置。
截取 Https 通訊信息
如果你需要截取分析 Https 協(xié)議相關(guān)的內(nèi)容。那么需要安裝 Charles 的 CA 證書。具體步驟如下。
首先我們需要在 Mac 電腦上安裝證書。點擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后輸入系統(tǒng)的帳號密碼,即可在 KeyChain 看到添加好的證書。如下圖所示:
需要注意的是,即使是安裝完證書之后,Charles 默認也并不截取 Https 網(wǎng)絡(luò)通訊的信息,如果你想對截取某個網(wǎng)站上的所有 Https 網(wǎng)絡(luò)請求,可以在該請求上右擊,選擇 SSL proxy,如下圖所示:
這樣,對于該 Host 的所有 SSL 請求可以被截取到了。
如果我們需要在 iOS 或 Android 機器上截取 Https 協(xié)議的通訊內(nèi)容,還需要在手機上安裝相應的證書。點擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 彈出的簡單的安裝教程。如下圖所示:
按照我們之前說的教程,在設(shè)備上設(shè)置好 Charles 為代理后,在手機瀏覽器中訪問地址:http://charlesproxy.com/getssl,即可打開證書安裝的界面,安裝完證書后,就可以截取手機上的 Https 通訊內(nèi)容了。不過同樣需要注意,默認情況下 Charles 并不做截取,你還需要在要截取的網(wǎng)絡(luò)請求上右擊,選擇 SSL proxy 菜單項。
最后大家在編寫程序時候做好核心代碼混淆就好了,也可以swift和oc混編就拿不出來頭文件了,防范為好;
注: 下一篇 ? ? ?iOS制作屬于自己的FrameWork ? ?保護好代碼