讓App吐出自己的Crash信息

某App啓動後Native層就會Crash,但是由於它集成了google_breakpad,將Native層的異常全部捕獲並處理了,所以看不到任何的異常信息,只有這麼一段:

06-24 14:22:45.165   570   570 I Zygote  : Process 7047 exited due to signal (11)

通過分析它是集成了google_breakpad,於是找到google_breakpad::ExceptionHandler()函數:

 

Hook此函數:


HOOK_DEF(void *, _ZN15google_breakpad16ExceptionHandlerC1ERKNS_18MinidumpDescriptorEPFbPvEPFbS3_S4_bES4_bi, void *p,void *p2,void *p3,void *p4,
         bool b,int i) {
    ALOGE("1111111111 enter ExceptionHandler()....");
    return NULL;
}

AntiMethodInfo antiMethodsInfo[] = {
        {"_ZN15google_breakpad16ExceptionHandlerC1ERKNS_18MinidumpDescriptorEPFbPvEPFbS3_S4_bES4_bi",
                (void *) new__ZN15google_breakpad16ExceptionHandlerC1ERKNS_18MinidumpDescriptorEPFbPvEPFbS3_S4_bES4_bi,
                (void *) orig__ZN15google_breakpad16ExceptionHandlerC1ERKNS_18MinidumpDescriptorEPFbPvEPFbS3_S4_bES4_bi}
};

void disableGoogleBreakpad(const char *name) {
    void *handle = fake_dlopen(name, 0);
    for (int i = 0; i < sizeof(antiMethodsInfo) / sizeof(antiMethodsInfo[0]); i++) {
        void *symbol = fake_dlsym(handle, antiMethodsInfo[i].name);
        if (symbol) {
            MSHookFunction(symbol,
                           (void *) antiMethodsInfo[i].newFunc), (void **) &(antiMethodsInfo[i].origFunc);
        }
    }
}

 

於是終於可以看到此APP的Crash信息:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章