@@ -48,6 +48,16 @@ object NoAutoTurnOff : BaseHook() {
4848 }.toMethod()
4949 }
5050
51+ private val nullMethodNew by lazy {
52+ DexKit .getDexKitBridge(" NoAutoTurnOff1N" ) {
53+ it.findMethod {
54+ matcher {
55+ addUsingStringsEquals(" UnionShare" , " EnabledState" )
56+ }
57+ }.single().getMethodInstance(safeClassLoader)
58+ }.toMethod()
59+ }
60+
5161 private val null2Method by lazy {
5262 DexKit .getDexKitBridge(" NoAutoTurnOff2" ) {
5363 it.findMethod {
@@ -88,6 +98,19 @@ object NoAutoTurnOff : BaseHook() {
8898 }.toMethodList()
8999 }
90100
101+ private val toastMethodNew by lazy {
102+ DexKit .getDexKitBridgeList(" NoAutoTurnOff4N" ) {
103+ it.findMethod {
104+ matcher {
105+ declaredClass {
106+ addUsingStringsEquals(" MiShareStateMachine" )
107+ }
108+ paramCount = 0
109+ }
110+ }.toElementList()
111+ }.toMethodList()
112+ }
113+
91114 private val showToastMethod by lazy {
92115 DexKit .getDexKitBridge(" NoAutoTurnOff5" ) {
93116 it.findMethod {
@@ -105,7 +128,7 @@ object NoAutoTurnOff : BaseHook() {
105128 }
106129
107130 private val nullField by lazy {
108- DexKit .getDexKitBridge(" NoAutoTurnOff3 " ) {
131+ DexKit .getDexKitBridge(" NoAutoTurnOff6 " ) {
109132 it.findField {
110133 matcher {
111134 addReadMethod {
@@ -114,18 +137,54 @@ object NoAutoTurnOff : BaseHook() {
114137 paramCount = 1
115138 modifiers = Modifier .PRIVATE
116139 }
117- modifiers = Modifier .STATIC or Modifier .FINAL
140+ modifiers = Modifier .PRIVATE or Modifier . STATIC or Modifier .FINAL
118141 type = " int"
119142 }
120143 }.singleOrNull()?.getFieldInstance(safeClassLoader)
121144 }.toField()
122145 }
123146
147+ private val null2Field by lazy {
148+ DexKit .getDexKitBridge(" NoAutoTurnOff7" ) {
149+ it.findField {
150+ matcher {
151+ addReadMethod {
152+ addUsingStringsEquals(" stopAdvertAllDelay" )
153+ returnType = " void"
154+ paramCount = 0
155+ modifiers = Modifier .PRIVATE
156+ }
157+ modifiers = Modifier .PRIVATE or Modifier .FINAL
158+ type = " int"
159+ }
160+ }.singleOrNull()?.getFieldInstance(safeClassLoader)
161+ }.toField()
162+ }
163+
164+ private val null2FieldMethod by lazy {
165+ DexKit .getDexKitBridge(" NoAutoTurnOff8" ) {
166+ it.findMethod {
167+ matcher {
168+ addUsingStringsEquals(" stopAdvertAllDelay" )
169+ returnType = " void"
170+ paramCount = 0
171+ modifiers = Modifier .PRIVATE
172+ }
173+ }.single().getMethodInstance(safeClassLoader)
174+ }.toMethod()
175+ }
176+
124177 override fun init () {
125178 // 禁用小米互传功能自动关闭部分
126179 runCatching {
127- setOf (nullMethod, null2Method).createHooks {
128- returnConstant(null )
180+ try {
181+ setOf (nullMethod, null2Method).createHooks {
182+ returnConstant(null )
183+ }
184+ } catch (_: Exception ) {
185+ setOf (nullMethodNew, null2Method).createHooks {
186+ returnConstant(null )
187+ }
129188 }
130189 }
131190
@@ -145,26 +204,69 @@ object NoAutoTurnOff : BaseHook() {
145204 runCatching {
146205 findAndHookConstructor(nullField.javaClass, object : MethodHook () {
147206 override fun after (param : MethodHookParam ) {
148- XposedHelpers .setObjectField(param.thisObject, nullField.name, 999999999 )
207+ XposedHelpers .setObjectField(param.thisObject, nullField.name, 2147483647 )
149208 logI(TAG , lpparam.packageName, " nullField hook success, $nullField " )
150209 } })
151210 }
152211
153- // 干掉小米互传十分钟倒计时 Toast
154- toastMethod.createHooks {
155- before { param ->
156- findAndHookMethod(Context ::class .java, " getString" , Int ::class .java, object : MethodHook () {
157- override fun before (param : MethodHookParam ) {
158- val resName = (param.thisObject as Context ).resources.getResourceName(param.args[0 ] as Int )
159- if (resName == " com.miui.mishare.connectivity:string/toast_auto_close_in_minutes" ) param.result = " Modify by HyperCeiler"
160- }
161- })
162- hookMethod(showToastMethod, object : MethodHook () {
163- @Throws(Throwable ::class )
212+ try {
213+ runCatching {
214+ hookMethod(null2FieldMethod, object : MethodHook () {
164215 override fun before (param : MethodHookParam ) {
165- if (param.args[1 ].toString() == " Modify by HyperCeiler" ) param.result = null
166- }
167- })
216+ XposedHelpers .setObjectField(param.thisObject, null2Field.name, 2147483647 )
217+ } })
218+ }
219+ } catch (_: Exception ) {
220+ }
221+
222+ // 干掉小米互传十分钟倒计时 Toast
223+ if (toastMethod.isNotEmpty()) {
224+ toastMethod.createHooks {
225+ before { param ->
226+ findAndHookMethod(
227+ Context ::class .java,
228+ " getString" ,
229+ Int ::class .java,
230+ object : MethodHook () {
231+ override fun before (param : MethodHookParam ) {
232+ val resName =
233+ (param.thisObject as Context ).resources.getResourceName(param.args[0 ] as Int )
234+ if (resName == " com.miui.mishare.connectivity:string/toast_auto_close_in_minutes" ) param.result =
235+ " Modify by HyperCeiler"
236+ }
237+ })
238+ hookMethod(showToastMethod, object : MethodHook () {
239+ @Throws(Throwable ::class )
240+ override fun before (param : MethodHookParam ) {
241+ if (param.args[1 ].toString() == " Modify by HyperCeiler" ) param.result =
242+ null
243+ }
244+ })
245+ }
246+ }
247+ } else {
248+ toastMethodNew.createHooks {
249+ before { param ->
250+ findAndHookMethod(
251+ Context ::class .java,
252+ " getString" ,
253+ Int ::class .java,
254+ object : MethodHook () {
255+ override fun before (param : MethodHookParam ) {
256+ val resName =
257+ (param.thisObject as Context ).resources.getResourceName(param.args[0 ] as Int )
258+ if (resName == " com.miui.mishare.connectivity:string/toast_or_desc_advert_all_open" ) param.result =
259+ " Modify by HyperCeiler"
260+ }
261+ })
262+ hookMethod(showToastMethod, object : MethodHook () {
263+ @Throws(Throwable ::class )
264+ override fun before (param : MethodHookParam ) {
265+ if (param.args[1 ].toString() == " Modify by HyperCeiler" ) param.result =
266+ null
267+ }
268+ })
269+ }
168270 }
169271 }
170272 }
0 commit comments