Commit f56ea529 authored by topjohnwu's avatar topjohnwu

Add public Zygisk API

Still WIP
parent cb4361b7
This diff is collapsed.
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <magisk.hpp> #include <magisk.hpp>
#include <db.hpp> #include <db.hpp>
#include "inject.hpp" #include "zygisk.hpp"
#include "deny/deny.hpp" #include "deny/deny.hpp"
using namespace std; using namespace std;
......
...@@ -87,7 +87,7 @@ class ForkAndSpec(JNIHook): ...@@ -87,7 +87,7 @@ class ForkAndSpec(JNIHook):
return 'nativeForkAndSpecialize' return 'nativeForkAndSpecialize'
def init_args(self): def init_args(self):
return 'SpecializeAppProcessArgs args(uid, gid, gids, runtime_flags, mount_external, se_info, nice_name, instruction_set, app_data_dir);' return 'AppSpecializeArgsImpl args(uid, gid, gids, runtime_flags, mount_external, se_info, nice_name, instruction_set, app_data_dir);'
def body(self): def body(self):
decl = '' decl = ''
...@@ -118,7 +118,7 @@ class ForkServer(ForkAndSpec): ...@@ -118,7 +118,7 @@ class ForkServer(ForkAndSpec):
return 'nativeForkSystemServer' return 'nativeForkSystemServer'
def init_args(self): def init_args(self):
return 'ForkSystemServerArgs args(uid, gid, gids, runtime_flags, permitted_capabilities, effective_capabilities);' return 'ServerSpecializeArgsImpl args(uid, gid, gids, runtime_flags, permitted_capabilities, effective_capabilities);'
# Common args # Common args
uid = Argument('uid', jint) uid = Argument('uid', jint)
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include <flags.h> #include <flags.h>
#include <daemon.hpp> #include <daemon.hpp>
#include "inject.hpp" #include "zygisk.hpp"
#include "memory.hpp" #include "memory.hpp"
#include "api.hpp" #include "api.hpp"
...@@ -29,6 +29,50 @@ enum { ...@@ -29,6 +29,50 @@ enum {
FLAG_MAX FLAG_MAX
}; };
struct AppSpecializeArgsImpl {
jint &uid;
jint &gid;
jintArray &gids;
jint &runtime_flags;
jint &mount_external;
jstring &se_info;
jstring &nice_name;
jstring &instruction_set;
jstring &app_data_dir;
/* Optional */
jboolean *is_child_zygote = nullptr;
jboolean *is_top_app = nullptr;
jobjectArray *pkg_data_info_list = nullptr;
jobjectArray *whitelisted_data_info_list = nullptr;
jboolean *mount_data_dirs = nullptr;
jboolean *mount_storage_dirs = nullptr;
AppSpecializeArgsImpl(
jint &uid, jint &gid, jintArray &gids, jint &runtime_flags,
jint &mount_external, jstring &se_info, jstring &nice_name,
jstring &instruction_set, jstring &app_data_dir) :
uid(uid), gid(gid), gids(gids), runtime_flags(runtime_flags),
mount_external(mount_external), se_info(se_info), nice_name(nice_name),
instruction_set(instruction_set), app_data_dir(app_data_dir) {}
};
struct ServerSpecializeArgsImpl {
jint &uid;
jint &gid;
jintArray &gids;
jint &runtime_flags;
jlong &permitted_capabilities;
jlong &effective_capabilities;
ServerSpecializeArgsImpl(
jint &uid, jint &gid, jintArray &gids, jint &runtime_flags,
jlong &permitted_capabilities, jlong &effective_capabilities) :
uid(uid), gid(gid), gids(gids), runtime_flags(runtime_flags),
permitted_capabilities(permitted_capabilities),
effective_capabilities(effective_capabilities) {}
};
#define DCL_PRE_POST(name) \ #define DCL_PRE_POST(name) \
void name##_pre(); \ void name##_pre(); \
void name##_post(); void name##_post();
...@@ -36,8 +80,8 @@ void name##_post(); ...@@ -36,8 +80,8 @@ void name##_post();
struct HookContext { struct HookContext {
JNIEnv *env; JNIEnv *env;
union { union {
SpecializeAppProcessArgs *args; AppSpecializeArgsImpl *args;
ForkSystemServerArgs *server_args; ServerSpecializeArgsImpl *server_args;
void *raw_args; void *raw_args;
}; };
const char *process; const char *process;
......
This diff is collapsed.
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <utils.hpp> #include <utils.hpp>
#include "inject.hpp" #include "zygisk.hpp"
#include "ptrace.hpp" #include "ptrace.hpp"
using namespace std; using namespace std;
......
#include <cinttypes> #include <cinttypes>
#include <utils.hpp> #include <utils.hpp>
#include "inject.hpp" #include "zygisk.hpp"
using namespace std; using namespace std;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment