Skip to content

Commit 6cc6064

Browse files
committed
fix: mishare-noautoturnoff in hy2
1 parent 8bd5147 commit 6cc6064

File tree

1 file changed

+121
-19
lines changed

1 file changed

+121
-19
lines changed

app/src/main/java/com/sevtinge/hyperceiler/module/hook/mishare/NoAutoTurnOff.kt

Lines changed: 121 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)