You've already forked ReZygisk
mirror of
https://github.com/PerformanC/ReZygisk.git
synced 2025-09-06 06:37:01 +00:00
Add flashable module
This commit is contained in:
@@ -17,26 +17,3 @@ cargo {
|
||||
val isDebug = gradle.startParameter.taskNames.any { it.toLowerCase().contains("debug") }
|
||||
profile = if (isDebug) "debug" else "release"
|
||||
}
|
||||
|
||||
androidComponents.onVariants { variant ->
|
||||
val variantCapped = variant.name.capitalize()
|
||||
task("build$variantCapped") {
|
||||
group = "zygiskd"
|
||||
cargo.targets?.forEach {
|
||||
dependsOn("cargoBuild${it.capitalize()}")
|
||||
}
|
||||
}
|
||||
|
||||
task("push$variantCapped") {
|
||||
group = "zygiskd"
|
||||
dependsOn("cargoBuildArm", "cargoBuildArm64")
|
||||
doLast {
|
||||
val moduleDir = "/data/adb/ksu/modules/zygisksu"
|
||||
exec { commandLine("adb", "push", "build/rustJniLibs/android/armeabi-v7a/zygiskd", "/data/local/tmp/zygiskd32") }
|
||||
exec { commandLine("adb", "push", "build/rustJniLibs/android/arm64-v8a/zygiskd", "/data/local/tmp/zygiskd64") }
|
||||
exec { commandLine("adb", "shell", "su", "-c", "mv /data/local/tmp/zygiskd32 $moduleDir/zygiskd32") }
|
||||
exec { commandLine("adb", "shell", "su", "-c", "mv /data/local/tmp/zygiskd64 $moduleDir/zygiskd64") }
|
||||
exec { commandLine("adb", "shell", "su", "-c", "ln -sf zygiskd64 $moduleDir/zygiskwd") }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,14 +3,12 @@ use num_enum::TryFromPrimitive;
|
||||
|
||||
pub const PROP_NATIVE_BRIDGE: &str = "ro.dalvik.vm.native.bridge";
|
||||
|
||||
pub const SOCKET_PLACEHOLDER: &str = "placeholder123456";
|
||||
pub const SOCKET_PLACEHOLDER: &str = "socket_placeholder";
|
||||
|
||||
pub const PATH_KSU_MODULE_DIR: &str = "/data/adb/ksu/modules";
|
||||
pub const PATH_ZYGISKSU_DIR: &str = concatcp!(PATH_KSU_MODULE_DIR, "/zygisksu");
|
||||
pub const PATH_ZYGISKWD: &str = concatcp!(PATH_ZYGISKSU_DIR, "/zygiskwd");
|
||||
pub const PATH_ZYGISKD32: &str = concatcp!(PATH_ZYGISKSU_DIR, "/zygiskd32");
|
||||
pub const PATH_ZYGISKD64: &str = concatcp!(PATH_ZYGISKSU_DIR, "/zygiskd64");
|
||||
pub const PATH_INJECTOR: &str = concatcp!(PATH_ZYGISKSU_DIR, "/libinjector.so");
|
||||
pub const PATH_ZYGISKD32: &str = concatcp!(PATH_ZYGISKSU_DIR, "/bin/zygiskd32");
|
||||
pub const PATH_ZYGISKD64: &str = concatcp!(PATH_ZYGISKSU_DIR, "/bin/zygiskd64");
|
||||
pub const PATH_DAEMON_LOCK: &str = concatcp!(PATH_ZYGISKSU_DIR, "/zygiskd.lock");
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, TryFromPrimitive)]
|
||||
@@ -18,7 +16,6 @@ pub const PATH_DAEMON_LOCK: &str = concatcp!(PATH_ZYGISKSU_DIR, "/zygiskd.lock")
|
||||
pub enum DaemonSocketAction {
|
||||
PingHeartbeat,
|
||||
ReadNativeBridge,
|
||||
ReadInjector,
|
||||
ReadModules,
|
||||
RequestCompanionSocket,
|
||||
}
|
||||
|
||||
@@ -28,8 +28,10 @@ pub fn get_native_bridge() -> String {
|
||||
}
|
||||
|
||||
pub fn restore_native_bridge() -> Result<()> {
|
||||
let exec = format!("resetprop {} {}", constants::PROP_NATIVE_BRIDGE, get_native_bridge());
|
||||
Command::new(exec).spawn()?.wait()?;
|
||||
Command::new("/data/adb/ksu/resetprop")
|
||||
.arg(constants::PROP_NATIVE_BRIDGE)
|
||||
.arg(get_native_bridge())
|
||||
.spawn()?.wait()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ use std::sync::Arc;
|
||||
use std::thread;
|
||||
use std::ffi::c_void;
|
||||
use std::fs;
|
||||
use std::os::fd::IntoRawFd;
|
||||
use std::os::unix::{
|
||||
net::{UnixListener, UnixStream},
|
||||
prelude::AsRawFd,
|
||||
@@ -57,7 +56,7 @@ pub fn start(is64: bool) -> Result<()> {
|
||||
let context = Arc::clone(&context);
|
||||
thread::spawn(move || {
|
||||
if let Err(e) = handle_daemon_action(stream, &context) {
|
||||
log::warn!("Error handling daemon action: {e}");
|
||||
log::warn!("Error handling daemon action: {}", e.backtrace());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -175,6 +174,7 @@ fn create_daemon_socket(is64: bool) -> Result<UnixListener> {
|
||||
let suffix = if is64 { "zygiskd64" } else { "zygiskd32" };
|
||||
let name = String::from(suffix) + constants::SOCKET_PLACEHOLDER;
|
||||
let listener = utils::abstract_namespace_socket(&name)?;
|
||||
log::debug!("Daemon socket: {name}");
|
||||
Ok(listener)
|
||||
}
|
||||
|
||||
@@ -182,18 +182,12 @@ fn handle_daemon_action(mut stream: UnixStream, context: &Context) -> Result<()>
|
||||
let action = stream.read_u8()?;
|
||||
match DaemonSocketAction::try_from(action) {
|
||||
Ok(DaemonSocketAction::PingHeartbeat) => {
|
||||
// Do nothing
|
||||
restore_native_bridge()?;
|
||||
}
|
||||
Ok(DaemonSocketAction::ReadNativeBridge) => {
|
||||
restore_native_bridge()?;
|
||||
stream.write_usize(context.native_bridge.len())?;
|
||||
stream.write_all(context.native_bridge.as_bytes())?;
|
||||
}
|
||||
Ok(DaemonSocketAction::ReadInjector) => {
|
||||
let so_path = PathBuf::from(constants::PATH_INJECTOR);
|
||||
let memfd = create_memfd("injector", &so_path)?;
|
||||
stream.send_fd(memfd.into_raw_fd())?;
|
||||
}
|
||||
Ok(DaemonSocketAction::ReadModules) => {
|
||||
stream.write_usize(context.modules.len())?;
|
||||
for module in context.modules.iter() {
|
||||
|
||||
Reference in New Issue
Block a user