F8LEFT / FAGotHook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

有几个libc的api不能hook

ohyeah521 opened this issue · comments

Android 6.0.1 nexus5 ,已经关闭selinux,静态编译生成一个so文件

hook libc.so的 strcmp函数正常;hook strlen会造成程序崩溃;strncpy、strcat不能hook,提示如下:
Unable to hook function libc.so 0xb6d13d31 into 0xaee37959


for(auto func = got_start; func <= got_end; func++) {
if(*func == originalFunc) { // 这里的函数地址不能够找到strcat和 strncpy的地址
FLOGE(find hook function %s %p into %p, name.c_str(), originalFunc, newFunc);
if(unprotect_got_memory) {
*func = newFunc;
} else {
unProtectMemory(func, sizeof(Elf_Addr));
*func = newFunc;
protectMemory(func, sizeof(Elf_Addr));
}
return true;
}
}
FLOGE(Unable to hook function %s %p into %p, name.c_str(), originalFunc, newFunc);

请问是什么原因?

这个Hook失败是因为在got表里面没找到strncpy这几个函数,可以试一下在选项配一下增加搜索范围。

@F8LEFT 如果hook导出表,是不是就可以hook到了?

不是。。这个得看程序的编译选项吧,先在ida里看看目标函数有没有导出

@F8LEFT hook的是libc.so肯定是导出的