hook malloc 测试首次正常,后面的不会回调(小米13) #76
Answered
by
Colibrow
HarlonWang
asked this question in
Q&A
-
以下代码,在小米13上测试下来,第二行及以后的 malloc 的调用,hook 那里都不会被触发: typedef void *(*type_malloc)(size_t);
void *orig_malloc;
void* my_malloc(size_t size) {
void* p = ((type_malloc)orig_malloc)(size);
__android_log_print(ANDROID_LOG_ERROR, "shadowhook_tag", "内存分配: %zu 字节, 地址: %p", size, p);
return p;
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
shadowhook_init(SHADOWHOOK_MODE_SHARED, true);
void *stub = shadowhook_hook_sym_addr((void *)malloc, (void *)my_malloc, &orig_malloc);
if(stub == NULL)
{
int error_num = shadowhook_get_errno();
const char *error_msg = shadowhook_to_errmsg(error_num);
__android_log_print(ANDROID_LOG_WARN, "test", "hook failed: %d - %s", error_num, error_msg);
}
// 这行会触发
malloc(123);
// 这以后都不会触发
malloc(321);
malloc(432);
malloc(543);
... 帮忙看下,是不是我的代理函数,使用姿势不对 :( |
Beta Was this translation helpful? Give feedback.
Answered by
Colibrow
Sep 24, 2024
Replies: 1 comment 5 replies
-
https://github.com/bytedance/android-inline-hook/blob/main/doc/manual.zh-CN.md#%E4%B8%BE%E4%BE%8B%E4%B8%80c%E6%BA%90%E6%96%87%E4%BB%B6 |
Beta Was this translation helpful? Give feedback.
5 replies
Answer selected by
HarlonWang
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/bytedance/android-inline-hook/blob/main/doc/manual.zh-CN.md#%E4%B8%BE%E4%BE%8B%E4%B8%80c%E6%BA%90%E6%96%87%E4%BB%B6
在SHARED模式下代理函数中需要执行SHADOWHOOK_POP_STACK