Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
ab74290f
Commit
ab74290f
authored
Nov 16, 2018
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move magiskhide config into database
parent
3aad9d81
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
88 additions
and
82 deletions
+88
-82
bootstages.cpp
native/jni/daemon/bootstages.cpp
+1
-16
db.cpp
native/jni/daemon/db.cpp
+4
-3
db.h
native/jni/include/db.h
+7
-5
hide_utils.cpp
native/jni/magiskhide/hide_utils.cpp
+76
-0
magiskhide.cpp
native/jni/magiskhide/magiskhide.cpp
+0
-58
No files found.
native/jni/daemon/bootstages.cpp
View file @
ab74290f
...
@@ -30,6 +30,7 @@ static bool seperate_vendor;
...
@@ -30,6 +30,7 @@ static bool seperate_vendor;
char
*
system_block
,
*
vendor_block
,
*
magiskloop
;
char
*
system_block
,
*
vendor_block
,
*
magiskloop
;
static
int
bind_mount
(
const
char
*
from
,
const
char
*
to
);
static
int
bind_mount
(
const
char
*
from
,
const
char
*
to
);
extern
void
auto_start_magiskhide
();
/***************
/***************
* Magic Mount *
* Magic Mount *
...
@@ -599,22 +600,6 @@ static bool check_data() {
...
@@ -599,22 +600,6 @@ static bool check_data() {
return
data
;
return
data
;
}
}
extern
int
launch_magiskhide
(
int
client
=
-
1
);
static
void
auto_start_magiskhide
()
{
if
(
!
start_log_daemon
())
return
;
CharArray
hide_prop
=
getprop
(
MAGISKHIDE_PROP
,
true
);
if
(
hide_prop
!=
"0"
)
{
pthread_t
thread
;
xpthread_create
(
&
thread
,
nullptr
,
[](
void
*
)
->
void
*
{
launch_magiskhide
();
return
nullptr
;
},
nullptr
);
pthread_detach
(
thread
);
}
}
void
unlock_blocks
()
{
void
unlock_blocks
()
{
DIR
*
dir
;
DIR
*
dir
;
struct
dirent
*
entry
;
struct
dirent
*
entry
;
...
...
native/jni/daemon/db.cpp
View file @
ab74290f
...
@@ -42,7 +42,8 @@ int db_strings::getKeyIdx(const char *key) const {
...
@@ -42,7 +42,8 @@ int db_strings::getKeyIdx(const char *key) const {
db_settings
::
db_settings
()
:
data
{
db_settings
::
db_settings
()
:
data
{
ROOT_ACCESS_APPS_AND_ADB
,
ROOT_ACCESS_APPS_AND_ADB
,
MULTIUSER_MODE_OWNER_ONLY
,
MULTIUSER_MODE_OWNER_ONLY
,
NAMESPACE_MODE_REQUESTER
NAMESPACE_MODE_REQUESTER
,
1
}
{}
}
{}
int
&
db_settings
::
operator
[](
const
int
idx
)
{
int
&
db_settings
::
operator
[](
const
int
idx
)
{
...
@@ -188,7 +189,7 @@ static int settings_cb(void *v, int col_num, char **data, char **col_name) {
...
@@ -188,7 +189,7 @@ static int settings_cb(void *v, int col_num, char **data, char **col_name) {
return
0
;
return
0
;
}
}
int
get_db_settings
(
sqlite3
*
db
,
struct
db_settings
*
dbs
,
int
key
)
{
int
get_db_settings
(
sqlite3
*
db
,
db_settings
*
dbs
,
int
key
)
{
if
(
db
==
nullptr
)
if
(
db
==
nullptr
)
return
1
;
return
1
;
char
*
err
;
char
*
err
;
...
@@ -224,7 +225,7 @@ static int strings_cb(void *v, int col_num, char **data, char **col_name) {
...
@@ -224,7 +225,7 @@ static int strings_cb(void *v, int col_num, char **data, char **col_name) {
return
0
;
return
0
;
}
}
int
get_db_strings
(
sqlite3
*
db
,
struct
db_strings
*
str
,
int
key
)
{
int
get_db_strings
(
sqlite3
*
db
,
db_strings
*
str
,
int
key
)
{
if
(
db
==
nullptr
)
if
(
db
==
nullptr
)
return
1
;
return
1
;
char
*
err
;
char
*
err
;
...
...
native/jni/include/db.h
View file @
ab74290f
...
@@ -12,16 +12,18 @@
...
@@ -12,16 +12,18 @@
((const char *[]) { \
((const char *[]) { \
"root_access", \
"root_access", \
"multiuser_mode", \
"multiuser_mode", \
"mnt_ns" \
"mnt_ns", \
"magiskhide", \
})
})
#define DB_SETTINGS_NUM
3
#define DB_SETTINGS_NUM
4
// Settings keys
// Settings keys
enum
{
enum
{
ROOT_ACCESS
=
0
,
ROOT_ACCESS
=
0
,
SU_MULTIUSER_MODE
,
SU_MULTIUSER_MODE
,
SU_MNT_NS
SU_MNT_NS
,
HIDE_CONFIG
};
};
// Values for root_access
// Values for root_access
...
@@ -127,8 +129,8 @@ struct su_access {
...
@@ -127,8 +129,8 @@ struct su_access {
********************/
********************/
sqlite3
*
get_magiskdb
();
sqlite3
*
get_magiskdb
();
int
get_db_settings
(
sqlite3
*
db
,
struct
db_settings
*
dbs
,
int
key
=
-
1
);
int
get_db_settings
(
sqlite3
*
db
,
db_settings
*
dbs
,
int
key
=
-
1
);
int
get_db_strings
(
sqlite3
*
db
,
struct
db_strings
*
str
,
int
key
=
-
1
);
int
get_db_strings
(
sqlite3
*
db
,
db_strings
*
str
,
int
key
=
-
1
);
int
get_uid_policy
(
sqlite3
*
db
,
int
uid
,
struct
su_access
*
su
);
int
get_uid_policy
(
sqlite3
*
db
,
int
uid
,
struct
su_access
*
su
);
int
validate_manager
(
char
*
alt_pkg
,
int
userid
,
struct
stat
*
st
);
int
validate_manager
(
char
*
alt_pkg
,
int
userid
,
struct
stat
*
st
);
int
exec_sql
(
const
char
*
sql
);
int
exec_sql
(
const
char
*
sql
);
...
...
native/jni/magiskhide/hide_utils.cpp
View file @
ab74290f
...
@@ -16,6 +16,9 @@
...
@@ -16,6 +16,9 @@
#include "db.h"
#include "db.h"
Vector
<
CharArray
>
hide_list
;
Vector
<
CharArray
>
hide_list
;
pthread_mutex_t
list_lock
;
static
pthread_t
proc_monitor_thread
;
static
const
char
*
prop_key
[]
=
static
const
char
*
prop_key
[]
=
{
"ro.boot.vbmeta.device_state"
,
"ro.boot.verifiedbootstate"
,
"ro.boot.flash.locked"
,
{
"ro.boot.vbmeta.device_state"
,
"ro.boot.verifiedbootstate"
,
"ro.boot.flash.locked"
,
...
@@ -250,3 +253,76 @@ void ls_list(int client) {
...
@@ -250,3 +253,76 @@ void ls_list(int client) {
write_string
(
client
,
s
);
write_string
(
client
,
s
);
close
(
client
);
close
(
client
);
}
}
static
void
set_hide_config
()
{
sqlite3
*
db
=
get_magiskdb
();
char
sql
[
64
];
sprintf
(
sql
,
"REPLACE INTO settings (key,value) VALUES('%s',%d)"
,
DB_SETTING_KEYS
[
HIDE_CONFIG
],
hide_enabled
);
sqlite3_exec
(
db
,
sql
,
nullptr
,
nullptr
,
nullptr
);
sqlite3_close_v2
(
db
);
}
int
launch_magiskhide
(
int
client
)
{
if
(
hide_enabled
)
return
HIDE_IS_ENABLED
;
if
(
!
log_daemon_started
)
return
LOGCAT_DISABLED
;
hide_enabled
=
true
;
set_hide_config
();
LOGI
(
"* Starting MagiskHide
\n
"
);
hide_sensitive_props
();
// Initialize the mutex lock
pthread_mutex_init
(
&
list_lock
,
nullptr
);
// Initialize the hide list
if
(
!
init_list
())
goto
error
;
// Add SafetyNet by default
add_list
(
"com.google.android.gms.unstable"
);
// Get thread reference
proc_monitor_thread
=
pthread_self
();
if
(
client
>=
0
)
{
write_int
(
client
,
DAEMON_SUCCESS
);
close
(
client
);
}
// Start monitoring
proc_monitor
();
error:
hide_enabled
=
false
;
return
DAEMON_ERROR
;
}
int
stop_magiskhide
()
{
LOGI
(
"* Stopping MagiskHide
\n
"
);
hide_enabled
=
false
;
set_hide_config
();
pthread_kill
(
proc_monitor_thread
,
TERM_THREAD
);
return
DAEMON_SUCCESS
;
}
void
auto_start_magiskhide
()
{
if
(
!
start_log_daemon
())
return
;
sqlite3
*
db
=
get_magiskdb
();
db_settings
dbs
;
get_db_settings
(
db
,
&
dbs
,
HIDE_CONFIG
);
sqlite3_close_v2
(
db
);
if
(
dbs
[
HIDE_CONFIG
])
{
pthread_t
thread
;
xpthread_create
(
&
thread
,
nullptr
,
[](
void
*
)
->
void
*
{
launch_magiskhide
(
-
1
);
return
nullptr
;
},
nullptr
);
pthread_detach
(
thread
);
}
}
native/jni/magiskhide/magiskhide.cpp
View file @
ab74290f
...
@@ -8,15 +8,11 @@
...
@@ -8,15 +8,11 @@
#include <sys/types.h>
#include <sys/types.h>
#include "magisk.h"
#include "magisk.h"
#include "utils.h"
#include "magiskhide.h"
#include "magiskhide.h"
#include "daemon.h"
#include "daemon.h"
#include "resetprop.h"
#include "flags.h"
#include "flags.h"
bool
hide_enabled
=
false
;
bool
hide_enabled
=
false
;
static
pthread_t
proc_monitor_thread
;
pthread_mutex_t
list_lock
;
[[
noreturn
]]
static
void
usage
(
char
*
arg0
)
{
[[
noreturn
]]
static
void
usage
(
char
*
arg0
)
{
fprintf
(
stderr
,
fprintf
(
stderr
,
...
@@ -33,60 +29,6 @@ pthread_mutex_t list_lock;
...
@@ -33,60 +29,6 @@ pthread_mutex_t list_lock;
exit
(
1
);
exit
(
1
);
}
}
int
launch_magiskhide
(
int
client
)
{
if
(
hide_enabled
)
return
HIDE_IS_ENABLED
;
if
(
!
log_daemon_started
)
{
setprop
(
MAGISKHIDE_PROP
,
"0"
);
// Remove without actually removing persist props
deleteprop
(
MAGISKHIDE_PROP
);
return
LOGCAT_DISABLED
;
}
hide_enabled
=
true
;
LOGI
(
"* Starting MagiskHide
\n
"
);
deleteprop
(
MAGISKHIDE_PROP
,
true
);
hide_sensitive_props
();
// Initialize the mutex lock
pthread_mutex_init
(
&
list_lock
,
nullptr
);
// Initialize the hide list
if
(
!
init_list
())
goto
error
;
// Add SafetyNet by default
add_list
(
"com.google.android.gms.unstable"
);
// Get thread reference
proc_monitor_thread
=
pthread_self
();
if
(
client
>=
0
)
{
write_int
(
client
,
DAEMON_SUCCESS
);
close
(
client
);
}
// Start monitoring
proc_monitor
();
error
:
hide_enabled
=
false
;
return
DAEMON_ERROR
;
}
int
stop_magiskhide
()
{
LOGI
(
"* Stopping MagiskHide
\n
"
);
hide_enabled
=
false
;
setprop
(
MAGISKHIDE_PROP
,
"0"
);
// Remove without actually removing persist props
deleteprop
(
MAGISKHIDE_PROP
);
pthread_kill
(
proc_monitor_thread
,
TERM_THREAD
);
return
DAEMON_SUCCESS
;
}
void
magiskhide_handler
(
int
client
)
{
void
magiskhide_handler
(
int
client
)
{
int
req
=
read_int
(
client
);
int
req
=
read_int
(
client
);
int
res
=
DAEMON_ERROR
;
int
res
=
DAEMON_ERROR
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment