Fix skipping SSL validation failure

This commit is contained in:
方块君 2022-05-13 19:58:54 +08:00
parent 196cb5c1a6
commit 5e742aa932

View File

@ -151,7 +151,7 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
forceUrl = sp.getBoolean("forceUrl", false) forceUrl = sp.getBoolean("forceUrl", false)
server = sp.getString("serverip", "") ?: "" server = sp.getString("serverip", "") ?: ""
proxyList = sp.getBoolean("ProxyList", false) proxyList = sp.getBoolean("ProxyList", false)
if (sp.getBoolean("KeepSSL", false)) sslHook(lpparam) if (sp.getBoolean("KeepSSL", false)) sslHook()
} }
hook() hook()
findMethod(Activity::class.java, true) { name == "onCreate" }.hookBefore { param -> findMethod(Activity::class.java, true) { name == "onCreate" }.hookBefore { param ->
@ -532,7 +532,7 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
val webview = loadClass("com.miHoYo.sdk.webview.MiHoYoWebview") val webview = loadClass("com.miHoYo.sdk.webview.MiHoYoWebview")
webview.invokeStaticMethod("init", args(activity, "test_webview"), argTypes(Activity::class.java, String::class.java)) webview.invokeStaticMethod("init", args(activity, "test_webview"), argTypes(Activity::class.java, String::class.java))
webview.invokeStaticMethod("show", args("test_webview"), argTypes(String::class.java)) webview.invokeStaticMethod("show", args("test_webview"), argTypes(String::class.java))
webview.invokeStaticMethod("load", args("test_webview", "https://www.baidu.com"), argTypes(String::class.java, String::class.java)) webview.invokeStaticMethod("load", args("test_webview", "https://www.fkj233.cn/gourl/"), argTypes(String::class.java, String::class.java))
} }
}) })
}) })
@ -565,7 +565,8 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
windowManager.addView(imageView, layoutParams) windowManager.addView(imageView, layoutParams)
} }
private fun sslHook(lpparam: XC_LoadPackage.LoadPackageParam) { private fun sslHook() {
// OkHttp3 Hook
findMethodOrNull("com.combosdk.lib.third.okhttp3.OkHttpClient\$Builder") { name == "build" }?.hookBefore { findMethodOrNull("com.combosdk.lib.third.okhttp3.OkHttpClient\$Builder") { name == "build" }?.hookBefore {
it.thisObject.invokeMethod("sslSocketFactory", args(getDefaultSSLSocketFactory()), argTypes(SSLSocketFactory::class.java)) it.thisObject.invokeMethod("sslSocketFactory", args(getDefaultSSLSocketFactory()), argTypes(SSLSocketFactory::class.java))
it.thisObject.invokeMethod("hostnameVerifier", args(getDefaultHostnameVerifier()), argTypes(HostnameVerifier::class.java)) it.thisObject.invokeMethod("hostnameVerifier", args(getDefaultHostnameVerifier()), argTypes(HostnameVerifier::class.java))
@ -574,6 +575,7 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
it.thisObject.invokeMethod("sslSocketFactory", args(getDefaultSSLSocketFactory(), DefaultTrustManager()), argTypes(SSLSocketFactory::class.java, X509TrustManager::class.java)) it.thisObject.invokeMethod("sslSocketFactory", args(getDefaultSSLSocketFactory(), DefaultTrustManager()), argTypes(SSLSocketFactory::class.java, X509TrustManager::class.java))
it.thisObject.invokeMethod("hostnameVerifier", args(getDefaultHostnameVerifier()), argTypes(HostnameVerifier::class.java)) it.thisObject.invokeMethod("hostnameVerifier", args(getDefaultHostnameVerifier()), argTypes(HostnameVerifier::class.java))
} }
// WebView Hook
arrayListOf( arrayListOf(
"android.webkit.WebViewClient", "android.webkit.WebViewClient",
"cn.sharesdk.framework.g", "cn.sharesdk.framework.g",
@ -585,6 +587,25 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
(param.args[1] as SslErrorHandler).proceed() (param.args[1] as SslErrorHandler).proceed()
} }
} }
// Android HttpsURLConnection Hook
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "getDefaultSSLSocketFactory" }?.hookBefore {
it.result = getDefaultSSLSocketFactory()
}
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "setSSLSocketFactory" }?.hookBefore {
it.result = null
}
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "setDefaultSSLSocketFactory" }?.hookBefore {
it.result = null
}
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "setHostnameVerifier" }?.hookBefore {
it.result = null
}
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "setDefaultHostnameVerifier" }?.hookBefore {
it.result = null
}
findMethodOrNull("javax.net.ssl.HttpsURLConnection") { name == "getDefaultHostnameVerifier" }?.hookBefore {
it.result = getDefaultHostnameVerifier()
}
} }
private fun hook() { private fun hook() {