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

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

2023-5-18 23:23
6359

在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")判断合适呀,家人们,谁懂呀,哪个好心的哥哥,姐姐能给个完美封装函数


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 127
活跃值: (668)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回
//