其他
7种Android Native Anti Hook的实现思路
本文为看雪论坛优秀文章
看雪论坛作者ID:爱吃菠菜
目录
(1) GOT_HOOK
(2) LDPRELOAD_HOOK
(3) INLINE_HOOK
(4) 异常HOOK
(5) ELF依赖库篡改注入
(6) LINKER_HOOK
(7) UNICOR仿真器HOOK
(8) 实现代码
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> 实现
实现
gotitem; // GOT项下标(预设)
libname; // GOT项所属模块(预设)
elfhash_sym_name; // GOT项符号名(ELFHASH)(预设)
gotitem; // GOT项内容(运行实时计算)
sym_addr; // 手动解析获取的符号虚拟地址(运行实时计算)
}GOT;
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> 实现
实现
STRUCT FUNC{
libname; // 所属模块(预设)
head; // 函数起始偏移(预设)
end; // 函数结束偏移(预设)
filehash; // 函数哈希(预设)
md_base; // 所属模块基址(运行时计算)
addr; // 函数虚拟地址(运行时计算)
}FUNC;
>>>> HOOK原理
HOOK原理
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> 实现
实现
SEC dynsym;
SEC dynstr;
SEC hash;
SEC reldyn;
SEC relplt;
SEC plt;
SEC arm_extab;
SEC arm_exidx;
SEC rodata;
}LOAD1;
struct {
SEC fini_array;
SEC init_array;
SEC dynamic;
}LOAD2;<br>
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> HOOK原理
HOOK原理
>>>> 检测手段
检测手段
>>>> 形式
形式
>>>> 接口
接口
typedef struct ANTI_HOOK{
uint32_t global_data[48000]; // 存储着检测hook所依赖的数据,这部分的构造搬到了客户端外,编译后来构造。(原因是减少hook检测的动作和痕迹)
}ANTI_HOOK;
extern "C" bool anti_hook(
ANTI_HOOK* global, // anti_hook的参数
bool is_close, // 调用完是否关闭初始化的资源
uint32_t* arr_func, // 要检测的函数地址(数组)
uint32_t count); // 数组元素个数
>>>> 逻辑
逻辑
>>>> 补充
补充
看雪ID:爱吃菠菜
https://bbs.pediy.com/user-760871.htm
推荐文章++++