mirror of
https://github.com/chiteroman/TrickyStore.git
synced 2025-07-17 15:29:32 +00:00
verify module.prop
This commit is contained in:
@@ -1,10 +1,33 @@
|
||||
import android.databinding.tool.ext.capitalizeUS
|
||||
import org.jetbrains.kotlin.daemon.common.toHexString
|
||||
import java.security.MessageDigest
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.jetbrains.kotlin.android)
|
||||
alias(libs.plugins.agp.app)
|
||||
}
|
||||
|
||||
val moduleId: String by rootProject.extra
|
||||
val moduleName: String by rootProject.extra
|
||||
val verCode: Int by rootProject.extra
|
||||
val verName: String by rootProject.extra
|
||||
val commitHash: String by rootProject.extra
|
||||
val author: String by rootProject.extra
|
||||
val description: String by rootProject.extra
|
||||
val moduleDescription = description
|
||||
|
||||
fun calculateChecksum(variantLowered: String): String {
|
||||
return MessageDigest.getInstance("SHA-256").run {
|
||||
update(moduleId.toByteArray(Charsets.UTF_8))
|
||||
update(moduleName.toByteArray(Charsets.UTF_8))
|
||||
update("$verName ($verCode-$commitHash-$variantLowered)".toByteArray(Charsets.UTF_8))
|
||||
update(verCode.toString().toByteArray(Charsets.UTF_8))
|
||||
update(author.toByteArray(Charsets.UTF_8))
|
||||
update(description.toByteArray(Charsets.UTF_8))
|
||||
digest().toHexString()
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "io.github.a13e300.tricky_store"
|
||||
compileSdk = 34
|
||||
@@ -22,6 +45,10 @@ android {
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
forEach {
|
||||
val checksum = calculateChecksum(it.name)
|
||||
it.buildConfigField("String", "CHECKSUM", "\"$checksum\"")
|
||||
}
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
@@ -44,6 +71,11 @@ android {
|
||||
checkReleaseBuilds = false
|
||||
abortOnError = true
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
buildConfig = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
package io.github.a13e300.tricky_store
|
||||
|
||||
import java.io.File
|
||||
import java.security.MessageDigest
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
verifySelf()
|
||||
Logger.i("Welcome to TrickyStore!")
|
||||
while (true) {
|
||||
if (!KeystoreInterceptor.tryRunKeystoreInterceptor()) {
|
||||
@@ -13,3 +18,42 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
fun verifySelf() {
|
||||
val kv = mutableMapOf<String, String>()
|
||||
val prop = File("./module.prop")
|
||||
runCatching {
|
||||
if (prop.canonicalPath != "/data/adb/modules/tricky_store/module.prop") error("wrong directory ${prop.canonicalPath}!")
|
||||
prop.forEachLine(Charsets.UTF_8) {
|
||||
val a = it.split("=", limit = 2)
|
||||
if (a.size != 2) return@forEachLine
|
||||
kv[a[0]] = a[1]
|
||||
}
|
||||
val checksum = MessageDigest.getInstance("SHA-256").run {
|
||||
update(kv["id"]!!.toByteArray(Charsets.UTF_8))
|
||||
update(kv["name"]!!.toByteArray(Charsets.UTF_8))
|
||||
update(kv["version"]!!.toByteArray(Charsets.UTF_8))
|
||||
update(kv["versionCode"]!!.toByteArray(Charsets.UTF_8))
|
||||
update(kv["author"]!!.toByteArray(Charsets.UTF_8))
|
||||
update(kv["description"]!!.toByteArray(Charsets.UTF_8))
|
||||
digest().toHexString()
|
||||
}
|
||||
if (checksum != BuildConfig.CHECKSUM) {
|
||||
Logger.e("unverified module files! ($checksum != ${BuildConfig.CHECKSUM})")
|
||||
prop.writeText(kv.entries.joinToString("\n") { (k, v) ->
|
||||
when (k) {
|
||||
"description" -> "description=×Module files corrupted, please re-download it from github.com/5ec1cff/TrickyStore"
|
||||
"author" -> "author=5ec1cff"
|
||||
else -> "$k=$v"
|
||||
}
|
||||
})
|
||||
File("./remove").createNewFile()
|
||||
exitProcess(1)
|
||||
}
|
||||
Logger.d("verify success!")
|
||||
}.onFailure {
|
||||
Logger.e("error while verifying self", it)
|
||||
exitProcess(1)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user