【求助】FridaAgent 崩溃问题

在对一个App(xiecheng)进行某些方法的hook后,总是发生App崩溃;
堆栈信息如下:
test1.log (126.5 KB)
test.log (123.9 KB)
主要是对定位方法hook时,就会出现该问题;

    if (ObjC.classes.hasOwnProperty("CLLocationManager")) {
        var hook = ObjC.classes.CLLocationManager["+ authorizationStatus"];
        Interceptor.attach(hook.implementation, {
            onLeave: function(retval) {
            	var backtrace = '\n\t+[CLLocationManager authorizationStatus]\n\t' + Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\n\t');
                console.log(backtrace);
            }
        });
    } else {
        console.log("[*] Not Found: CLLocationManager [\"+ authorizationStatus\"]");
    }

通过将手机的firda-agent.dylib拷贝出来后,从test1.log中的堆栈,看到是FridaAgent自己退出的?而另一个堆栈就不是。

其他的一些崩溃情况堆栈;
test10.log (125.1 KB)
test8.log (122.9 KB)

报错是:

Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
Termination Description: SPRINGBOARD, scene-create watchdog transgression: ctrip.com exhausted real (wall clock) time allowance of 18.23 seconds | ProcessVisibility: Foreground | ProcessState: Running | WatchdogEvent: scene-create | WatchdogVisibility: Foreground | WatchdogCPUStatistics: ( | “Elapsed total CPU time (seconds): 23.740 (user 23.740, system 0.000), 59% CPU”, | “Elapsed application CPU time (seconds): 19.530, 49% CPU” | )

崩溃原因是scene-create这个看门狗超时引起系统强制终止程序,我UI这块不熟应该是限制应用执行ui操作的时间,不过根本原因是frida拖慢了应用的执行速度导致。

可以先尝试一下去掉.map(DebugSymbol.fromAddress)这个(然后保存一份modulemap手动查调用栈),因为frida某个版本之后Darwin的调试符号获取方式加了一些非常慢的操作。不是的话那可能是应用有针对某些系统API的防护

真的是这样的。。

感谢,我一直以为是App做了防护