add: machikado per architecture

This commit makes the building system create one machikado per arch, from 2 to 4, so that integrity can be checked properly in 64-bit only and 32-bit only devices.
This commit is contained in:
ThePedroo
2025-04-29 22:44:43 -03:00
parent 96123aa53c
commit 68f1b1fb35
2 changed files with 24 additions and 33 deletions

View File

@@ -112,49 +112,35 @@ androidComponents.onVariants { variant ->
} }
} }
fun getSign(name: String, abi32: String, abi64: String) { fun getSign(name: String, abi: String, is64Bit: Boolean) {
val set = TreeSet<Pair<File, File?>> { o1, o2 -> val set = TreeSet<Pair<File, File?>> { o1, o2 ->
o1.first.path.replace("\\", "/") o1.first.path.replace("\\", "/")
.compareTo(o2.first.path.replace("\\", "/")) .compareTo(o2.first.path.replace("\\", "/"))
} }
val archSuffix = if (is64Bit) "64" else "32"
val pathSuffix = if (is64Bit) "lib64" else "lib"
set.add(Pair(root.file("module.prop").asFile, null)) set.add(Pair(root.file("module.prop").asFile, null))
set.add(Pair(root.file("sepolicy.rule").asFile, null)) set.add(Pair(root.file("sepolicy.rule").asFile, null))
set.add(Pair(root.file("post-fs-data.sh").asFile, null)) set.add(Pair(root.file("post-fs-data.sh").asFile, null))
set.add(Pair(root.file("service.sh").asFile, null)) set.add(Pair(root.file("service.sh").asFile, null))
set.add( set.add(
Pair( Pair(
root.file("lib/libzygisk.so").asFile, root.file("$pathSuffix/libzygisk.so").asFile,
root.file("lib/$abi32/libzygisk.so").asFile root.file("lib/$abi/libzygisk.so").asFile
) )
) )
set.add( set.add(
Pair( Pair(
root.file("lib64/libzygisk.so").asFile, root.file("bin/zygisk-ptrace$archSuffix").asFile,
root.file("lib/$abi64/libzygisk.so").asFile root.file("lib/$abi/libzygisk_ptrace.so").asFile
) )
) )
set.add( set.add(
Pair( Pair(
root.file("bin/zygisk-ptrace32").asFile, root.file("bin/zygiskd$archSuffix").asFile,
root.file("lib/$abi32/libzygisk_ptrace.so").asFile root.file("bin/$abi/zygiskd").asFile
)
)
set.add(
Pair(
root.file("bin/zygisk-ptrace64").asFile,
root.file("lib/$abi64/libzygisk_ptrace.so").asFile
)
)
set.add(
Pair(
root.file("bin/zygiskd32").asFile,
root.file("bin/$abi32/zygiskd").asFile
)
)
set.add(
Pair(
root.file("bin/zygiskd64").asFile,
root.file("bin/$abi64/zygiskd").asFile
) )
) )
sig.initSign(privKey) sig.initSign(privKey)
@@ -164,8 +150,11 @@ androidComponents.onVariants { variant ->
signFile.appendBytes(publicKey) signFile.appendBytes(publicKey)
} }
getSign("machikado.arm", "armeabi-v7a", "arm64-v8a") getSign("machikado.arm64", "arm64-v8a", true)
getSign("machikado.x86", "x86", "x86_64") getSign("machikado.arm", "armeabi-v7a", false)
getSign("machikado.x86_64", "x86_64", true)
getSign("machikado.x86", "x86", false)
} else { } else {
println("no private_key found, this build will not be signed") println("no private_key found, this build will not be signed")
root.file("machikado.arm").asFile.createNewFile() root.file("machikado.arm").asFile.createNewFile()

View File

@@ -139,6 +139,8 @@ if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
extract "$ZIPFILE" 'lib/x86/libzygisk.so' "$MODPATH/lib" true extract "$ZIPFILE" 'lib/x86/libzygisk.so' "$MODPATH/lib" true
extract "$ZIPFILE" 'lib/x86/libzygisk_ptrace.so' "$MODPATH/bin" true extract "$ZIPFILE" 'lib/x86/libzygisk_ptrace.so' "$MODPATH/bin" true
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32" mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32"
extract "$ZIPFILE" 'machikado.x86' "$MODPATH" true
fi fi
if [ "$SUPPORTS_64BIT" = true ]; then if [ "$SUPPORTS_64BIT" = true ]; then
@@ -148,10 +150,9 @@ if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
extract "$ZIPFILE" 'lib/x86_64/libzygisk.so' "$MODPATH/lib64" true extract "$ZIPFILE" 'lib/x86_64/libzygisk.so' "$MODPATH/lib64" true
extract "$ZIPFILE" 'lib/x86_64/libzygisk_ptrace.so' "$MODPATH/bin" true extract "$ZIPFILE" 'lib/x86_64/libzygisk_ptrace.so' "$MODPATH/bin" true
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64" mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
fi
extract "$ZIPFILE" 'machikado.x86' "$MODPATH" true extract "$ZIPFILE" 'machikado.x86_64' "$MODPATH" true
mv "$MODPATH/machikado.x86" "$MODPATH/machikado" fi
else else
if [ "$SUPPORTS_32BIT" = true ]; then if [ "$SUPPORTS_32BIT" = true ]; then
ui_print "- Extracting arm libraries" ui_print "- Extracting arm libraries"
@@ -160,6 +161,8 @@ else
extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk.so' "$MODPATH/lib" true extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk.so' "$MODPATH/lib" true
extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk_ptrace.so' "$MODPATH/bin" true extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk_ptrace.so' "$MODPATH/bin" true
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32" mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32"
extract "$ZIPFILE" 'machikado.arm' "$MODPATH" true
fi fi
if [ "$SUPPORTS_64BIT" = true ]; then if [ "$SUPPORTS_64BIT" = true ]; then
@@ -169,10 +172,9 @@ else
extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk.so' "$MODPATH/lib64" true extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk.so' "$MODPATH/lib64" true
extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk_ptrace.so' "$MODPATH/bin" true extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk_ptrace.so' "$MODPATH/bin" true
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64" mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
fi
extract "$ZIPFILE" 'machikado.arm' "$MODPATH" true extract "$ZIPFILE" 'machikado.arm64' "$MODPATH" true
mv "$MODPATH/machikado.arm" "$MODPATH/machikado" fi
fi fi
ui_print "- Setting permissions" ui_print "- Setting permissions"