首页
社区
课程
招聘
关于getModuleBase的问题,家人们,谁懂呀
发表于: 2023-5-18 23:23 6338

关于getModuleBase的问题,家人们,谁懂呀

2023-5-18 23:23
6338

在substrate hook时,只使用if(strstr(buff, "r-xp")判断,是可以正确获取到base_addr(比如 libil2cpp.so),如果多加一个|| strstr(buff, "r--p")判断,此时就会获取到错误地址,从而崩溃

 

但GOT hook时,只使用if (strstr(buff, "r-xp")判断,获得的base_addr,就会提示error:memcmp

1
2
3
4
5
6
Elf_Ehdr *header = (Elf_Ehdr*)(base_addr);
if (memcmp(header->e_ident, ELFMAG, SELFMAG) != 0)//if (memcmp(header->e_ident, "\177ELF", 4) != 0)
{
    LOGE("error:memcmp");
    return;
}

如果多加一行|| strstr(buff, "r--p")判断,就可以获取到正确地址,也就不会error:memcmp

 

那么问题来了,什么时候多加这行|| strstr(buff, "r--p")判断合适呀,家人们,谁懂呀,哪个好心的哥哥,姐姐能给个完美封装函数


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 128
活跃值: (463)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

明明都写出判断了,却不在获取基址前调用,你在获取基址后才来判断,这不是一般的6。

```

        if (strstr(buf, name)) {

            sscanf(buf, "%lx-%lx %s %lx %*x:%*x %*u %s\n",

                             &base, &end, flags, &ptr, path);


            if (memcmp((void *)base, ELFMAG, SELFMAG) == 0) {

                break;

            } else {

                base= 0;

            }

        }

```

2023-5-19 21:34
0
游客
登录 | 注册 方可回帖
返回
//