Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions app/src/main/java/me/iacn/biliroaming/BiliBiliPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
val pegasusParserClass by Weak { mHookInfo.pegasusParser from mClassLoader }
val resolveClientCompanionClass by Weak { mHookInfo.resolveClientCompanion.class_ from mClassLoader }
val videoDownloadEntryClass by Weak { "com.bilibili.videodownloader.model.VideoDownloadEntry" from mClassLoader }
val rewardAdClass by Weak { mHookInfo.rewardAd.class_ from mClassLoader }

// for v8.17.0+
val useNewMossFunc = instance.viewMossClass?.declaredMethods?.any {
Expand Down Expand Up @@ -366,6 +367,8 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex

fun setExtraContentMethod() = mHookInfo.gCommonResolverParams.setExtraContent.orNull

fun rewardFlag() = mHookInfo.rewardAd.rewardFlag.orNull

private fun readHookInfo(context: Context): Configs.HookInfo {
try {
val hookInfoFile = File(context.cacheDir, Constant.HOOK_INFO_FILE_NAME)
Expand Down Expand Up @@ -2382,6 +2385,19 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
class_ = class_ { name = commonResolverParamsClass.name }
setExtraContent = method { name = setExtraContentMethod.name }
}
rewardAd = rewardAd {
val rewardAdActivityClass =
"com.bilibili.ad.reward.RewardAdActivity".from(classloader) ?: return@rewardAd

class_ = class_ { name = rewardAdActivityClass.name }
val rewardFlagField =
rewardAdActivityClass.declaredFields.filter { it.type == Boolean::class.javaPrimitiveType }
.getOrNull(1) ?: return@rewardAd

rewardFlag = field { name = rewardFlagField.name }

}

dexHelper.close()
}

Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/me/iacn/biliroaming/XposedInit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ class XposedInit : IXposedHookLoadPackage, IXposedHookZygoteInit {
startHook { WebViewHook(lpparam.classLoader) }
startHook { ShareHook(lpparam.classLoader) }
startHook { DialogBlurBackgroundHook(lpparam.classLoader) }
startHook { RewardAdHook(lpparam.classLoader) }
}

lpparam.processName.endsWith(":download") -> {
Expand Down
23 changes: 23 additions & 0 deletions app/src/main/java/me/iacn/biliroaming/hook/RewardAdHook.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package me.iacn.biliroaming.hook

import android.os.Bundle
import android.widget.TextView
import me.iacn.biliroaming.BiliBiliPackage.Companion.instance
import me.iacn.biliroaming.utils.*

class RewardAdHook(classLoader: ClassLoader) : BaseHook(classLoader) {
override fun startHook() {

if (!sPrefs.getBoolean("skip_reward_ad", false)) return

Log.d("startHook: RewardAd")

instance.rewardAdClass?.hookAfterMethod("onCreate", Bundle::class.java) { params ->
params.thisObject.setBooleanField(instance.rewardFlag(), true)
(params.thisObject.javaClass.declaredFields.firstOrNull {
it.type == TextView::class.java
}?.apply { isAccessible = true }?.get(params.thisObject) as? TextView)?.performClick()
}

}
}
6 changes: 6 additions & 0 deletions app/src/main/proto/me/iacn/biliroaming/configs.proto
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,11 @@ message GCommonResolverParams {
optional Method setExtraContent = 2;
}

message RewardAd {
optional Class class_ = 1;
optional Field rewardFlag = 2;
}

message HookInfo {
int64 last_update_time = 1;
optional MapIds map_ids = 2;
Expand Down Expand Up @@ -401,4 +406,5 @@ message HookInfo {
optional Class pegasus_parser = 101;
optional ResolveClientCompanion resolveClientCompanion = 102;
optional GCommonResolverParams gCommonResolverParams = 103;
optional RewardAd rewardAd = 104;
}
2 changes: 2 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -281,4 +281,6 @@
<string name="pegasus_cover_ratio_title">推薦封面比例</string>
<string name="pegasus_cover_ratio_summary">自訂首頁推薦小卡(雙列顯示的)封面比例</string>
<string name="filter_search_remove_relate_promote">搜尋結果移除推廣</string>
<string name="skip_reward_ad_title">跳過視頻激勵廣告</string>
<string name="skip_reward_ad_summary">受不了了!我要看個爽!(需重啟兩次嗶哩嗶哩)</string>
</resources>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -306,4 +306,6 @@
<string name="auto_dark_splash_summary">防瞎眼</string>
<string name="no_live_mask_title">隐藏直播模糊遮罩</string>
<string name="no_live_mask_summary">隐藏部分直播的模糊遮罩</string>
<string name="skip_reward_ad_title">跳过视频激励广告</string>
<string name="skip_reward_ad_summary">受不了了!我要看个爽!(需重启两次哔哩哔哩)</string>
</resources>
5 changes: 5 additions & 0 deletions app/src/main/res/xml/prefs_setting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,11 @@
android:key="customize_bottom_bar"
android:summary="@string/customize_bottom_bar_summary"
android:title="@string/customize_bottom_bar_title" />
<SwitchPreference
android:dependency="hidden"
android:key="skip_reward_ad"
android:summary="@string/skip_reward_ad_summary"
android:title="@string/skip_reward_ad_title" />
<SwitchPreference
android:dependency="hidden"
android:key="purify_game"
Expand Down