話不多講進(jìn)入正題
工具:1.iPhone手機(jī)一部
2.Clutch砸殼
3.class-dump導(dǎo)出頭文件
4.Hooper ?Disassembler導(dǎo)出所有.m實(shí)現(xiàn)文件
5.Charles 的接口查看
一搁胆、安裝ipa
手機(jī)系統(tǒng)版10-10.2本如果未越獄下載PP助手(傻瓜操作)五分鐘可完成越獄
8.4版本及以下版本網(wǎng)上月月資料也是甚多,10.2以上邮绿、9-10版本暫時(shí)沒找到快速方便方法渠旁。
越獄之后通過越獄手機(jī)下載你所需要破解的app (appstore也可以)。比如:"簡書"(可以換一個(gè) ?因?yàn)樽詈笫≡颍汉啎莝wift和oc混編 ?導(dǎo)出頭文件時(shí)候 不支持swift )
二船逮、安裝clutch軟件
之前AppCrackr這種方式簡單粗暴顾腊,省時(shí)省力,但正是因?yàn)樗^于方便挖胃,導(dǎo)致幾乎所有iDevice用戶都可輕松上手杂靶,所以不少用戶都拿它來破解程序梆惯,過于暴力、引起業(yè)界公憤吗垮,所以AppCrackr則是1.5舊版垛吗,已不能在高級(jí)系統(tǒng)中使用。
1.clutch下載地址:https://github.com/KJCracks/Clutch/releases(下載時(shí)候注意支持版本和手機(jī)版本的匹配)
2.下載之后? 把文件拷到手機(jī)上/usr/bin/? 下
? ? 方法一:通過SSH
3.查找ipa然后砸殼
找到"簡書.ipa"前面編號(hào) 比如: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) ?(路徑中有括號(hào)的話 ?加 "\" 轉(zhuǎn)義一下)
手動(dòng)拉到自己電腦桌面上完成
方法二: iFunBox 或者其他的第三方工具
命令方式:scp Clutch root@設(shè)備IP:/usr/bin
三烁登、安裝class-dump 取.H文件
1怯屉、下載地址:http://stevenygard.com/projects/class-dump/
2.將class-dump 復(fù)制到/usr/bin/class-dump。如果是OS X 10.11饵沧,因?yàn)闆]有/usr/bin文件夾的寫權(quán)限锨络,所以將class-dump復(fù)制到/usr/local/bin/class-dump即可。
3.同時(shí)打開Terminal捷泞,需要的話就執(zhí)行命令賦予其執(zhí)行權(quán)限:
sudo chmod 777 /usr/bin/class-dump ?正確安裝顯示下面:
然后 輸入? ? class-dump -H "A" -o "B"
A: ?ipa報(bào)內(nèi)容里面的DVKIT頭文件框架路徑 ? B:導(dǎo)出的.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混編 ? 因?yàn)椴恢С謘wift ?所以導(dǎo)出失敗
可以換其他APP ?導(dǎo)出結(jié)果:可以導(dǎo)出所有.h(包括pod第三方頭文件,但不包括.pch )
四锁右、Hooper Disassembler 導(dǎo)出.m偽代碼
下載地址:https://www.hopperapp.com/?安裝好之后 把砸殼后的ipa拉進(jìn)面板內(nèi)
{{{注:實(shí)現(xiàn)批量導(dǎo)出偽代碼的功能失受。具體代碼可以在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余寥、點(diǎn)擊菜單Scripts–>Class Decompile:
然后選擇導(dǎo)出所有偽代碼
4.反編譯出來的偽代碼保存在~/ClassDecompiles目錄里领铐。
至此我們就把一個(gè)APP的.h和.m文件拿到了 ?可以放在同一個(gè)文件夾,然后新建一個(gè)項(xiàng)目 宋舷,把這些文件拉進(jìn)去 ?可以進(jìn)行看對(duì)方的框架绪撵、方法定義、偽代碼就需要你有一雙黑客的眼睛了祝蝠,畢竟是偽代碼 ?不是直白的音诈。可以進(jìn)行字符串搜索绎狭、方法搜索等等细溅;怎么用就要看大家自己了。
五儡嘶、Charles使用
下載地址:http://www.charlesproxy.com
Charles 是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的喇聊,所以使用 Charles 的第一步是將其設(shè)置成系統(tǒng)的代理服務(wù)器。
啟動(dòng) Charles 后蹦狂,第一次 Charles 會(huì)請求你給它設(shè)置系統(tǒng)代理的權(quán)限承疲。你可以輸入登錄密碼授予 Charles 該權(quán)限邻耕。你也可以忽略該請求,然后在需要將 Charles 設(shè)置成系統(tǒng)代理時(shí)燕鸽,選擇菜單中的 “Proxy” -> “Mac OS X Proxy” 來將 Charles 設(shè)置成系統(tǒng)代理。如下所示:
之后自己電腦上網(wǎng)頁一類的請求網(wǎng)絡(luò)的都可以顯示在charles界面
過濾網(wǎng)絡(luò)請求
通常情況下啼辣,我們需要對(duì)網(wǎng)絡(luò)請求進(jìn)行過濾啊研,只監(jiān)控向指定目錄服務(wù)器上發(fā)送的請求。對(duì)于這種需求鸥拧,以下幾種辦法:
方法一:在主界面的中部的 Filter 欄中填入需要過濾出來的關(guān)鍵字党远。例如我們的服務(wù)器的地址是:http://yuantiku.com, 那么只需要在 Filter 欄中填入 yuantiku 即可。
方法二:在 Charles 的菜單欄選擇 “Proxy”->”Recording Settings”富弦,然后選擇 Include 欄沟娱,選擇添加一個(gè)項(xiàng)目桃漾,然后填入需要監(jiān)控的協(xié)議乳怎,主機(jī)地址,端口號(hào)赂蠢。這樣就可以只截取目標(biāo)網(wǎng)站的封包了盏缤。如下圖所示:通常情況下砰蠢,我們使用方法一做一些臨時(shí)性的封包過濾,使用方法二做一些經(jīng)常性的封包過濾唉铜。
截取 iPhone 上的網(wǎng)絡(luò)封包
Charles 通常用來截取本地上的網(wǎng)絡(luò)封包台舱,但是當(dāng)我們需要時(shí),我們也可以用來截取其它設(shè)備上的網(wǎng)絡(luò)請求潭流。下面我就以 iPhone 為例竞惋,講解如何進(jìn)行相應(yīng)操作。
charles設(shè)置:
要截取 iPhone 上的網(wǎng)絡(luò)請求灰嫉,我們首先需要將 Charles 的代理功能打開拆宛。在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”,填入代理端口 8888熬甫,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設(shè)置胰挑。如下圖所示:
iPhone 上的設(shè)置
首先我們需要獲取 Charles 運(yùn)行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”->”Local IP Address”椿肩,即可在彈出的對(duì)話框中看到 IP 地址瞻颂,如下圖所示:
在 iPhone 的 “ 設(shè)置 “->” 無線局域網(wǎng) “ 中,可以看到當(dāng)前連接的 wifi 名郑象,通過點(diǎn)擊右邊的詳情鍵贡这,可以看到當(dāng)前連接上的 wifi 的詳細(xì)信息,包括 IP 地址厂榛,子網(wǎng)掩碼等信息盖矫。在其最底部有「HTTP 代理」一項(xiàng)丽惭,我們將其切換成手動(dòng),然后填上 Charles 運(yùn)行所在的電腦的 IP辈双,以及端口號(hào) 8888责掏,如下圖所示:
設(shè)置好之后,我們打開 iPhone 上的任意需要網(wǎng)絡(luò)通訊的程序湃望,就可以看到 Charles 彈出 iPhone 請求連接的確認(rèn)菜單(如下圖所示)换衬,點(diǎn)擊 “Allow” 即可完成設(shè)置。
截取 Https 通訊信息
如果你需要截取分析 Https 協(xié)議相關(guān)的內(nèi)容证芭。那么需要安裝 Charles 的 CA 證書瞳浦。具體步驟如下。
首先我們需要在 Mac 電腦上安裝證書废士。點(diǎn)擊 Charles 的頂部菜單叫潦,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后輸入系統(tǒng)的帳號(hào)密碼官硝,即可在 KeyChain 看到添加好的證書矗蕊。如下圖所示:
需要注意的是,即使是安裝完證書之后泛源,Charles 默認(rèn)也并不截取 Https 網(wǎng)絡(luò)通訊的信息拔妥,如果你想對(duì)截取某個(gè)網(wǎng)站上的所有 Https 網(wǎng)絡(luò)請求,可以在該請求上右擊达箍,選擇 SSL proxy没龙,如下圖所示:
這樣,對(duì)于該 Host 的所有 SSL 請求可以被截取到了缎玫。
截取移動(dòng)設(shè)備中的 Https 通訊信息
如果我們需要在 iOS 或 Android 機(jī)器上截取 Https 協(xié)議的通訊內(nèi)容硬纤,還需要在手機(jī)上安裝相應(yīng)的證書。點(diǎn)擊 Charles 的頂部菜單赃磨,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”筝家,然后就可以看到 Charles 彈出的簡單的安裝教程。如下圖所示:
按照我們之前說的教程邻辉,在設(shè)備上設(shè)置好 Charles 為代理后溪王,在手機(jī)瀏覽器中訪問地址:http://charlesproxy.com/getssl,即可打開證書安裝的界面值骇,安裝完證書后莹菱,就可以截取手機(jī)上的 Https 通訊內(nèi)容了。不過同樣需要注意吱瘩,默認(rèn)情況下 Charles 并不做截取道伟,你還需要在要截取的網(wǎng)絡(luò)請求上右擊,選擇 SSL proxy 菜單項(xiàng)。
最后大家在編寫程序時(shí)候做好核心代碼混淆就好了蜜徽,也可以swift和oc混編就拿不出來頭文件了祝懂,防范為好;
注: 下一篇 ? ? ?iOS制作屬于自己的FrameWork ? ?保護(hù)好代碼