Support Safe Mode detection

When detecting device is booting as Safe Mode, disable all modules and
MagiskHide and skip all operations. The only thing that'll be available
in this state is root (Magisk Manager will also be disabled by system).

Since the next normal boot will also have all modules disabled, this can
be used to rescue a device in the case when a rogue module causes
bootloop and no custom recovery is available (or recoveries without
the ability to decrypt data).
This commit is contained in:
topjohnwu
2020-05-08 00:45:11 -07:00
parent 232ae2a189
commit a5d7c41d20
7 changed files with 35 additions and 36 deletions

View File

@ -10,7 +10,6 @@
#include <magisk.hpp>
#include <utils.hpp>
#include <db.hpp>
#include <daemon.hpp>
#include "magiskhide.hpp"
@ -267,9 +266,11 @@ void launch_magiskhide(int client) {
int stop_magiskhide() {
LOGI("* Stopping MagiskHide\n");
if (hide_enabled)
pthread_kill(proc_monitor_thread, SIGTERMTHRD);
hide_enabled = false;
set_hide_config();
pthread_kill(proc_monitor_thread, SIGTERMTHRD);
return DAEMON_SUCCESS;
}