0x00
最近分析了一个Mac App的crash,感觉挺有意思,记录分享下。
背景略有点坑,手头有的只是一个二进制文件,一个crash文件。符号文件有,但是不知道怎么在IDA6.8里加载,map文件也没有。
Crash文件:
1、 每个线程的堆栈;
2、 每个模块加载范围;
3、 崩溃时寄存器的值;
4、 崩溃的简单原因分析(段错误);
5、 无效地址附近的符号及内存属性。
另外二进制文件经过比较复杂的优化,很多函数被内联。
Crash文件简单摘要如下:
Crashed Thread: 3
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00007fa0630b3d04
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [8880]
VM Regions Near 0x7fa0630b3d04:
MALLOC_SMALL 00007fa05b000000-00007fa05d000000 [ 32.0M] rw-/rwx SM=PRV
-->
STACK GUARD 00007ffeebac1000-00007ffeef2c1000 [ 56.0M] ---/rwx SM=NUL stack guard for thread 0
Thread 3 Crashed:
0 module name A 0x0000000100156328 io_dispatch_t::worker_routine(void*) (in module A) (source