没有libc6-dbg的符号如何查找main_arena

通过malloc_trim函数定位

一种方法是先从ida找到malloc_trim函数,那么下面这个就是main_arena的偏移了

为什么呢,我们看看malloc_trim的源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int
__malloc_trim (size_t s)
{
int result = 0;
if (__malloc_initialized < 0)
ptmalloc_init ();
mstate ar_ptr = &main_arena;
do
{
__libc_lock_lock (ar_ptr->mutex);
result |= mtrim (ar_ptr, s);
__libc_lock_unlock (ar_ptr->mutex);
ar_ptr = ar_ptr->next;
}
while (ar_ptr != &main_arena);
return result;
}

通过malloc_hook定位

在导出表里面搜索malloc_hook

跟过去,在他下面+0x10的就是main_arena

其他方法

其实方法很多,我们解引用一些这个地址,发现很多函数都会用到的,只要那个位置比较固定,我们就能找出来

打赏专区