Skip to main content

截图限制与webview页面无法拉取控件问题

· 2 min read
老陈

我们在脚本开发中, 尤其是游戏以及混合应用的开发中, 有些app无法进行截图与控件拉取, 无论我们使用root权限还是无障碍, 我们可以使用xp插件进行解决.

解除截图限制

private const val windowCls = "android.view.Window"

XposedHelpers.findAndHookMethod(
ClassGetter.findClass(windowCls),
"setFlags",
Int::class.java,
Int::class.java,
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
val flag = param.args[0] as Int
if (flag and 8192 != 0) {
param.args[0] = flag and 8192.inv()
LogUtil.print("绕过截图限制")
}

val mask = param.args[1] as Int
if (mask and 8192 != 0) {
param.args[1] = flag and 8192.inv()
}
}
}
)

禁用腾讯x5浏览器套间, 强制使用原生webview

国内很多app使用腾讯x5浏览器套件, 但是很可能会导致无法拉取控件, 从而无法获取控件上的文本以及按钮位置

XposedBridge.hookAllMethods(
ClassGetter.findClass("com.tencent.smtt.sdk.QbSdk"),
"isX5DisabledSync",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
param.result = true
LogUtil.print("禁用x5——1")
}
})

XposedBridge.hookAllMethods(
ClassGetter.findClass("com.tencent.smtt.sdk.QbSdk"),
"getIsInitX5Environment",
object : XC_MethodHook() {
override fun afterHookedMethod(param: MethodHookParam) {
param.result = false
LogUtil.print("禁用x5——2")
}
})