mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-24 14:08:44 +00:00
Dump stub app to MAGISKTMP/stub.apk
This commit is contained in:
parent
01a1213463
commit
9de6e8846b
@ -18,6 +18,7 @@
|
||||
using namespace std;
|
||||
|
||||
static bool safe_mode = false;
|
||||
static int stub_fd = -1;
|
||||
bool zygisk_enabled = false;
|
||||
|
||||
/*********
|
||||
@ -122,6 +123,10 @@ static bool magisk_env() {
|
||||
|
||||
LOGI("* Initializing Magisk environment\n");
|
||||
|
||||
string stub_path = MAGISKTMP + "/stub.apk";
|
||||
stub_fd = xopen(stub_path.data(), O_RDONLY | O_CLOEXEC);
|
||||
unlink(stub_path.data());
|
||||
|
||||
string pkg;
|
||||
get_manager(&pkg);
|
||||
|
||||
@ -370,10 +375,15 @@ void boot_complete(int client) {
|
||||
if (access(SECURE_DIR, F_OK) != 0)
|
||||
xmkdir(SECURE_DIR, 0700);
|
||||
|
||||
if (!get_manager()) {
|
||||
if (stub_fd > 0 && !get_manager()) {
|
||||
// Install stub
|
||||
auto init = MAGISKTMP + "/magiskinit";
|
||||
exec_command_sync(init.data(), "-x", "manager", "/data/magisk.apk");
|
||||
install_apk("/data/magisk.apk");
|
||||
struct stat st{};
|
||||
fstat(stub_fd, &st);
|
||||
int dfd = xopen("/data/stub.apk", O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0600);
|
||||
xsendfile(dfd, stub_fd, nullptr, st.st_size);
|
||||
close(stub_fd);
|
||||
close(dfd);
|
||||
stub_fd = -1;
|
||||
install_apk("/data/stub.apk");
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ bool unxz(int fd, const uint8_t *buf, size_t size) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static int dump_manager(const char *path, mode_t mode) {
|
||||
int dump_manager(const char *path, mode_t mode) {
|
||||
int fd = xopen(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, mode);
|
||||
if (fd < 0)
|
||||
return 1;
|
||||
|
@ -32,6 +32,7 @@ void load_kernel_info(BootConfig *config);
|
||||
bool check_two_stage();
|
||||
void setup_klog();
|
||||
const char *backup_init();
|
||||
int dump_manager(const char *path, mode_t mode);
|
||||
|
||||
/***************
|
||||
* Base classes
|
||||
|
@ -233,6 +233,8 @@ void SARBase::patch_ro_root() {
|
||||
} else {
|
||||
xsymlink("./magisk32", "magisk");
|
||||
}
|
||||
|
||||
dump_manager("stub.apk", 0644);
|
||||
}
|
||||
|
||||
if ((access(SPLIT_PLAT_CIL, F_OK) != 0 && access("/sepolicy", F_OK) == 0) || !hijack_sepolicy()) {
|
||||
@ -305,6 +307,8 @@ void MagiskInit::patch_rw_root() {
|
||||
} else {
|
||||
xsymlink("./magisk32", "magisk");
|
||||
}
|
||||
|
||||
dump_manager("stub.apk", 0644);
|
||||
}
|
||||
|
||||
if ((!treble && access("/sepolicy", F_OK) == 0) || !hijack_sepolicy()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user