From f0aaebff62c5090ae15e97b4cbf9a16291cd0139 Mon Sep 17 00:00:00 2001 From: MagicWizz <63803959+MagicWizz@users.noreply.github.com> Date: Thu, 8 Oct 2020 01:29:42 +0200 Subject: [PATCH] Add other function to bypass These function aren't currently hooked by JustTrustMe, but they are used in some applications. --- app/src/main/java/just/trust/me/Main.java | 41 ++++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/just/trust/me/Main.java b/app/src/main/java/just/trust/me/Main.java index e8a066d..2e3727d 100644 --- a/app/src/main/java/just/trust/me/Main.java +++ b/app/src/main/java/just/trust/me/Main.java @@ -2,6 +2,7 @@ package just.trust.me; import android.content.Context; import android.net.http.SslError; +import android.net.http.X509TrustManagerExtensions; import android.util.Log; import android.webkit.SslErrorHandler; import android.webkit.WebView; @@ -34,6 +35,7 @@ import java.util.List; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.KeyManager; import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLParameters; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; @@ -102,6 +104,20 @@ public class Main implements IXposedHookLoadPackage { } }); + findAndHookMethod(X509TrustManagerExtensions.class, "checkServerTrusted", X509Certificate[].class, String.class, String.class, new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { + return param.args[0]; + } + }); + + findAndHookMethod("android.security.net.config.NetworkSecurityTrustManager", lpparam.classLoader, "checkPins", List.class, new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { + return null; + } + }); + /* external/apache-http/src/org/apache/http/conn/ssl/SSLSocketFactory.java */ /* public SSLSocketFactory( ... ) */ Log.d(TAG, "Hooking SSLSocketFactory(String, KeyStore, String, KeyStore) for: " + currentPackageName); @@ -303,6 +319,23 @@ public class Main implements IXposedHookLoadPackage { return list; } }); + + findAndHookMethod("com.android.org.conscrypt.TrustManagerImpl", lpparam.classLoader, "checkTrusted", X509Certificate[].class, String.class, SSLSession.class, SSLParameters.class, boolean.class, new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { + ArrayList list = new ArrayList(); + return list; + } + }); + + + findAndHookMethod("com.android.org.conscrypt.TrustManagerImpl", lpparam.classLoader, "checkTrusted", X509Certificate[].class, byte[].class, byte[].class, String.class, String.class, boolean.class, new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(MethodHookParam param) throws Throwable { + ArrayList list = new ArrayList(); + return list; + } + }); } } // End Hooks @@ -556,10 +589,10 @@ public class Main implements IXposedHookLoadPackage { public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } - public List checkServerTrusted(X509Certificate[] chain, String authType, String host) throws CertificateException { - ArrayList list = new ArrayList(); - return list; - } + public List checkServerTrusted(X509Certificate[] chain, String authType, String host) throws CertificateException { + ArrayList list = new ArrayList(); + return list; + } @Override public X509Certificate[] getAcceptedIssuers() {