From b9ce45bd6e8ded8902725e35a6cb1032369701f6 Mon Sep 17 00:00:00 2001 From: Nullptr Date: Mon, 30 Jan 2023 17:46:38 +0800 Subject: [PATCH] Add lsplt --- loader/build.gradle.kts | 1 + loader/src/Android.mk | 3 ++- loader/src/injector/injector.cpp | 9 +++++++++ zygiskd/src/main.rs | 2 +- zygiskd/src/zygisk.rs | 15 ++++++++------- 5 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 loader/src/injector/injector.cpp diff --git a/loader/build.gradle.kts b/loader/build.gradle.kts index 39d6b0b..2c3ef40 100644 --- a/loader/build.gradle.kts +++ b/loader/build.gradle.kts @@ -16,4 +16,5 @@ android { dependencies { implementation("dev.rikka.ndk.thirdparty:cxx:1.2.0") + implementation("org.lsposed.lsplt:lsplt-standalone:1.1") } diff --git a/loader/src/Android.mk b/loader/src/Android.mk index 2202e1e..1ea2a81 100644 --- a/loader/src/Android.mk +++ b/loader/src/Android.mk @@ -26,8 +26,9 @@ LOCAL_MODULE := injector LOCAL_C_INCLUDES := $(LOCAL_PATH)/include FILE_LIST := $(filter %.cpp, $(call walk, $(LOCAL_PATH)/injector)) LOCAL_SRC_FILES := $(FILE_LIST:COMMON_FILE_LIST:$(LOCAL_PATH)/%=%) -LOCAL_STATIC_LIBRARIES := cxx common +LOCAL_STATIC_LIBRARIES := cxx common lsplt LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) $(call import-module,prefab/cxx) +$(call import-module,prefab/lsplt) diff --git a/loader/src/injector/injector.cpp b/loader/src/injector/injector.cpp new file mode 100644 index 0000000..4af3df5 --- /dev/null +++ b/loader/src/injector/injector.cpp @@ -0,0 +1,9 @@ +#include + +#include "logging.h" + +extern "C" +void entry(void* handle) { + LOGD("Injector handle: %p", handle); + +} diff --git a/zygiskd/src/main.rs b/zygiskd/src/main.rs index 147814d..69d0d16 100644 --- a/zygiskd/src/main.rs +++ b/zygiskd/src/main.rs @@ -46,6 +46,6 @@ fn entry() -> Result<()> { fn main() { if let Err(e) = entry() { - log::error!("Crashed: {}", e.backtrace()); + log::error!("Crashed: {}\n{}", e, e.backtrace()); } } diff --git a/zygiskd/src/zygisk.rs b/zygiskd/src/zygisk.rs index 512b61c..4419b53 100644 --- a/zygiskd/src/zygisk.rs +++ b/zygiskd/src/zygisk.rs @@ -56,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.backtrace()); + log::warn!("Error handling daemon action: {}\n{}", e, e.backtrace()); } }); } @@ -180,15 +180,17 @@ fn create_daemon_socket(is64: bool) -> Result { fn handle_daemon_action(mut stream: UnixStream, context: &Context) -> Result<()> { let action = stream.read_u8()?; - match DaemonSocketAction::try_from(action) { - Ok(DaemonSocketAction::PingHeartbeat) => { + let action = DaemonSocketAction::try_from(action)?; + log::debug!("New daemon action {:?}", action); + match action { + DaemonSocketAction::PingHeartbeat => { restore_native_bridge()?; } - Ok(DaemonSocketAction::ReadNativeBridge) => { + DaemonSocketAction::ReadNativeBridge => { stream.write_usize(context.native_bridge.len())?; stream.write_all(context.native_bridge.as_bytes())?; } - Ok(DaemonSocketAction::ReadModules) => { + DaemonSocketAction::ReadModules => { stream.write_usize(context.modules.len())?; for module in context.modules.iter() { stream.write_usize(module.name.len())?; @@ -196,7 +198,7 @@ fn handle_daemon_action(mut stream: UnixStream, context: &Context) -> Result<()> stream.send_fd(module.memfd.as_raw_fd())?; } } - Ok(DaemonSocketAction::RequestCompanionSocket) => { + DaemonSocketAction::RequestCompanionSocket => { let index = stream.read_usize()?; let module = &context.modules[index]; log::debug!("New companion request from module {}", module.name); @@ -211,7 +213,6 @@ fn handle_daemon_action(mut stream: UnixStream, context: &Context) -> Result<()> } } } - Err(_) => bail!("Invalid action code: {action}") } Ok(()) }