9.3.3下,第6章MobilePhoneSettings.bundle的dump问题?

第二版,第6章第171页,遇到问题过程如下:

1.已经在真机中找到了/System/Library/PreferenceBundles/MobilePhoneSettings.bundle,但是这个文件夹中没有可执行文件,故去cache中寻找。

2.在dyld出来的文件中找到了MobilePhoneSettings.bundle,进入其中发现只有一个文件,class-dump之,出现如下信息:
// This file does not contain any Objective-C runtime information.

3.将第2步应该class-dump的可执行文件拖入IDA,发现能够解析,顺利找到了相关函数:

所以,第2步的时候,如何才能class-dump出头文件呢?

附上dyld出来的bundle文件:
MobilePhoneSettings.bundle.zip (64.1 KB)

在iOS 8以后的系统中,获取进程其他模块的方案有变。你先LLDB附加到Settings中,然后执行im li -o -f找到MobilePhoneSettings,看看它的全路径是什么;它应该不再位于cache中,而是位于macOS中。

2 个赞

也可以参考这个链接

LLDB附加到Settings中指的是lldb到/Applications/Preferences.app/Preferences么?

im li -o -f后出现300+个模块,但是搜索了下没有MobilePhoneSettings存在。。。

部分截图如下:

跟书上写的一样,你要先进到电话号码那个界面,这个bundle才会加载啊!

:joy:不好意思,之前在操作之前确实在电话界面,后来ssh到手机上时切换到了网络那边看ip了,忘了切回来。。。

已经找到路径了:

[373] 0x00000000033cc000 /Users/zklgame/Library/Developer/Xcode/iOS DeviceSupport/9.3.3 (13G34)/Symbols/System/Library/PreferenceBundles/MobilePhoneSettings.bundle/MobilePhoneSettings

找到的这个包在dump的时候也是输出了:

// This file does not contain any Objective-C runtime information.

我打算去看下 runtimebrowser 了。

多谢大神指导!!!

狗神,lldb下 image list -o -f 显示的内容具体是什么?我开始以为是手机里面所有进程或者dylib的偏移量,但是发现还有mac上的东西呢?

有没有找到这个MobilePhoneSettings这个二进制文件

大神,按照这个方法,我已经找到了全路径,但是有个问题,为什么iphone里面的应用,在被调试的时候,会用到mac上面的模块呢?实际使用的时候,也是单纯在iphone里面调用啊?

这个帖子的最后提到了,但也只是猜测

明白 多谢多谢