You've already forked ZygiskNext
mirror of
https://github.com/Dr-TSNG/ZygiskNext.git
synced 2025-08-27 23:46:34 +00:00
randomize init control socket & add shortcut (/data/adb/modules/zygisksu/bin/zygisk-ctl)
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
constexpr auto kCPSocketName = "/" LP_SELECT("cp32", "cp64") ".sock";
|
constexpr auto kCPSocketName = "/" LP_SELECT("cp32", "cp64") ".sock";
|
||||||
constexpr const auto MAGIC_PATH_ENV = "MAGIC_PATH";
|
constexpr const auto MAGIC_PATH_ENV = "MAGIC_PATH";
|
||||||
|
constexpr const auto MAGIC_ENV = "MAGIC";
|
||||||
|
|
||||||
class UniqueFd {
|
class UniqueFd {
|
||||||
using Fd = int;
|
using Fd = int;
|
||||||
|
|||||||
@@ -27,18 +27,21 @@ int main(int argc, char **argv) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} else if (argc >= 3 && argv[1] == "ctl"sv) {
|
} else if (argc >= 2 && argv[1] == "ctl"sv) {
|
||||||
|
if (argc == 3) {
|
||||||
if (argv[2] == "start"sv) {
|
if (argv[2] == "start"sv) {
|
||||||
send_control_command(START);
|
send_control_command(START);
|
||||||
|
return 0;
|
||||||
} else if (argv[2] == "stop"sv) {
|
} else if (argv[2] == "stop"sv) {
|
||||||
send_control_command(STOP);
|
send_control_command(STOP);
|
||||||
|
return 0;
|
||||||
} else if (argv[2] == "exit"sv) {
|
} else if (argv[2] == "exit"sv) {
|
||||||
send_control_command(EXIT);
|
send_control_command(EXIT);
|
||||||
} else {
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
printf("Usage: %s ctl start|stop|exit\n", argv[0]);
|
printf("Usage: %s ctl start|stop|exit\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
} else {
|
} else {
|
||||||
LOGE("usage: %s monitor | trace <pid> | ctl <command>", argv[0]);
|
LOGE("usage: %s monitor | trace <pid> | ctl <command>", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -33,6 +33,12 @@ enum TracingState {
|
|||||||
|
|
||||||
constexpr char SOCKET_NAME[] = "init_monitor";
|
constexpr char SOCKET_NAME[] = "init_monitor";
|
||||||
|
|
||||||
|
std::string GetControlSocketName() {
|
||||||
|
auto env = getenv(MAGIC_ENV);
|
||||||
|
if (env == nullptr) return SOCKET_NAME;
|
||||||
|
return std::string(SOCKET_NAME) + env;
|
||||||
|
}
|
||||||
|
|
||||||
struct EventLoop;
|
struct EventLoop;
|
||||||
|
|
||||||
struct EventHandler {
|
struct EventHandler {
|
||||||
@@ -115,7 +121,8 @@ struct SocketHandler : public EventHandler {
|
|||||||
.sun_family = AF_UNIX,
|
.sun_family = AF_UNIX,
|
||||||
.sun_path={0},
|
.sun_path={0},
|
||||||
};
|
};
|
||||||
strcpy(addr.sun_path + 1, SOCKET_NAME);
|
auto socket_name = GetControlSocketName();
|
||||||
|
strcpy(addr.sun_path + 1, socket_name.c_str());
|
||||||
socklen_t socklen = sizeof(sa_family_t) + strlen(addr.sun_path + 1) + 1;
|
socklen_t socklen = sizeof(sa_family_t) + strlen(addr.sun_path + 1) + 1;
|
||||||
if (bind(sock_fd_, (struct sockaddr *) &addr, socklen) == -1) {
|
if (bind(sock_fd_, (struct sockaddr *) &addr, socklen) == -1) {
|
||||||
PLOGE("bind socket");
|
PLOGE("bind socket");
|
||||||
@@ -379,7 +386,8 @@ void send_control_command(Command cmd) {
|
|||||||
.sun_family = AF_UNIX,
|
.sun_family = AF_UNIX,
|
||||||
.sun_path={0},
|
.sun_path={0},
|
||||||
};
|
};
|
||||||
strcpy(addr.sun_path + 1, SOCKET_NAME);
|
auto socket_name = GetControlSocketName();
|
||||||
|
strcpy(addr.sun_path + 1, socket_name.c_str());
|
||||||
socklen_t socklen = sizeof(sa_family_t) + strlen(addr.sun_path + 1) + 1;
|
socklen_t socklen = sizeof(sa_family_t) + strlen(addr.sun_path + 1) + 1;
|
||||||
auto nsend = sendto(sockfd, (void *) &cmd, sizeof(cmd), 0, (sockaddr *) &addr, socklen);
|
auto nsend = sendto(sockfd, (void *) &cmd, sizeof(cmd), 0, (sockaddr *) &addr, socklen);
|
||||||
if (nsend == -1) {
|
if (nsend == -1) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ androidComponents.onVariants { variant ->
|
|||||||
into(moduleDir)
|
into(moduleDir)
|
||||||
from("${rootProject.projectDir}/README.md")
|
from("${rootProject.projectDir}/README.md")
|
||||||
from("$projectDir/src") {
|
from("$projectDir/src") {
|
||||||
exclude("module.prop", "customize.sh", "post-fs-data.sh", "service.sh")
|
exclude("module.prop", "customize.sh", "post-fs-data.sh", "service.sh", "zygisk-ctl.sh")
|
||||||
filter<FixCrLfFilter>("eol" to FixCrLfFilter.CrLf.newInstance("lf"))
|
filter<FixCrLfFilter>("eol" to FixCrLfFilter.CrLf.newInstance("lf"))
|
||||||
}
|
}
|
||||||
from("$projectDir/src") {
|
from("$projectDir/src") {
|
||||||
@@ -52,7 +52,7 @@ androidComponents.onVariants { variant ->
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
from("$projectDir/src") {
|
from("$projectDir/src") {
|
||||||
include("customize.sh", "post-fs-data.sh", "service.sh")
|
include("customize.sh", "post-fs-data.sh", "service.sh", "zygisk-ctl.sh")
|
||||||
val tokens = mapOf(
|
val tokens = mapOf(
|
||||||
"DEBUG" to if (buildTypeLowered == "debug") "true" else "false",
|
"DEBUG" to if (buildTypeLowered == "debug") "true" else "false",
|
||||||
"MIN_KSU_VERSION" to "$minKsuVersion",
|
"MIN_KSU_VERSION" to "$minKsuVersion",
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ ui_print "- Extracting module files"
|
|||||||
extract "$ZIPFILE" 'module.prop' "$MODPATH"
|
extract "$ZIPFILE" 'module.prop' "$MODPATH"
|
||||||
extract "$ZIPFILE" 'post-fs-data.sh' "$MODPATH"
|
extract "$ZIPFILE" 'post-fs-data.sh' "$MODPATH"
|
||||||
extract "$ZIPFILE" 'service.sh' "$MODPATH"
|
extract "$ZIPFILE" 'service.sh' "$MODPATH"
|
||||||
|
extract "$ZIPFILE" 'zygisk-ctl.sh' "$MODPATH"
|
||||||
mv "$TMPDIR/sepolicy.rule" "$MODPATH"
|
mv "$TMPDIR/sepolicy.rule" "$MODPATH"
|
||||||
|
|
||||||
HAS32BIT=false && [ $(getprop ro.product.cpu.abilist32) ] && HAS32BIT=true
|
HAS32BIT=false && [ $(getprop ro.product.cpu.abilist32) ] && HAS32BIT=true
|
||||||
@@ -106,6 +107,7 @@ HAS32BIT=false && [ $(getprop ro.product.cpu.abilist32) ] && HAS32BIT=true
|
|||||||
mkdir "$MODPATH/bin"
|
mkdir "$MODPATH/bin"
|
||||||
mkdir "$MODPATH/lib"
|
mkdir "$MODPATH/lib"
|
||||||
mkdir "$MODPATH/lib64"
|
mkdir "$MODPATH/lib64"
|
||||||
|
mv "$MODPATH/zygisk-ctl.sh" "$MODPATH/bin/zygisk-ctl"
|
||||||
|
|
||||||
if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
|
if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
|
||||||
if [ "$HAS32BIT" = true ]; then
|
if [ "$HAS32BIT" = true ]; then
|
||||||
@@ -145,15 +147,15 @@ else
|
|||||||
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
|
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ui_print "- Generating magic"
|
||||||
|
MAGIC=$(tr -dc 'a-f0-9' </dev/urandom | head -c 18)
|
||||||
|
echo -n "$MAGIC" > "$MODPATH/magic"
|
||||||
|
|
||||||
ui_print "- Setting permissions"
|
ui_print "- Setting permissions"
|
||||||
set_perm_recursive "$MODPATH/bin" 0 0 0755 0755
|
set_perm_recursive "$MODPATH/bin" 0 0 0755 0755
|
||||||
set_perm_recursive "$MODPATH/lib" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
set_perm_recursive "$MODPATH/lib" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
||||||
set_perm_recursive "$MODPATH/lib64" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
set_perm_recursive "$MODPATH/lib64" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
||||||
|
|
||||||
ui_print "- Generating magic"
|
|
||||||
MAGIC=$(tr -dc 'a-f0-9' </dev/urandom | head -c 18)
|
|
||||||
echo -n "$MAGIC" > "$MODPATH/magic"
|
|
||||||
|
|
||||||
# If Huawei's Maple is enabled, system_server is created with a special way which is out of Zygisk's control
|
# If Huawei's Maple is enabled, system_server is created with a special way which is out of Zygisk's control
|
||||||
HUAWEI_MAPLE_ENABLED=$(grep_prop ro.maple.enable)
|
HUAWEI_MAPLE_ENABLED=$(grep_prop ro.maple.enable)
|
||||||
if [ "$HUAWEI_MAPLE_ENABLED" == "1" ]; then
|
if [ "$HUAWEI_MAPLE_ENABLED" == "1" ]; then
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ fi
|
|||||||
|
|
||||||
cd "$MODDIR"
|
cd "$MODDIR"
|
||||||
|
|
||||||
MAGIC_PATH=/dev/zygisk_$(cat ./magic)
|
MAGIC=$(cat ./magic)
|
||||||
|
MAGIC_PATH=/dev/zygisk_$MAGIC
|
||||||
|
export MAGIC
|
||||||
export MAGIC_PATH
|
export MAGIC_PATH
|
||||||
|
|
||||||
if [ "$(which magisk)" ]; then
|
if [ "$(which magisk)" ]; then
|
||||||
|
|||||||
3
module/src/zygisk-ctl.sh
Normal file
3
module/src/zygisk-ctl.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
MODDIR=${0%/*}/..
|
||||||
|
export MAGIC=$(cat $MODDIR/magic)
|
||||||
|
exec $MODDIR/bin/zygisk-ptrace64 ctl $*
|
||||||
Reference in New Issue
Block a user