圖1-a
测试规格:
iOS10.2
Arm64
各位大大好,在此请教一下,近来照着书上走iOS10的arm64痛苦多多,因为看法不太一样,而且IDA免费版不吃64,所以用hooper对照书上IDA也是快眼盲。
正题是实测与书上在第187页已经跟ios10实测不同,我在PhoneSettingsListController的确有看到tableView: cellForRowAtIndexPath:的方法,所以只好跟书上分岔去调试PhoneSettingsListController。
根据图1-a我已经确定,上面的x20会在位置0000000196825334 mov x0, x20 拿到电话号码,所以我可以确定上面的bl应该是一个关键的msgSend,但书上第196页在这裡提到这个msgSend有参数LDR R1, [R0] ; “refreshCellContentsWithSpecifier” 这裡我就跟ios10对照不起来,书上也有点突然的去印出po $r2,但没有解释为何要po r2,我在这裡卡了两天。
总结上述,我的问题是:
-
该如何继续找下去才能找到书上所提到的Specifier的PSSpecifier? (还是已经苹果大改了?)
-
在hooper的arm64所表示的bl 0x18f0f2630,是否就是书上IDA的msgSend?
-
该如何在hooper上判断msgSendSuper2?因为书上的IDA会在右边字串显示说明,可是hooper只显示bl,要用s去step in才会有可能判断这个bl是msgSend or msgSendSuper… (其实hooper显示的资料没有IDA详细,但IDA不支持64 QQ)
再麻烦大神解惑了,感谢!