iOS逆向之騰訊視頻廣告篇

本文章主要是實(shí)現(xiàn)在非越獄機(jī)上去掉騰訊視頻廣告的一個(gè)功能抗果,僅供學(xué)習(xí)交流=钐!冤馏!

一日麸、獲取褪殼app

首先我們需要一個(gè)去殼的ipa文件,以前在PP助手可以下載逮光。但是后來(lái)PP助手不能用了代箭,也沒(méi)找到其他地方下載,只能自己動(dòng)手了涕刚。下面推薦三種去殼的方式 : Clutch dumpdecrypted frida-ios-dump嗡综。過(guò)程在此不多做贅述,下面是我的使用心得杜漠。

Clutch:失敗率比較高,對(duì)幾個(gè)小app砸殼成功极景,對(duì)幾個(gè)大廠的app砸殼均失敗。失敗幾次后就暫且擱置碑幅。

dumpdecrypted:可以順利砸殼但是操作麻煩戴陡,且對(duì)于framework 中的Mach-O文件沒(méi)有找到去殼方式

frida-ios-dump:配置簡(jiǎn)單,使用相對(duì)順利沟涨,支持python2 python3(推薦)

砸殼過(guò)得ipa直接解壓獲得文件

我們可以進(jìn)去看一下是否砸殼成功恤批。進(jìn)入qqlive目錄(右鍵顯示包內(nèi)容)可以看到這么一個(gè)Mach-O可執(zhí)行文件


進(jìn)入文件目錄執(zhí)行

otool -l live4iphoneRel | grep cryp
WX20200612-135147@2x.png

其中cryptid為0代表已經(jīng)砸殼

二、獲取頭文件

用 class-dump 獲取頭文件裹赴。

class-dump -H /Users/qin/Desktop/tx/Payload/qqlive.app/live4iphoneRel -o /Users/qin/Desktop/tx/qliveHeaders

對(duì) Mach-O文件執(zhí)行完畢之后可以看到目標(biāo)目錄下產(chǎn)生很多頭文件喜庞。

\color{red}{不過(guò)注意這邊有個(gè)問(wèn)題}诀浪,這個(gè)頭文件并不是所有的頭文件。如果直接在這個(gè)里面找會(huì)有很多文件找不到延都。騰訊視頻應(yīng)是遵循組件化的開(kāi)發(fā)方式雷猪,將很多功能做成功能庫(kù)加載進(jìn)項(xiàng)目。因此要將項(xiàng)目Frameworks下的Mach-O頭文件都導(dǎo)出來(lái)晰房。

WX20200612-150712@2x.png

但是這個(gè)framework實(shí)在是不少求摇,逐個(gè)去執(zhí)行class-dump要很久。所以這邊是做了一個(gè)腳本all_class_dump去完成這個(gè)工作(腳本本身只是完成一個(gè)遍歷查詢(xún)Mach-O文件并執(zhí)行class-dump的工作殊者,所以運(yùn)行腳本需要安裝class-dump)与境。
執(zhí)行

python3 /Users/qin/Desktop/all_class_dump.py /Users/qin/Desktop/tx/騰訊視頻.ipa

執(zhí)行前


執(zhí)行前.png

執(zhí)行后
執(zhí)行后.png

三、MonkeyDev運(yùn)行破殼ipa

新建MonkeyApp運(yùn)行ipa文件
將xm的文件類(lèi)型改為c++

進(jìn)入播放界面后將程序停住分析



通過(guò)UI尋找入口猖吴,到了這里之后就是慢慢找保持耐心慢慢看摔刁。

通過(guò)觀察可以發(fā)現(xiàn)很多AD命名相關(guān)的控制器。仔細(xì)看可以發(fā)現(xiàn)一個(gè)很明顯的控制器QNBPlayerVideoAdsViewController海蔽,找到之前導(dǎo)出的頭文件找到這個(gè)類(lèi)的頭文件

這個(gè)方法讓有點(diǎn)想法共屈,將其hook不執(zhí)行其內(nèi)部邏輯,嘗試后無(wú)效党窜。還做了一些其他嘗試也都無(wú)效拗引。找其父類(lèi)

image.png

嘗試代碼 一

%hook QNBPlayerVideoAdsViewController

- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withPageViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5{
    return nil;
}
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4 withAddToParenViewControllerNow:(_Bool)arg5{
    return nil;
}
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withAddToParenViewControllerNow:(_Bool)arg4{
    return nil;
}
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3 withParentEventViewController:(id)arg4{
    return nil;
}
- (id)initWithEventProxy:(id)arg1 withPlayerInfo:(id)arg2 withParentViewController:(id)arg3{
    return nil;
}
%end

運(yùn)行后可以看到廣告播放界面是沒(méi)了,但是聲音還在幌衣,視頻也不能放寺擂。
再次運(yùn)行程序,加了上述代碼QNBPlayerVideoAdsViewController這個(gè)控制器已經(jīng)不再界面層級(jí)中了泼掠。控制器層級(jí)中有很多QAD作為前綴的控制器垦细。

嘗試代碼 二

%hook QADViewController

- (BOOL)enableVideoAdPlay {
     return NO;
}
%end

聲音沒(méi)有了但是 還是不能放择镇,推測(cè)應(yīng)該是有參數(shù)控制廣告時(shí)長(zhǎng),目前我們只是把廣告播放去掉了括改。QADRootViewController和QADViewController 都有QADPlayAdInfo這個(gè)成員變量

嘗試代碼 三

%hook QADPlayAdInfo

-(id)init {
return nil;
}
%end

搞定D逋恪!嘱能!

最后嘗試發(fā)現(xiàn)只要嘗試代碼三 加上 嘗試一二要不要都無(wú)所謂吝梅,繞了一圈。
中間還有很多無(wú)效嘗試就不一一列出了
最終去廣告代碼

%hook QADPlayAdInfo

-(id)init {
return nil;
}
%end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惹骂,一起剝皮案震驚了整個(gè)濱河市苏携,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌对粪,老刑警劉巖右冻,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件装蓬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纱扭,警方通過(guò)查閱死者的電腦和手機(jī)牍帚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乳蛾,“玉大人暗赶,你說(shuō)我怎么就攤上這事∷嘁叮” “怎么了蹂随?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)被环。 經(jīng)常有香客問(wèn)我糙及,道長(zhǎng),這世上最難降的妖魔是什么筛欢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任浸锨,我火速辦了婚禮,結(jié)果婚禮上版姑,老公的妹妹穿的比我還像新娘柱搜。我一直安慰自己,他們只是感情好剥险,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布聪蘸。 她就那樣靜靜地躺著,像睡著了一般表制。 火紅的嫁衣襯著肌膚如雪健爬。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天么介,我揣著相機(jī)與錄音娜遵,去河邊找鬼。 笑死壤短,一個(gè)胖子當(dāng)著我的面吹牛设拟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播久脯,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纳胧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帘撰?” 一聲冷哼從身側(cè)響起跑慕,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摧找,沒(méi)想到半個(gè)月后相赁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體相寇,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年钮科,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唤衫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绵脯,死狀恐怖佳励,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛆挫,我是刑警寧澤赃承,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站悴侵,受9級(jí)特大地震影響瞧剖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜可免,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一抓于、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浇借,春花似錦捉撮、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至闯估,卻和暖如春灼舍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涨薪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工片仿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尤辱。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像厢岂,于是被迫代替她去往敵國(guó)和親光督。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354