Commit f56ea529 authored by topjohnwu's avatar topjohnwu

Add public Zygisk API

Still WIP
parent cb4361b7
This diff is collapsed.
......@@ -10,7 +10,7 @@
#include <magisk.hpp>
#include <db.hpp>
#include "inject.hpp"
#include "zygisk.hpp"
#include "deny/deny.hpp"
using namespace std;
......
......@@ -87,7 +87,7 @@ class ForkAndSpec(JNIHook):
return 'nativeForkAndSpecialize'
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):
decl = ''
......@@ -118,7 +118,7 @@ class ForkServer(ForkAndSpec):
return 'nativeForkSystemServer'
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
uid = Argument('uid', jint)
......
......@@ -6,7 +6,7 @@
#include <flags.h>
#include <daemon.hpp>
#include "inject.hpp"
#include "zygisk.hpp"
#include "memory.hpp"
#include "api.hpp"
......@@ -29,6 +29,50 @@ enum {
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) \
void name##_pre(); \
void name##_post();
......@@ -36,8 +80,8 @@ void name##_post();
struct HookContext {
JNIEnv *env;
union {
SpecializeAppProcessArgs *args;
ForkSystemServerArgs *server_args;
AppSpecializeArgsImpl *args;
ServerSpecializeArgsImpl *server_args;
void *raw_args;
};
const char *process;
......
This diff is collapsed.
......@@ -24,7 +24,7 @@
#include <utils.hpp>
#include "inject.hpp"
#include "zygisk.hpp"
#include "ptrace.hpp"
using namespace std;
......
#include <cinttypes>
#include <utils.hpp>
#include "inject.hpp"
#include "zygisk.hpp"
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