From c620cecc2f308892d38b2a8cbc190a9a5616f401 Mon Sep 17 00:00:00 2001 From: 5ec1cff Date: Thu, 18 Jul 2024 10:51:35 +0800 Subject: [PATCH] retry --- .../tricky_store/KeystoreInterceptor.kt | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/service/src/main/java/io/github/a13e300/tricky_store/KeystoreInterceptor.kt b/service/src/main/java/io/github/a13e300/tricky_store/KeystoreInterceptor.kt index f5bb9b0..caa3e96 100644 --- a/service/src/main/java/io/github/a13e300/tricky_store/KeystoreInterceptor.kt +++ b/service/src/main/java/io/github/a13e300/tricky_store/KeystoreInterceptor.kt @@ -88,7 +88,8 @@ object KeystoreInterceptor : BinderInterceptor() { return Skip } - private var tried = false + private var triedCount = 0 + private var injected = false fun tryRunKeystoreInterceptor(): Boolean { Logger.i("trying to register keystore interceptor ...") @@ -96,25 +97,28 @@ object KeystoreInterceptor : BinderInterceptor() { val bd = getBinderBackdoor(b) if (bd == null) { // no binder hook, try inject - if (tried) { + if (triedCount >= 3) { Logger.e("inject tried but still has no backdoor, exit") exitProcess(1) } - Logger.i("trying to inject keystore ...") - val p = Runtime.getRuntime().exec( - arrayOf( - "/system/bin/sh", - "-c", - "exec ./inject `pidof keystore2` libtricky_store.so entry" + if (!injected) { + Logger.i("trying to inject keystore ...") + val p = Runtime.getRuntime().exec( + arrayOf( + "/system/bin/sh", + "-c", + "exec ./inject `pidof keystore2` libtricky_store.so entry" + ) ) - ) - // logD(p.inputStream.readBytes().decodeToString()) - // logD(p.errorStream.readBytes().decodeToString()) - if (p.waitFor() != 0) { - Logger.e("failed to inject! daemon exit") - exitProcess(1) + // logD(p.inputStream.readBytes().decodeToString()) + // logD(p.errorStream.readBytes().decodeToString()) + if (p.waitFor() != 0) { + Logger.e("failed to inject! daemon exit") + exitProcess(1) + } + injected = true } - tried = true + triedCount += 1 return false } val ks = IKeystoreService.Stub.asInterface(b)