所以今天的教學(xué)就以懶人的方式展示吧。自從習(xí)慣了mt,已經(jīng)很久沒用電腦進(jìn)行反編譯了。可是很多時(shí)候手機(jī)無法勝任,又不想用電腦,所以只好琢磨一些懶人的姿勢。
今天要演示的軟件是一款看劇app 【阿哥美劇】
這款軟件有梆梆加固(網(wǎng)上脫殼教程很多) 這里不演示。
封包數(shù)據(jù)經(jīng)過加密(破解過程無需對數(shù)據(jù)算法進(jìn)行分析) 這里也不演示。
軟件有不少廣告(去除廣告的方式也就那樣) 這里也還是不演示。
此軟件有會(huì)員制,看劇需要開通會(huì)員(搜索isvip賦值的事情) 這里依然也不演示。
當(dāng)上面步驟都處理完成之后,卻發(fā)現(xiàn)高清影片無法觀看,看來僅僅本地賦值vip會(huì)員并不能破解高清影片呀。
所以今天要講解的就是這里 把高清影片給弄出來。
首先先簡單說明軟件的功能,此app有2種影片模式,480p和1080p(會(huì)員),當(dāng)完成賦值isvip后,480p影片是可以正常播放的,但1080p卻顯示如下。
從過往的破解經(jīng)驗(yàn)中可以知道,肯定不是本地破解的問題了,所以猜測了軟件有聯(lián)網(wǎng)驗(yàn)證,當(dāng)服務(wù)器判斷為真實(shí)vip會(huì)員的時(shí)候,會(huì)返回高清影片數(shù)據(jù),當(dāng)不是真實(shí)會(huì)員的時(shí)候,就無法獲取到影片數(shù)據(jù)而導(dǎo)致軟件無法正常播放。
所以這時(shí)候就需要進(jìn)行抓包把數(shù)據(jù)攔截下來看看,可是如下圖所示,數(shù)據(jù)都被加密了。
從正常的邏輯上來說數(shù)據(jù)之間的調(diào)用食需要先進(jìn)行解密后才能進(jìn)行解析。然而我們需要的是解密后的明文已查看數(shù)據(jù)內(nèi)容,并不需要加解密的過程。所以只需要把明文打印出來即可。從上圖重可以知道加密數(shù)據(jù)的鍵名是encrypt_data,所以只需要搜索這鍵名即可定位到算法部分。
得出結(jié)果有3個(gè),經(jīng)過閱讀代碼定位到第三個(gè)類
然后只需要把p1明文打印出來即可
這里使用mt的注入日志功能對此類的字符串進(jìn)行打印。
這里選擇播放撲克臉,這時(shí)候就可以到日志目錄查看明文內(nèi)容。由于輸出日志繁多,我們需要進(jìn)行搜索關(guān)鍵詞進(jìn)行定位,數(shù)據(jù)內(nèi)容里的中文字會(huì)以Unicode方式展示,所以需要將撲克臉轉(zhuǎn)成unicode內(nèi)容以進(jìn)行定位日志的位置
現(xiàn)在已經(jīng)找到我們需要的內(nèi)容了,現(xiàn)在把unicode內(nèi)容轉(zhuǎn)成中文吧。
綠線= 480p的影片數(shù)據(jù)
紅線= 1080p的影片數(shù)據(jù)
(這里可以看到1080p的影片是沒有數(shù)據(jù)返回的 這就是為何播放失敗的原因)
藍(lán)線= 可以看到480p和1080p的影片鏈接不一樣的只是480和1080,說明我們可以自行將1080p影片地址補(bǔ)全。
那怎么補(bǔ)呢? 我們先來看看影片數(shù)據(jù)的賦值邏輯。
圖中可以看到影片地址是在playpath的列表里,影片鏈接的鍵名是path和screen_path
(path是影片播放地址,screen_path是投屏播放地址)
同時(shí)我們也可以看到無論是480p或1080p的鍵名都一樣是path,說明path這參數(shù)會(huì)被多次調(diào)用。
我們先來在dex定位一下吧。就搜索screen_path吧(避免普遍的單詞重復(fù)影響搜索結(jié)果)
可以看到代碼是直接獲取path的內(nèi)容。
現(xiàn)在基本分析完畢了,可以進(jìn)行破解思路整理了。所以這里先把邏輯理一遍。
從以上分析 可以得知
1. 1080p地址需要聯(lián)網(wǎng)驗(yàn)證獲取。
2. 480p和1080p都在playpath列表里分別被調(diào)用。
3.480p和1080p會(huì)共同使用path參數(shù)。
4. 480p和1080p的鏈接不一樣的內(nèi)容僅僅只是畫質(zhì)的數(shù)字。
5. 數(shù)據(jù)返回結(jié)果為480p有內(nèi)容 1080p無內(nèi)容。
現(xiàn)在可以按分析邏輯去將1080p數(shù)據(jù)補(bǔ)全了。
1.當(dāng)480p影片調(diào)用path的時(shí)候 是有數(shù)據(jù)的,但非會(huì)員1080p調(diào)用path是五數(shù)據(jù)的。所以我們可以寫一個(gè)判斷,判斷path是否沒數(shù)據(jù),當(dāng)沒數(shù)據(jù)的時(shí)候就可以知道是1080p影片了。
在java里 判斷是否為空內(nèi)容用到empty,由于我懶不想用電腦寫后轉(zhuǎn)smali語法,所以我們可以直接取現(xiàn)成的smali代碼,在軟件里搜索empty試試吧
很快就得到了好多結(jié)果,隨便選一個(gè)吧 然后把這幾條代碼復(fù)制起來粘貼到path里。
2.480p和1080p的鏈接不一樣的只是畫質(zhì)的數(shù)字,但是1080p是無網(wǎng)絡(luò)返回?cái)?shù)據(jù)的,所以我們得把480p的數(shù)據(jù)用到1080p里 就得把480p的地址留起來。
3.接下來就要用到1080p的數(shù)據(jù)里了,繼續(xù)看圖吧。
好了,完成了,進(jìn)行測試吧,可以看見正常播放了。
今天的教學(xué)到這里,懶人技巧學(xué)會(huì)了嗎?
那剩下得screen_path就讓你們自己處理了
|