Skip to content

Commit

Permalink
fix banned list
Browse files Browse the repository at this point in the history
  • Loading branch information
TinyHai committed Apr 24, 2024
1 parent b4a4033 commit bb8b57c
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 78 deletions.
5 changes: 1 addition & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
- 添加弹窗验证功能(默认使用系统的密码验证)
- 添加独立密码配置(若开启,部分配置项修改会要求验证密码,且弹窗验证也使用该密码验证)
- 独立密码忘记了?3秒内点按右上角消息图标5次清除密码
- 更新版本号
- 修复v1.2.0引入的bug(未加入禁止列表的应用也被拦截)
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ android {
applicationId = "cn.tinyhai.ban_uninstall"
minSdk = 21
targetSdk = 34
versionCode = 3
versionName = "1.2.0"
versionCode = 4
versionName = "1.2.1"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
160 changes: 88 additions & 72 deletions app/src/main/java/cn/tinyhai/ban_uninstall/hooker/HookSystem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ class HookSystem(
logger.info("${param.method.name}(packageName: $packageName, observer2: ${observer2.hashCode()} userId: $userId)")
val isUseBannedList = XSharedPrefs.isUseBannedList
val isShowConfirm = XSharedPrefs.isShowConfirm
logger.info("(isUseBannedList: $isUseBannedList, isShowConfirm: $isShowConfirm) -> return early")
logger.info("(isUseBannedList: $isUseBannedList, isShowConfirm: $isShowConfirm)")

fun postObserver() {
observer2?.let {
Expand All @@ -201,43 +201,51 @@ class HookSystem(
}
}

if (isUseBannedList && TransactService.contains(packageName, userId)) {
logger.info("${packageName}:$userId is in banned list")
if (isShowConfirm) {
AuthService.showUninstallConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent uninstall")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
when {
!isUseBannedList -> {
if (isShowConfirm) {
AuthService.showUninstallConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent uninstall")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
}
param.result = null
}
param.result = null
} else {
if (isShowConfirm) {
AuthService.showUninstallConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent uninstall")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()

TransactService.contains(packageName, userId) -> {
logger.info("${packageName}:$userId is in banned list -> return early")
if (isShowConfirm) {
AuthService.showUninstallConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent uninstall")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
}
param.result = null
}

else -> {
logger.info("$packageName:$userId is not in banned list -> pass")
}
param.result = null
}
}

Expand Down Expand Up @@ -275,7 +283,7 @@ class HookSystem(
logger.info("${param.method.name}(packageName: $packageName, observer: ${observer.hashCode()}, userId: $userId)")
val isUseBannedList = XSharedPrefs.isUseBannedList
val isShowConfirm = XSharedPrefs.isShowConfirm
logger.info("(isUseBannedList: $isUseBannedList, isShowConfirm: $isShowConfirm) -> return early")
logger.info("(isUseBannedList: $isUseBannedList, isShowConfirm: $isShowConfirm, isFromAm: $isFromAm)")

fun postObserver() {
observer?.let {
Expand All @@ -300,43 +308,51 @@ class HookSystem(
}
}

if (isUseBannedList && TransactService.contains(packageName, userId)) {
logger.info("${packageName}:$userId is in banned list")
if (isShowConfirm) {
AuthService.showClearDataConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent clear")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
when {
!isUseBannedList -> {
if (isShowConfirm) {
AuthService.showClearDataConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent clear")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
}
param.result = if (isFromAm) true else null
}
param.result = if (isFromAm) true else null
} else {
if (isShowConfirm) {
AuthService.showClearDataConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent clear")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()

TransactService.contains(packageName, userId) -> {
logger.info("${packageName}:$userId is in banned list -> return early")
if (isShowConfirm) {
AuthService.showClearDataConfirm(
onConfirm = {
invokeOrigin()
},
onCancel = {
postObserver()
logger.info("prevent clear")
},
pkgInfo = PkgInfo(packageName, userId),
callingUid = Binder.getCallingUid(),
callingPackageName = AuthService.getCallingPackageName(Binder.getCallingPid())
)
} else {
postObserver()
}
param.result = if (isFromAm) true else null
}

else -> {
logger.info("${packageName}:$userId is not in banned list -> pass")
}
param.result = if (isFromAm) true else null
}
}

Expand Down

0 comments on commit bb8b57c

Please sign in to comment.