This commit is contained in:
chiteroman 2023-12-17 20:04:39 +01:00
parent 40cc836ae3
commit 6cd483afce
No known key found for this signature in database
GPG Key ID: 19171A27D600CC72
1 changed files with 45 additions and 44 deletions

View File

@ -31,6 +31,9 @@ import org.bouncycastle.util.io.pem.PemReader;
import java.io.StringReader;
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.KeyStoreSpi;
import java.security.SecureRandom;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
@ -48,7 +51,7 @@ import de.robv.android.xposed.callbacks.XC_LoadPackage;
public final class Xposed implements IXposedHookLoadPackage {
private static final KeyPair EC_KEYPAIR;
public static final KeyPair EC_KEYPAIR;
private static final Map<Integer, ASN1Primitive> map = new HashMap<>();
private static final SecureRandom random = new SecureRandom();
private static byte[] attestationChallengeBytes = new byte[0];
@ -327,9 +330,12 @@ public final class Xposed implements IXposedHookLoadPackage {
}
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
try {
Class<?> keyGenBuilder = XposedHelpers.findClass("android.security.keystore.KeyGenParameterSpec.Builder", lpparam.classLoader);
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "AndroidKeyStore");
XposedHelpers.findAndHookMethod(keyPairGenerator.getClass(), "generateKeyPair", XC_MethodReplacement.returnConstant(EC_KEYPAIR));
Class<?> keyGenBuilder = XposedHelpers.findClassIfExists("android.security.keystore.KeyGenParameterSpec.Builder", lpparam.classLoader);
XposedHelpers.findAndHookMethod(keyGenBuilder, "setAttestationChallenge", byte[].class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
@ -338,11 +344,9 @@ public final class Xposed implements IXposedHookLoadPackage {
}
});
Class<?> keyPairGenerator = XposedHelpers.findClass("android.security.keystore2.AndroidKeyStoreKeyPairGeneratorSpi", lpparam.classLoader);
XposedHelpers.findAndHookMethod(keyPairGenerator, "generateKeyPair", XC_MethodReplacement.returnConstant(EC_KEYPAIR));
Class<?> keyStoreSpi = XposedHelpers.findClass("android.security.keystore2.AndroidKeyStoreSpi", lpparam.classLoader);
XposedHelpers.findAndHookMethod(keyStoreSpi, "engineGetCertificateChain", String.class, new XC_MethodHook() {
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
KeyStoreSpi keyStoreSpi = (KeyStoreSpi) XposedHelpers.getObjectField(keyStore, "keyStoreSpi");
XposedHelpers.findAndHookMethod(keyStoreSpi.getClass(), "engineGetCertificateChain", String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
try {
@ -384,8 +388,5 @@ public final class Xposed implements IXposedHookLoadPackage {
}
}
});
} catch (Throwable t) {
XposedBridge.log("ERROR: " + t);
}
}
}