FSky
1
在lldb中断到[SBMainWorkspace applicationProcessDidExit:withContext:]
调用栈是下面这样
- frame #0: 0x00000001000997c0 SpringBoard
_mh_execute_header + 300992 frame #1: 0x00000001879f5200 libdispatch.dylib
_dispatch_call_block_and_release + 24
frame #2: 0x00000001879f51c0 libdispatch.dylib_dispatch_client_callout + 16 frame #3: 0x0000000187a03444 libdispatch.dylib
_dispatch_queue_serial_drain + 928
frame #4: 0x00000001879f89a8 libdispatch.dylib_dispatch_queue_invoke + 652 frame #5: 0x0000000187a0538c libdispatch.dylib
_dispatch_root_queue_drain + 572
frame #6: 0x0000000187a050ec libdispatch.dylib_dispatch_worker_thread3 + 124 frame #7: 0x0000000187bfe2b8 libsystem_pthread.dylib
_pthread_wqthread + 1288
frame #8: 0x0000000187bfdda4 libsystem_pthread.dylib`start_wqthread + 4
没有看到直接调用applicationProcessDidExit的地方
void __cdecl -[FBApplicationProcess _queue_callExitObservers](FBApplicationProcess *self, SEL a2)
{
FBApplicationProcess *v2; // x19
FBApplicationProcess *v3; // [xsp+8h] [xbp-48h]
__objc2_class *v4; // [xsp+10h] [xbp-40h]
void *v5; // [xsp+18h] [xbp-38h]
int v6; // [xsp+20h] [xbp-30h]
int v7; // [xsp+24h] [xbp-2Ch]
void *(__fastcall *v8)(__int64, void *); // [xsp+28h] [xbp-28h]
void *v9; // [xsp+30h] [xbp-20h]
FBApplicationProcess *v10; // [xsp+38h] [xbp-18h]
v2 = self;
v5 = _NSConcreteStackBlock_ptr_329;
v6 = -1040187392;
v7 = 0;
v8 = __48__FBApplicationProcess__queue_callExitObservers__block_invoke;
v9 = &__block_descriptor_tmp_80_177;
v10 = self;
j__objc_msgSend_799(self, selRef__queue_enumerateApplicationObserversWithBlock_[0], &v5);
v3 = v2;
v4 = classRef_FBApplicationProcess_0[0];
j__objc_msgSendSuper2_713(&v3, selRef__queue_callExitObservers[0]);
}
应该是这
FSky
3
谢谢,确实是这里
顺便问一下,用什么方法能够定位到这样的调用
ida的交叉引用和lldb的调用栈都看不到的时候
FSky
5
这个知道,我直接用ida打开的,但是不能够直接看到,对字符串的交叉引用全部都是没有的
F5看到的都是类似这样
j__objc_msgSend_69(a2, (const char *)off_1C6A07198, selRef_DropTransferDataWithRecordID_);
FSky
7
你是不是修正过ida里面指向字符串的偏移,或者其他处理?
如果cache拖进去不做其他处理是不能像你这样看到的
FSky
13
我的ida 加载了complete ,然后一开始解析oc就崩溃
FSky
15
是ida 7 ,只要开始分析oc就会崩溃
内存应该不会出现不够吧,毕竟是64位的机器,虚拟内存空间一定够用
物理内存16G的