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
cce63622
Commit
cce63622
authored
Sep 27, 2018
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reorganization
parent
60b3b8dd
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
82 additions
and
81 deletions
+82
-81
Android.mk
native/jni/Android.mk
+10
-9
bootstages.c
native/jni/daemon/bootstages.c
+12
-10
daemon.c
native/jni/daemon/daemon.c
+0
-0
db.c
native/jni/daemon/db.c
+0
-0
log_daemon.c
native/jni/daemon/log_daemon.c
+0
-0
magisk.c
native/jni/daemon/magisk.c
+6
-49
socket.c
native/jni/daemon/socket.c
+0
-0
img.c
native/jni/img.c
+0
-0
magisk.h
native/jni/include/magisk.h
+2
-1
init.c
native/jni/init.c
+1
-1
main.c
native/jni/main.c
+41
-0
selinux.h
native/jni/utils/include/selinux.h
+1
-1
selinux.c
native/jni/utils/selinux.c
+9
-10
No files found.
native/jni/Android.mk
View file @
cce63622
...
@@ -32,12 +32,14 @@ LOCAL_C_INCLUDES := \
...
@@ -32,12 +32,14 @@ LOCAL_C_INCLUDES := \
$(LIBUTILS)
$(LIBUTILS)
LOCAL_SRC_FILES := \
LOCAL_SRC_FILES := \
core/magisk.c \
main.c \
core/daemon.c \
img.c \
core/log_daemon.c \
daemon/magisk.c \
core/bootstages.c \
daemon/daemon.c \
core/socket.c \
daemon/log_daemon.c \
core/db.c \
daemon/bootstages.c \
daemon/socket.c \
daemon/db.c \
magiskhide/magiskhide.c \
magiskhide/magiskhide.c \
magiskhide/proc_monitor.c \
magiskhide/proc_monitor.c \
magiskhide/hide_utils.c \
magiskhide/hide_utils.c \
...
@@ -48,8 +50,7 @@ LOCAL_SRC_FILES := \
...
@@ -48,8 +50,7 @@ LOCAL_SRC_FILES := \
su/su.c \
su/su.c \
su/connect.c \
su/connect.c \
su/pts.c \
su/pts.c \
su/su_daemon.c \
su/su_daemon.c
utils/img.c
LOCAL_LDLIBS := -llog
LOCAL_LDLIBS := -llog
include $(BUILD_EXECUTABLE)
include $(BUILD_EXECUTABLE)
...
@@ -72,7 +73,7 @@ LOCAL_C_INCLUDES := \
...
@@ -72,7 +73,7 @@ LOCAL_C_INCLUDES := \
$(LIBUTILS)
$(LIBUTILS)
LOCAL_SRC_FILES := \
LOCAL_SRC_FILES := \
core/magisk
init.c \
init.c \
magiskpolicy/api.c \
magiskpolicy/api.c \
magiskpolicy/magiskpolicy.c \
magiskpolicy/magiskpolicy.c \
magiskpolicy/rules.c \
magiskpolicy/rules.c \
...
...
native/jni/
core
/bootstages.c
→
native/jni/
daemon
/bootstages.c
View file @
cce63622
...
@@ -593,21 +593,23 @@ void startup() {
...
@@ -593,21 +593,23 @@ void startup() {
setfilecon
(
"/sbin"
,
"u:object_r:rootfs:s0"
);
setfilecon
(
"/sbin"
,
"u:object_r:rootfs:s0"
);
sbin
=
xopen
(
"/sbin"
,
O_RDONLY
|
O_CLOEXEC
);
sbin
=
xopen
(
"/sbin"
,
O_RDONLY
|
O_CLOEXEC
);
// Create wrapper
// Create applet symlinks
fd
=
creat
(
"/sbin/magisk"
,
0755
);
for
(
int
i
=
0
;
applet_names
[
i
];
++
i
)
{
xwrite
(
fd
,
wrapper
,
sizeof
(
wrapper
)
-
1
);
snprintf
(
buf
,
PATH_MAX
,
"/sbin/%s"
,
applet_names
[
i
]);
close
(
fd
);
xsymlink
(
"/sbin/magisk"
,
buf
);
setfilecon
(
"/sbin/magisk"
,
"u:object_r:"
SEPOL_FILE_DOMAIN
":s0"
);
}
// Setup magisk symlinks
// Setup binary and wrapper
fd
=
creat
(
"/sbin/magisk.bin"
,
0755
);
fd
=
creat
(
"/sbin/magisk.bin"
,
0755
);
xwrite
(
fd
,
magisk
,
magisk_size
);
xwrite
(
fd
,
magisk
,
magisk_size
);
close
(
fd
);
close
(
fd
);
free
(
magisk
);
free
(
magisk
);
unlink
(
"/sbin/magisk"
);
fd
=
creat
(
"/sbin/magisk"
,
0755
);
xwrite
(
fd
,
wrapper
,
sizeof
(
wrapper
)
-
1
);
close
(
fd
);
setfilecon
(
"/sbin/magisk.bin"
,
"u:object_r:"
SEPOL_FILE_DOMAIN
":s0"
);
setfilecon
(
"/sbin/magisk.bin"
,
"u:object_r:"
SEPOL_FILE_DOMAIN
":s0"
);
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
{
setfilecon
(
"/sbin/magisk"
,
"u:object_r:"
SEPOL_FILE_DOMAIN
":s0"
);
snprintf
(
buf
,
PATH_MAX
,
"/sbin/%s"
,
applet
[
i
]);
xsymlink
(
"/sbin/magisk"
,
buf
);
}
// Setup magiskinit symlinks
// Setup magiskinit symlinks
fd
=
creat
(
"/sbin/magiskinit"
,
0755
);
fd
=
creat
(
"/sbin/magiskinit"
,
0755
);
...
...
native/jni/
core
/daemon.c
→
native/jni/
daemon
/daemon.c
View file @
cce63622
File moved
native/jni/
core
/db.c
→
native/jni/
daemon
/db.c
View file @
cce63622
File moved
native/jni/
core
/log_daemon.c
→
native/jni/
daemon
/log_daemon.c
View file @
cce63622
File moved
native/jni/
core
/magisk.c
→
native/jni/
daemon
/magisk.c
View file @
cce63622
/* main.c - The multicall entry point
*/
#include <stdlib.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <unistd.h>
...
@@ -13,11 +10,6 @@
...
@@ -13,11 +10,6 @@
#include "selinux.h"
#include "selinux.h"
#include "flags.h"
#include "flags.h"
char
*
argv0
;
int
(
*
applet_main
[])
(
int
,
char
*
[])
=
{
su_client_main
,
resetprop_main
,
magiskhide_main
,
imgtool_main
,
NULL
};
int
create_links
(
const
char
*
bin
,
const
char
*
path
)
{
int
create_links
(
const
char
*
bin
,
const
char
*
path
)
{
char
self
[
PATH_MAX
],
linkpath
[
PATH_MAX
];
char
self
[
PATH_MAX
],
linkpath
[
PATH_MAX
];
if
(
bin
==
NULL
)
{
if
(
bin
==
NULL
)
{
...
@@ -25,8 +17,8 @@ int create_links(const char *bin, const char *path) {
...
@@ -25,8 +17,8 @@ int create_links(const char *bin, const char *path) {
bin
=
self
;
bin
=
self
;
}
}
int
ret
=
0
;
int
ret
=
0
;
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
{
for
(
int
i
=
0
;
applet
_names
[
i
];
++
i
)
{
snprintf
(
linkpath
,
sizeof
(
linkpath
),
"%s/%s"
,
path
,
applet
[
i
]);
snprintf
(
linkpath
,
sizeof
(
linkpath
),
"%s/%s"
,
path
,
applet
_names
[
i
]);
unlink
(
linkpath
);
unlink
(
linkpath
);
ret
|=
symlink
(
bin
,
linkpath
);
ret
|=
symlink
(
bin
,
linkpath
);
}
}
...
@@ -57,8 +49,8 @@ static void usage() {
...
@@ -57,8 +49,8 @@ static void usage() {
"
\n
"
"
\n
"
"Supported applets:
\n
"
);
"Supported applets:
\n
"
);
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
for
(
int
i
=
0
;
applet
_names
[
i
];
++
i
)
fprintf
(
stderr
,
i
?
", %s"
:
" %s"
,
applet
[
i
]);
fprintf
(
stderr
,
i
?
", %s"
:
" %s"
,
applet
_names
[
i
]);
fprintf
(
stderr
,
"
\n\n
"
);
fprintf
(
stderr
,
"
\n\n
"
);
exit
(
1
);
exit
(
1
);
}
}
...
@@ -86,8 +78,8 @@ int magisk_main(int argc, char *argv[]) {
...
@@ -86,8 +78,8 @@ int magisk_main(int argc, char *argv[]) {
if
(
argc
==
3
)
return
create_links
(
NULL
,
argv
[
2
]);
if
(
argc
==
3
)
return
create_links
(
NULL
,
argv
[
2
]);
else
return
create_links
(
argv
[
2
],
argv
[
3
]);
else
return
create_links
(
argv
[
2
],
argv
[
3
]);
}
else
if
(
strcmp
(
argv
[
1
],
"--list"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
1
],
"--list"
)
==
0
)
{
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
for
(
int
i
=
0
;
applet
_names
[
i
];
++
i
)
printf
(
"%s
\n
"
,
applet
[
i
]);
printf
(
"%s
\n
"
,
applet
_names
[
i
]);
return
0
;
return
0
;
}
else
if
(
strcmp
(
argv
[
1
],
"--unlock-blocks"
)
==
0
)
{
}
else
if
(
strcmp
(
argv
[
1
],
"--unlock-blocks"
)
==
0
)
{
unlock_blocks
();
unlock_blocks
();
...
@@ -120,41 +112,6 @@ int magisk_main(int argc, char *argv[]) {
...
@@ -120,41 +112,6 @@ int magisk_main(int argc, char *argv[]) {
return
read_int
(
fd
);
return
read_int
(
fd
);
}
}
// Applets
argc
--
;
argv
++
;
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
{
if
(
strcmp
(
basename
(
argv
[
0
]),
applet
[
i
])
==
0
)
{
strcpy
(
argv0
,
basename
(
argv
[
0
]));
return
(
*
applet_main
[
i
])(
argc
,
argv
);
}
}
usage
();
usage
();
return
1
;
return
1
;
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
umask
(
0
);
argv0
=
argv
[
0
];
setup_selinux
();
if
(
strcmp
(
basename
(
argv0
),
"magisk.bin"
)
==
0
)
{
if
(
argc
>=
2
)
{
// It's calling applets
--
argc
;
++
argv
;
}
}
// Applets
for
(
int
i
=
0
;
applet
[
i
];
++
i
)
{
if
(
strcmp
(
basename
(
argv
[
0
]),
applet
[
i
])
==
0
)
{
strcpy
(
argv0
,
basename
(
argv
[
0
]));
return
(
*
applet_main
[
i
])(
argc
,
argv
);
}
}
// Not an applet
return
magisk_main
(
argc
,
argv
);
}
native/jni/
core
/socket.c
→
native/jni/
daemon
/socket.c
View file @
cce63622
File moved
native/jni/
utils/
img.c
→
native/jni/img.c
View file @
cce63622
File moved
native/jni/include/magisk.h
View file @
cce63622
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
extern
char
*
argv0
;
/* For changing process name */
extern
char
*
argv0
;
/* For changing process name */
#define applet
((char *[]) {
"su", "resetprop", "magiskhide", "imgtool", NULL })
#define applet
_names ((char *[]) { "magisk",
"su", "resetprop", "magiskhide", "imgtool", NULL })
#define init_applet ((char *[]) { "magiskpolicy", "supolicy", NULL })
#define init_applet ((char *[]) { "magiskpolicy", "supolicy", NULL })
extern
int
(
*
applet_main
[])
(
int
,
char
*
[]),
(
*
init_applet_main
[])
(
int
,
char
*
[]);
extern
int
(
*
applet_main
[])
(
int
,
char
*
[]),
(
*
init_applet_main
[])
(
int
,
char
*
[]);
...
@@ -50,6 +50,7 @@ extern int (*applet_main[]) (int, char *[]), (*init_applet_main[]) (int, char *[
...
@@ -50,6 +50,7 @@ extern int (*applet_main[]) (int, char *[]), (*init_applet_main[]) (int, char *[
int
create_links
(
const
char
*
bin
,
const
char
*
path
);
int
create_links
(
const
char
*
bin
,
const
char
*
path
);
// Multi-call entrypoints
// Multi-call entrypoints
int
magisk_main
(
int
argc
,
char
*
argv
[]);
int
magiskhide_main
(
int
argc
,
char
*
argv
[]);
int
magiskhide_main
(
int
argc
,
char
*
argv
[]);
int
magiskpolicy_main
(
int
argc
,
char
*
argv
[]);
int
magiskpolicy_main
(
int
argc
,
char
*
argv
[]);
int
su_client_main
(
int
argc
,
char
*
argv
[]);
int
su_client_main
(
int
argc
,
char
*
argv
[]);
...
...
native/jni/
core/magisk
init.c
→
native/jni/init.c
View file @
cce63622
/*
magisk
init.c - Pre-init Magisk support
/* init.c - Pre-init Magisk support
*
*
* This code has to be compiled statically to work properly.
* This code has to be compiled statically to work properly.
*
*
...
...
native/jni/main.c
0 → 100644
View file @
cce63622
#include <libgen.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "magisk.h"
#include "selinux.h"
int
(
*
applet_main
[])
(
int
,
char
*
[])
=
{
magisk_main
,
su_client_main
,
resetprop_main
,
magiskhide_main
,
imgtool_main
,
NULL
};
char
*
argv0
;
__attribute__
((
noreturn
))
static
void
call_applets
(
int
argc
,
char
*
argv
[])
{
// Applets
for
(
int
i
=
0
;
applet_names
[
i
];
++
i
)
{
if
(
strcmp
(
basename
(
argv
[
0
]),
applet_names
[
i
])
==
0
)
{
strcpy
(
argv0
,
basename
(
argv
[
0
]));
exit
((
*
applet_main
[
i
])(
argc
,
argv
));
}
}
fprintf
(
stderr
,
"%s: applet not found
\n
"
,
argv
[
0
]);
exit
(
1
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
umask
(
0
);
argv0
=
argv
[
0
];
dload_selinux
();
if
(
strcmp
(
basename
(
argv0
),
"magisk.bin"
)
==
0
||
(
strcmp
(
basename
(
argv
[
0
]),
"magisk"
)
==
0
&&
argc
>
1
&&
argv
[
1
][
0
]
!=
'-'
))
{
--
argc
;
++
argv
;
}
call_applets
(
argc
,
argv
);
}
native/jni/utils/include/selinux.h
View file @
cce63622
...
@@ -8,5 +8,5 @@ extern int (*lgetfilecon)(const char *path, char ** con);
...
@@ -8,5 +8,5 @@ extern int (*lgetfilecon)(const char *path, char ** con);
extern
int
(
*
setfilecon
)(
const
char
*
path
,
const
char
*
con
);
extern
int
(
*
setfilecon
)(
const
char
*
path
,
const
char
*
con
);
extern
int
(
*
lsetfilecon
)(
const
char
*
path
,
const
char
*
con
);
extern
int
(
*
lsetfilecon
)(
const
char
*
path
,
const
char
*
con
);
void
setup
_selinux
();
void
dload
_selinux
();
void
restorecon
();
void
restorecon
();
native/jni/utils/selinux.c
View file @
cce63622
...
@@ -28,14 +28,14 @@ static int i_ssp(const char *s, char ** sp) {
...
@@ -28,14 +28,14 @@ static int i_ssp(const char *s, char ** sp) {
// Function pointers
// Function pointers
void
(
*
freecon
)(
char
*
con
)
=
v_s
;
void
(
*
freecon
)(
char
*
)
=
v_s
;
int
(
*
setcon
)(
const
char
*
con
)
=
i_s
;
int
(
*
setcon
)(
const
char
*
)
=
i_s
;
int
(
*
getfilecon
)(
const
char
*
path
,
char
**
con
)
=
i_ssp
;
int
(
*
getfilecon
)(
const
char
*
,
char
**
)
=
i_ssp
;
int
(
*
lgetfilecon
)(
const
char
*
path
,
char
**
con
)
=
i_ssp
;
int
(
*
lgetfilecon
)(
const
char
*
,
char
**
)
=
i_ssp
;
int
(
*
setfilecon
)(
const
char
*
path
,
const
char
*
con
)
=
i_ss
;
int
(
*
setfilecon
)(
const
char
*
,
const
char
*
)
=
i_ss
;
int
(
*
lsetfilecon
)(
const
char
*
path
,
const
char
*
con
)
=
i_ss
;
int
(
*
lsetfilecon
)(
const
char
*
,
const
char
*
)
=
i_ss
;
void
setup
_selinux
()
{
void
dload
_selinux
()
{
void
*
handle
=
dlopen
(
"libselinux.so"
,
RTLD_LAZY
);
void
*
handle
=
dlopen
(
"libselinux.so"
,
RTLD_LAZY
);
if
(
handle
==
NULL
)
if
(
handle
==
NULL
)
return
;
return
;
...
@@ -112,9 +112,8 @@ static void restore_magiskcon(int dirfd) {
...
@@ -112,9 +112,8 @@ static void restore_magiskcon(int dirfd) {
void
restorecon
()
{
void
restorecon
()
{
int
fd
;
int
fd
;
fd
=
xopen
(
SELINUX_CONTEXT
,
O_WRONLY
|
O_CLOEXEC
);
fd
=
xopen
(
SELINUX_CONTEXT
,
O_WRONLY
|
O_CLOEXEC
);
if
(
write
(
fd
,
ADB_CON
,
sizeof
(
ADB_CON
))
>=
0
)
{
if
(
write
(
fd
,
ADB_CON
,
sizeof
(
ADB_CON
))
>=
0
)
lsetfilecon
(
SECURE_DIR
,
ADB_CON
);
lsetfilecon
(
SECURE_DIR
,
ADB_CON
);
}
close
(
fd
);
close
(
fd
);
fd
=
xopen
(
MOUNTPOINT
,
O_RDONLY
|
O_CLOEXEC
);
fd
=
xopen
(
MOUNTPOINT
,
O_RDONLY
|
O_CLOEXEC
);
restore_syscon
(
fd
);
restore_syscon
(
fd
);
...
...
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