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