Closed maocanmao closed 2 years ago
没有遇到过,建议逐步减少hook点对比分析。另外:
大佬,我这边升级了最新版本的bytehook,通过减少hook点,发现如果开启hook malloc calloc realloc 的时候(部分hook,有几个so排除在外),native heap会显著增大。
未开启时
开启时
hook函数中也没有做什么事,很奇怪。
malloc_hook_stub = bytehook_hook_partial(hook_filter, nullptr, nullptr, "malloc",
(void *) my_malloc,(bytehook_hooked_t) hookedMallocCallback, nullptr);
calloc_hook_stub = bytehook_hook_partial(hook_filter, nullptr, nullptr, "calloc",
(void *) my_calloc,(bytehook_hooked_t) hookedMallocCallback, nullptr);
realloc_hook_stub = bytehook_hook_partial(hook_filter, nullptr, nullptr, "realloc",
(void *) my_realloc,(bytehook_hooked_t) hookedMallocCallback, nullptr);
void *my_malloc(size_t size) {
BYTEHOOK_STACK_SCOPE();
void *result = BYTEHOOK_CALL_PREV(my_malloc, size);
return result;
}
void *my_calloc(size_t count, size_t size) {
BYTEHOOK_STACK_SCOPE();
void *result = BYTEHOOK_CALL_PREV(my_calloc, count, size);
return result;
}
void *my_realloc(void *ptr, size_t size) {
BYTEHOOK_STACK_SCOPE();
void *result = BYTEHOOK_CALL_PREV(my_realloc, ptr, size);
return result;
}
另外对比了一下smaps,主要的区别就是libc_malloc的大小 110008 kB : [anon:libc_malloc] 237788 kB : [anon:libc_malloc]
@maocanmao 请问是发现了问题原因才close的吗?前几天事情比较多,这周本来打算查一下这个问题的。
@maocanmao 请问是发现了问题原因才close的吗?前几天事情比较多,这周本来打算查一下这个问题的。
我把hook malloc calloc realloc 这几个函数的hookcallback函数去掉了,内存占用就下来了。但是我在callback里也只是打了一行日志
bytehook Version
1.0.0
Android OS Version
10.0
Android ABIs
armeabi-v7a, arm64-v8a
Device Manufacturers and Models
oppo r17
Describe the Bug
用一个demo应用跑的。hook的是mmap malloc等函数。 跳板函数仅调用了BYTEHOOK_STACK_SCOPE 和BYTEHOOK_CALL_PREV。 但是开启后heap native增加了非常多。在真实项目中更明显,多了大几百M 未开启hook![image](https://user-images.githubusercontent.com/5929428/158378980-3bfd9ce8-1a73-4071-9dce-6393d1cc1681.png)
开启hook![image](https://user-images.githubusercontent.com/5929428/158378678-51e6acdf-7f16-4302-8ab8-5f300653b3f8.png)