デジタルガーデン

広告位全清単と六層拦截:一台の 162MB 巨人の経済命脈

2026-10-14 · 約 8 分 · リバースエンジニアリング · 騰訊视频 · 広告拦截 · Frida · TRPC

最後の dex の逆コンパイルが完了すると(三十二 / 三十二、十二万九千八百七十七の java ファイル、dex-class-index.json の正確索引三十万七千百七十六定義クラス、文字列庫百十四万六千二百十六条)、この 162MB 巨人の経済命脈——広告体系——がついに完全に測量され図となった。

一、十一類の広告位

清单は投放位置ごとに铺かれ、每一類がクラス名 / 文字列の二重証拠を帯びる——スプラッシュ広告(自研 qadsplash、EAdSplashAdFlipCardUIType シリーズ)、情報流 / カード広告(qadsdk SSP、feed.impl 下の immersive だけで千一百九十一クラス)、プレイヤー貼片広告(前 / 中 / 後、QMTKmmRewardAdPlugin プラグイン)、一時停止広告(QMTKmmFullPauseAdPlugin、demuxer 層)、奨励ビデオ(rewardad + DKRewardedAdController)、投映 / DLNA 広告(com.qad.adslot 全家、AdSlotScene 列挙が AD_SCENE_DLNA を帯びる)、詳細ページ浮層、広告策略配信(JCE AdPolicyRequest/Response、総閘)、H5/WebView 広告(自家 H5 の広告を过滤する AdFilterUtil を内蔵することすらある)、広告位状態機械(QAdSlotState——INIT → REQUEST_START → REQUEST_SUCCESS / REQUEST_NO_AD / REQUEST_ERROR → CLOSED)、反拦截埋点(reportFunnelPreRollAdLossBeforeLoad/AfterLoad——貼片が再生されないと「広告流失」として報告される)。

二、リクエスト链路と一つの关键結論

链路は底まで復元された——クライアント → JCE AdPolicyRequest{adPolicyAppInfo, preloadModels[]} → サーバ AdPolicyResponse{adPosInfos[], requestId}(「どの位に投放するか」を決定)→ 各位置 AdSlotRequestModel(getCallee() = trpc.business_feeds.video_ad_ssp_feeds.ServerAdFeedsVideo、TRPC/protobuf)→ AdSlotResponse → QAdSlotState 状態機械 → QAdSlotManager.getAdView() 渲染。

关键結論は状態機械の列挙に潜む——全広告位の「広告があるかないか」は最終的にサーバ応答で決定され、クライアント状態機械自身に AD_STATE_REQUEST_NO_AD という正规分岐がある——それを「広告なし」に強制するのは硬塞ではなく、自分自身の空態路径を歩むこと。これが最も汚く、最も崩れにくい拦截思路だ。

三、六層拦截

方案はコストパフォーマンス順に六層——L1 策略層(AdPolicyResponse.adPosInfos の着地点を空に——総閘で、「策略に従い投放」される全位に影響)、L2 RPC 層(callee trpc.business_feeds.video_ad_ssp_feeds.ServerAdFeedsVideo を拦截または応答を空に置換)、L3 状態機械(AD_STATE_REQUEST_NO_AD を強制 + close()、該フレームワークを歩む全位をカバー、DLNA を含む)、L4 渲染層(getAdView() が null を返す、「データはあるが表示される」への兜底)、L5 位置専項(スプラッシュ / 貼片 / 一時停止 / 奨励の各自の入口短絡)、L6 上報層(ad-loss 上報を屏蔽し、「広告流失」と判定されるリスクを低下)。推奨実施順序は L1→L2→L3→L5→L4→L6——前の三級で绝大多数の位をカバーする。

第一バッチの拦截スクリプトはすでに着地——adblock-tenvideo.js(Frida)、L1/L2/L3/L6 を実装、すべて存在性ガード付き(クラスがなければスキップして記録)、いかなるバージョン細節も仮定しない。範囲宣言は報告の冒頭にも碑にも刻まれている——クライアント側広告位拦截のみ;会員権益伪造はせず、DRM 内容復号もしない——それはサーバ側の認可で、クライアントには解がなく、やらない。运行时検証は未実施(現在デバイスがオンラインでない)も正直に标注された。

真実の座標

コメント

← デジタルガーデン