今年直播盒子特別火,朋友發(fā)了一個(gè)給我,讓我給破解一波,隨意上2張圖大家感受下就好啦
畢竟本著技術(shù)人員的精神,我真的只是為了練習(xí)技術(shù)而破解,而不是為了內(nèi)容.
首先安裝到手機(jī)上,趕緊抓包一波,看是否有Api直接可以使用,就懶得上逆向了,抓包用Charles或者Thor都行,大佬請(qǐng)直接上wireshark
通過(guò)抓包得知,除了注冊(cè)登錄接口,其他有內(nèi)容的接口都需要帶Token請(qǐng)求,且隨意掃了一下,沒(méi)有什么特別的接口可以利用
然后上了nmap試試看有無(wú)可利用端口
看了下這些端口,果然22關(guān)掉,ssh無(wú)望,888和8888一看就是寶塔
知道是寶塔我連3306都懶得去測(cè)試了
通過(guò)對(duì)路徑掃描,發(fā)現(xiàn)了對(duì)方的后臺(tái)管理系統(tǒng)
弱口令和sql注入隨手試了下,也沒(méi)有明顯漏洞,遂放棄,還是老老實(shí)實(shí)回去逆向App吧
上面都是走的彎路,還是干自己的本行來(lái)的順手.正文開(kāi)始
3掩浙、2、1
1、首先把ipa搞下來(lái),通過(guò)抓包獲取分發(fā)平臺(tái)的ipa下載路徑,這個(gè)沒(méi)難度,不細(xì)說(shuō)
因?yàn)檫@些企業(yè)簽名的App沒(méi)有上架到商店,也就沒(méi)有砸殼這一說(shuō)法,直接zip解壓縮找到可執(zhí)行文件
2、上
class-dump
,因?yàn)闊o(wú)殼,所以直接導(dǎo)出即可命令
class-dump -H XXX -o OUTPUT_PATH
整整齊齊,315個(gè)頭文件全部出來(lái)
3、上大殺器MonkeyDev,怎么安裝啥的請(qǐng)直接看官方Wiki
直接把ipa扔到TargetApp目錄開(kāi)始build裝手機(jī)上,然后打開(kāi)另外個(gè)殺器Reveal
,直接查找到首頁(yè)控制器名稱XXXLiveController
注意:這里build的時(shí)候遇到了個(gè)錯(cuò)誤崩潰
一看份企,這不是七牛的播放SDK么,如果七牛知道拿來(lái)放這些內(nèi)容,會(huì)不會(huì)律師函警告
既然知道了是七牛的SDK,那簡(jiǎn)單
pod
走起,然后就成功編譯了4、祭出神器Hopper
,如果是用IDA
的大佬請(qǐng)喝茶
因?yàn)橥ㄟ^(guò)
Reveal
看出了首頁(yè)布局使用的是CollectionView
,所以直接定位到collectionView:didSelectItemAtIndexPath:
方法即可通過(guò)上面的偽代碼可以看出,當(dāng)我們點(diǎn)擊了item的時(shí)候,會(huì)先判斷你的
UserDefaults
中是否有token
,沒(méi)有就直接跳登錄控制器了,得到這個(gè)邏輯就簡(jiǎn)單了,要么我們給他個(gè)token
,要么我直接調(diào)用pushToVc
到下個(gè)頁(yè)面就行了.
通過(guò)查看pushToVc
的偽代碼可以看出,其實(shí)就是傳了個(gè)索引進(jìn)來(lái),然后找在listArray
找到到對(duì)應(yīng)Model
,然后賦值push
既然這樣的話,那就簡(jiǎn)單了,直接寫
tweak
,由于我對(duì)CaptainHook
語(yǔ)法不熟,所以還是用Logos
寫吧,省事首先
@interface
構(gòu)造出我們要Hook
的控制器,并寫上要Hook
的方法,方法名字這些都在對(duì)應(yīng)的頭文件里有,直接復(fù)制過(guò)來(lái)即可然后重新build裝手機(jī)上測(cè)試,預(yù)料之中,不需要登錄就
push
成功,但是不對(duì)呀,為啥沒(méi)數(shù)據(jù)呢傅蹂?我還以為是手機(jī)卡了,下拉刷新好幾次,明顯感覺(jué)到了網(wǎng)絡(luò)請(qǐng)求,但是沒(méi)數(shù)據(jù)回來(lái),然后抓包一看,尼瑪請(qǐng)登錄,好吧,懂了,肯定是網(wǎng)絡(luò)請(qǐng)求里封裝的時(shí)候加了驗(yàn)證是否有token的選項(xiàng),沒(méi)有token直接就掛掉,為了驗(yàn)證猜想,找到他的網(wǎng)絡(luò)請(qǐng)求庫(kù),打開(kāi)看了下偽代碼,紅框中驗(yàn)證了我的想法.
既然你要驗(yàn)證,那我就給你個(gè)
token
驗(yàn)證就行了唄修改tweak如下
biubiubiu
第一步搞定,成功的獲取到了數(shù)據(jù),然后我們隨便點(diǎn)一個(gè)看看
繼續(xù)上面的步驟Reveal
找到控制器,繼續(xù)看方法
通過(guò)偽代碼得知,點(diǎn)擊cell的時(shí)候去服務(wù)器驗(yàn)證了下我們會(huì)員是否過(guò)期
通過(guò)查看對(duì)應(yīng)的匯編代碼,得知如果成功會(huì)去調(diào)用
pushToVc:and:
這個(gè)方法,那破解思路我就直接調(diào)用這個(gè)方法就好了通過(guò)看其偽代碼得知,第一個(gè)參數(shù)是索引,第二個(gè)參數(shù)是個(gè)字符串.通過(guò)對(duì)頁(yè)面的查看也能得知我的猜想.
開(kāi)始寫Tweak,本來(lái)很簡(jiǎn)單的2句話,但是由于and
成了關(guān)鍵字,不能作為參數(shù)名,會(huì)引起無(wú)法編譯,我想用objc_msgsend
來(lái)自己調(diào)用方法,也發(fā)現(xiàn)and
這個(gè)關(guān)鍵字無(wú)法編譯,那看來(lái)只能自己寫push
的邏輯了
邏輯由上面的偽代碼翻譯成如下,這樣就跳過(guò)了這個(gè)
and
的坑這里有個(gè)坑,暫時(shí)未知,就是用
%c
出來(lái)的是類對(duì)象,不是實(shí)例對(duì)象,用類對(duì)象去掉方法肯定就報(bào)錯(cuò)了,然后我就還是用了runtime
的getClass
來(lái)初始化實(shí)例對(duì)象了.
build后成功的進(jìn)入了直播頁(yè)面.由于內(nèi)容有些太那啥,我就不截圖了
然后打包ipa,重簽名,安裝,完美!一個(gè)iOS破解版直播盒子誕生.
教程到此結(jié)束,以下為瞎折騰
本著生命不息折騰不止的原則,首頁(yè)的輪播圖我也看不順眼,我得給它干掉
老套路找到輪播圖所在的Cell
寫tweak
直接把高寬設(shè)置為0.01,看不到就好了
效果完美,無(wú)廣告!