You've already forked Zygisk-Assistant
mirror of
https://github.com/snake-4/Zygisk-Assistant.git
synced 2025-09-06 06:37:02 +00:00
40 lines
1.7 KiB
C++
40 lines
1.7 KiB
C++
#pragma once
|
|
#include <string>
|
|
#include <errno.h>
|
|
#include <functional>
|
|
#include "logging.hpp"
|
|
#include "zygisk.hpp"
|
|
|
|
#define DCL_HOOK_FUNC(ret, func, ...) \
|
|
ret (*old_##func)(__VA_ARGS__) = nullptr; \
|
|
ret new_##func(__VA_ARGS__)
|
|
|
|
#define ASSERT_LOG(tag, expr) \
|
|
if (!(expr)) \
|
|
{ \
|
|
LOGE("%s:%d Assertion %s failed. %d:%s", #tag, __LINE__, #expr, errno, std::strerror(errno)); \
|
|
}
|
|
|
|
#define ASSERT_DO(tag, expr, ret) \
|
|
if (!(expr)) \
|
|
{ \
|
|
LOGE("%s:%d Assertion %s failed. %d:%s", #tag, __LINE__, #expr, errno, std::strerror(errno)); \
|
|
ret; \
|
|
}
|
|
|
|
namespace Utils
|
|
{
|
|
/*
|
|
* Always null terminates dest if dest_size is at least 1.
|
|
* Writes at most dest_size bytes to dest including null terminator.
|
|
* Reads at most dest_size bytes from src.
|
|
* Returns strlen(dest)
|
|
*/
|
|
size_t safeStringCopy(char *dest, const char *src, size_t dest_size);
|
|
|
|
bool switchMountNS(int pid);
|
|
int isUserAppUID(int uid);
|
|
bool hookPLTByName(zygisk::Api *api, const std::string &libName, const std::string &symbolName, void *hookFunc, void **origFunc);
|
|
int executeLambdaInFork(const std::function<void()> &lambda);
|
|
}
|