@@ -180,6 +180,8 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
180
180
val fastjsonFieldAnnotation by Weak { " com.alibaba.fastjson.annotation.JSONField" from mClassLoader }
181
181
val gsonFieldAnnotation by Weak { " com.google.gson.annotations.SerializedName" from mClassLoader }
182
182
val pegasusParserClass by Weak { mHookInfo.pegasusParser from mClassLoader }
183
+ val resolveClientCompanionClass by Weak { mHookInfo.resolveClientCompanion.class_ from mClassLoader }
184
+ val videoDownloadEntryClass by Weak { " com.bilibili.videodownloader.model.VideoDownloadEntry" from mClassLoader }
183
185
184
186
// for v8.17.0+
185
187
val useNewMossFunc = instance.viewMossClass?.declaredMethods?.any {
@@ -359,6 +361,10 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
359
361
360
362
fun getDataSPMethod () = mHookInfo.dataSP.get.orNull
361
363
364
+ fun buildCommonResolverParamsMethod () =
365
+ mHookInfo.resolveClientCompanion.buildCommonResolverParams.orNull
366
+
367
+ fun setExtraContentMethod () = mHookInfo.gCommonResolverParams.setExtraContent.orNull
362
368
363
369
private fun readHookInfo (context : Context ): Configs .HookInfo {
364
370
try {
@@ -2336,6 +2342,46 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
2336
2342
? : return @class_
2337
2343
name = getPegasusParser.declaringClass.name
2338
2344
}
2345
+ resolveClientCompanion = resolveClientCompanion {
2346
+ val resolveClientClass = dexHelper.findMethodUsingString(
2347
+ " Invalid segment id: %s, segment list size:%s" ,
2348
+ false ,
2349
+ - 1 ,
2350
+ - 1 ,
2351
+ null ,
2352
+ - 1 ,
2353
+ null ,
2354
+ null ,
2355
+ null ,
2356
+ true
2357
+ ).asSequence().firstNotNullOfOrNull {
2358
+ dexHelper.decodeMethodIndex(it)?.declaringClass
2359
+ } ? : return @resolveClientCompanion
2360
+ val resolveClientCompanionClass = " ${resolveClientClass.name} \$ a" .from(classloader)
2361
+ ? : return @resolveClientCompanion
2362
+ val paramsClass =
2363
+ " com.bilibili.app.gemini.base.player.GeminiCommonResolverParams" .from(
2364
+ classloader
2365
+ )
2366
+ val videoDownloadEntryClass =
2367
+ " com.bilibili.videodownloader.model.VideoDownloadEntry" .from(classloader)
2368
+ val buildParamsMethod = resolveClientCompanionClass.declaredMethods.firstOrNull {
2369
+ it.returnType == paramsClass && it.parameterCount == 1 && it.parameterTypes[0 ] == videoDownloadEntryClass
2370
+ } ? : return @resolveClientCompanion
2371
+ class_ = class_ { name = resolveClientCompanionClass.name }
2372
+ buildCommonResolverParams = method { name = buildParamsMethod.name }
2373
+ }
2374
+ gCommonResolverParams = gCommonResolverParams {
2375
+ val commonResolverParamsClass =
2376
+ " com.bilibili.app.gemini.base.player.GeminiCommonResolverParams" .from(
2377
+ classloader
2378
+ ) ? : return @gCommonResolverParams
2379
+ val setExtraContentMethod = commonResolverParamsClass.declaredMethods?.firstOrNull {
2380
+ it.returnType == Void .TYPE && it.parameterCount == 1 && it.parameterTypes[0 ] == Map ::class .java
2381
+ } ? : return @gCommonResolverParams
2382
+ class_ = class_ { name = commonResolverParamsClass.name }
2383
+ setExtraContent = method { name = setExtraContentMethod.name }
2384
+ }
2339
2385
dexHelper.close()
2340
2386
}
2341
2387
0 commit comments