linkerpatch

Project Url: evilzhou/linkerpatch
Introduction: android N linker patch
More: Author   ReportBugs   
Tags:

android N linker patch

android N 以后,采用 namespace 对 so 加载进行隔离,详细:https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk

linker patch 提供以下 API 绕过上述限制:

extern "C" void addHook(const char src, const char dst);

extern "C" void delHook(const char* src);

extern "C" void addHijack(const char src, const char dst)

extern "C" void delHijack(const char* src)

extern "C" void addTrampoline(const char srcSo, const char srcSym, const char dstSo, const char dstSym, const char* cond);

extern "C" void delTrampoline(const char srcSo, const char srcSym);

extern "C" void initLinkerPatch();

功能说明:

1、初始化调用 initLinkerPatch 后,可以突破路径和权限的访问限制(解决 dlopen 返回 null);

2、addHook:用于替换 namespace 对 dst 进行加载(常见使用:动态链接其他 namespace 的 so);如 addHook("libUE4.so", "libxue4.so"), 游戏加载 libUE4.so 到某个 namespace,addhook 后再调用 dlopen 加载 libxue4.so 时,会使用 libUE4.so 的 namespace 进行加载。

3、addHijack::用于替换 so 进行加载;

4、addTrampoline:用于替换 dlsym 函数查找

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea