@@ -49,8 +49,9 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
49
49
val rxGeneralResponseClass by Weak { " com.bilibili.okretro.call.rxjava.RxGeneralResponse" from mClassLoader }
50
50
val fastJsonClass by Weak { mHookInfo.fastJson.class_ from mClassLoader }
51
51
val bangumiUniformSeasonClass by Weak { mHookInfo.bangumiSeason from mClassLoader }
52
- val sectionClass by Weak { mHookInfo.section.class_ from mClassLoader }
53
- val viewHolderClass by Weak { mHookInfo.section.viewHolder from mClassLoader }
52
+ val kingPositionComponentClass by Weak { mHookInfo.autoLike.kingPositionComponent.class_ from mClassLoader }
53
+ val storyAbsControllerClass by Weak { mHookInfo.autoLike.storyAbsController.class_ from mClassLoader }
54
+ val storyDetailClass by Weak { " com.bilibili.video.story.StoryDetail" from mClassLoader }
54
55
val retrofitResponseClass by Weak { mHookInfo.retrofitResponse from mClassLoader }
55
56
val themeHelperClass by Weak { mHookInfo.themeHelper.class_ from mClassLoader }
56
57
val themeIdHelperClass by Weak { mHookInfo.themeIdHelper.class_ from mClassLoader }
@@ -237,11 +238,11 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
237
238
238
239
fun requestField () = mHookInfo.okHttp.response.request.orNull
239
240
240
- fun likeMethod () = mHookInfo.section.like .orNull
241
+ fun componentMapField () = mHookInfo.autoLike.kingPositionComponent.componentMap .orNull
241
242
242
- fun bindViewMethod () = mHookInfo.section.bindView .orNull
243
+ fun setMDataMethod () = mHookInfo.autoLike.storyAbsController.setMData .orNull
243
244
244
- fun getRootMethod () = mHookInfo.section.getRoot .orNull
245
+ fun getMPlayerMethod () = mHookInfo.autoLike.storyAbsController.getMPlayer .orNull
245
246
246
247
fun themeName () = mHookInfo.themeName.field.orNull
247
248
@@ -852,68 +853,74 @@ class BiliBiliPackage constructor(private val mClassLoader: ClassLoader, mContex
852
853
}?.name ? : return @field
853
854
}
854
855
}
855
- section = section {
856
- val kingPositionComponentClass = dexHelper.findMethodUsingString(
857
- " LikeClicked(view=" ,
858
- false ,
859
- - 1 ,
860
- - 1 ,
861
- null ,
862
- - 1 ,
863
- null ,
864
- null ,
865
- null ,
866
- true
867
- ).asSequence().firstNotNullOfOrNull {
868
- dexHelper.decodeMethodIndex(it)?.declaringClass?.run {
869
- var outerClass = this
870
- while (outerClass.declaringClass != null ) {
871
- outerClass = outerClass.declaringClass!!
856
+ autoLike = autoLike {
857
+ kingPositionComponent = kingPositionComponent {
858
+ val kingPositionComponentClass = dexHelper.findMethodUsingString(
859
+ " LikeClicked(view=" ,
860
+ false ,
861
+ - 1 ,
862
+ - 1 ,
863
+ null ,
864
+ - 1 ,
865
+ null ,
866
+ null ,
867
+ null ,
868
+ true
869
+ ).asSequence().firstNotNullOfOrNull {
870
+ dexHelper.decodeMethodIndex(it)?.declaringClass?.run {
871
+ var outerClass = this
872
+ while (outerClass.declaringClass != null ) {
873
+ outerClass = outerClass.declaringClass!!
874
+ }
875
+ outerClass
872
876
}
873
- outerClass
874
- }
875
- }
876
- val genericInterface = kingPositionComponentClass?.genericInterfaces?.getOrNull(0 )
877
- val parameterType = (genericInterface as ? ParameterizedType )?.actualTypeArguments?.getOrNull(0 )
878
- val viewHolderClass = if (parameterType is ParameterizedType ) {
879
- parameterType.rawType
880
- } else {
881
- parameterType
882
- }?.let { it as ? Class <* > }
883
- val getRootMethod = viewHolderClass?.declaredMethods?.firstOrNull {
884
- it.returnType == View ::class .java && it.parameterCount == 0
885
- }
886
- val bindViewMethod = kingPositionComponentClass?.declaredMethods?.firstOrNull {
887
- it.isPublic && it.parameterCount == 2
888
- && it.parameterTypes[0 ] == viewHolderClass
889
- }
890
- if (kingPositionComponentClass != null && viewHolderClass != null && bindViewMethod != null && getRootMethod != null ) {
877
+ } ? : return @kingPositionComponent
878
+ val componentMapField = kingPositionComponentClass.declaredFields.firstOrNull {
879
+ it.type == Map ::class .java
880
+ } ? : return @kingPositionComponent
891
881
class_ = class_ { name = kingPositionComponentClass.name }
892
- viewHolder = class_ { name = viewHolderClass.name }
893
- bindView = method { name = bindViewMethod.name }
894
- getRoot = method { name = getRootMethod.name }
895
- return @section
882
+ componentMap = field { name = componentMapField.name }
883
+ }
884
+ storyAbsController = storyAbsController {
885
+ val storyAbsControllerClass = dexHelper.findMethodUsingString(
886
+ " notify player state fail" ,
887
+ false ,
888
+ - 1 ,
889
+ - 1 ,
890
+ null ,
891
+ - 1 ,
892
+ null ,
893
+ null ,
894
+ null ,
895
+ true
896
+ ).asSequence().mapNotNull {
897
+ dexHelper.decodeMethodIndex(it)?.declaringClass
898
+ }.firstOrNull() ? : return @storyAbsController
899
+ val storyPagerPlayerInterface = dexHelper.findMethodUsingString(
900
+ " play item but is inactivate" ,
901
+ false ,
902
+ - 1 ,
903
+ - 1 ,
904
+ null ,
905
+ - 1 ,
906
+ null ,
907
+ null ,
908
+ null ,
909
+ true
910
+ ).asSequence().mapNotNull {
911
+ dexHelper.decodeMethodIndex(it)?.declaringClass?.interfaces?.getOrNull(0 )
912
+ }.firstOrNull() ? : return @storyAbsController
913
+ val storyDetailClass = " com.bilibili.video.story.StoryDetail" .from(classloader)
914
+ val setMDataMethod = storyAbsControllerClass.declaredMethods.firstOrNull {
915
+ it.returnType == Void .TYPE && it.parameterCount == 1 && it.parameterTypes[0 ] == storyDetailClass
916
+ } ? : return @storyAbsController
917
+ val getMPlayerMethod = storyAbsControllerClass.declaredMethods.firstOrNull {
918
+ storyPagerPlayerInterface.isAssignableFrom(it.returnType) && it.parameterCount == 0
919
+ } ? : return @storyAbsController
920
+ class_ = class_ { name = storyAbsControllerClass.name }
921
+ setMData = method { name = setMDataMethod.name }
922
+ getMPlayer = method { name = getMPlayerMethod.name }
896
923
}
897
-
898
- val sectionClass = dexHelper.findMethodUsingString(
899
- " ActionViewHolder" ,
900
- false ,
901
- - 1 ,
902
- - 1 ,
903
- null ,
904
- - 1 ,
905
- null ,
906
- null ,
907
- null ,
908
- true
909
- ).firstOrNull()?.let {
910
- dexHelper.decodeMethodIndex(it)
911
- }?.declaringClass ? : return @section
912
- val likeMethod = sectionClass?.superclass?.declaredMethods?.find {
913
- it.parameterTypes.size == 1 && it.returnType == Void .TYPE && ! it.isFinal
914
- } ? : return @section
915
- class_ = class_ { name = sectionClass.name }
916
- like = method { name = likeMethod.name }
917
924
}
918
925
signQuery = signQuery {
919
926
val signedQueryClass =
0 commit comments