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