第6章MobilePhoneSettings.bundle的dump问题無法用RuntimeBrowser解決在iOS10.2

需求: 想请教大大,我在ios逆向书上,练习到了第六章第171页的MobilePhoneSettings.bundle,我是ios10.2所以踩了书上ios8.0的雷之后,用过extractor,上网查找各位大大文章,找到最新方法是用runtimeBrowser,但是我在ios 跑runtimeBrowser搜寻依然找不到mobilephoneSetting.bundle。根据这篇问题,似乎也没有下文:
http://bbs.iosre.com/t/9-3-3-6-mobilephonesettings-bundle-dump/5714/2
还请给点指示!

环境: iOS10.2

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

你试过这个方案吗?

因为按照书上流程学着做,还不太熟lldb,我来试试看,等等回报!

1 个赞

大大我debugserver绑定preference.app之后使用image list -o -f在lldb裡面,的确找到MobilePhoneSetting, 但是路径位置跟我之前找的是一样的.请问RuntimeBrowser要去哪裡找得到他的headers?

[393] 0x0000000006668000 /Users/ww/Library/Developer/Xcode/iOS DeviceSupport/10.2 (14C92)/Symbols/System/Library/PreferenceBundles/MobilePhoneSettings.bundle/MobilePhoneSettings

我看了下,新的系统,我也不知道要怎么用class-dump拿到headers了,但可以直接把这个二进制文件拖到IDA或者Hopper里分析,一样可以看到信息

1 个赞

大大我大概懂你的意思,但我跑到mac裡面的这个bundle位置 跑class-dump依然是出现相同的警告“This file does not contain any Objective-C runtime information.”

~/Library/Developer/Xcode/iOS DeviceSupport/10.2 (15C33)/Symbols/System/Library/PreferenceBundles/MobilePhoneSettings.bundle

class-dump -H MobilePhoneSettings -o ~/Projects/iOSRE_Projects/headers

2017-08-21 14:49:48.760 class-dump[14827:4471370] Warning: This file does not contain any Objective-C runtime information.

@snakeninny 原來如此QQ 但放進IDA 跟 hooper的確可以解析出來,只是不知道怎麼透過Hooper去看class header?有辦法用hooper看headers嗎?

Hopper左侧的那一列,就是headers

所以我群里说过了啊。你要在Preferences的进程里runtime dump。

谢谢大大提点,这边有满重要的两个小问题:
1.我透过Hooper的左边栏位可以看到class headers但是却看不到类似class dump出来的那些变数例如-(id) myNumber:(id) arg1; ,只能看到右边的汇编语言的流程,如附图.请问hooper在哪裡可以看到class dump一样的一些变数或方法的宣告?使用伪代码?

2.我终于透过hooper找到书上所说的 PhonSettingsController tableView:cellForRowAtIndexPath: 但是hooper显示的汇编语言不是书裡所说的RO, R4等等的寄存器名称,而是类似 x22, x21, [sp]!, #0x30 跟书上不太一样啊,看不懂x22, x21的意思,我上网找也找不太到如何阅读hooper这种的x22的表示法?请问大大这怎麽看啊?

p.s.我本来想使用ida去解析,但是他不让我用arm64,我换armv7虽然可以解析,但是不完全找不到PhonSettingsController tableView:cellForRowAtIndexPath 很多methods都不见了。所以我才被迫使用hooper。

  1. 可以直接在Cycript或者LLDB里使用_methodDescription这个私有方法来打印出所有方法,视觉效果跟class-dump类似;

  2. QQ爱 —— 记修复QQ International iOS客户端闪退bug的一次完整过程 - 干货分享 - 睿论坛

1 个赞

大大 不好意思 进步缓慢 不太明白你的意思,概念知道,但不知道实际要用什麽工作实作,能否给点细节提示? 还是您的意思是类似大大 @snakeninny 所提到的方法?

@snakeninny: 可以直接在Cycript或者LLDB里使用_methodDescription这个私有方法来打印出所有方法,视觉效果跟class-dump类似;

感谢大大提点终于都明白多了~~~ 原来是因为Arm64与armv7的代称不一样啊,受教了!

你nextResponder得到的C不是PSUIPrefsListController吗?

我是10.0.2的系统

真的诶!书一边看一边忘,但我只要是要看他的完整类别的继承关係,后来我在网上有找到lldb的扩展chisel,安装后使用pclass 就可以一览关係.再搭配lldb 去po [object _shortMethodDescription] 可以看到内部方法结构.目前堪用喔,但似乎看不到protocol的引用.

谢谢分享,相当好用

1 个赞