最后一章逆向系统电话操作在iOS7.1上得疑问

Hi,老师,我设备是iOS7.1.2的我在学习本书最后一章的iOS电话操作时,在逆向过程中发现iOS7的打电话操作和书上的很不一样,是不是ios7以后打电话都是使用的TUCallCenter类啊,我ida了TelephonyUtilities.framework里的TUCallCenter,经过查看里面的内容还是蛮多的,我大概看了一下好像没有使用到书中CoreTelephony类,请问我是不是还要继续往深层跟踪啊?由于刚学方向不准确,请老师指点下,另外我有一点很疑惑,为什么我手机上得TelephonyUtilities.framework和模拟器上的TelephonyUtilities.framework内容完全不一样,这是为什么啊,也请老师指点下。最后希望老师尽快出下一版书啊,iOS系统更新太快了,逆向的海洋永远有无穷的乐趣。
手机上的TelephonyUtilities.framework:

xcode路径下的TelephonyUtilities.framework

__text:00028F96 loc_28F96 ; CODE XREF: -[PhoneApplication dialPhoneNumber:forUID:service:dialAssist:wasAlreadyAssisted:]+BCj
__text:00028F96 ; -[PhoneApplication dialPhoneNumber:forUID:service:dialAssist:wasAlreadyAssisted:]+CCj …
__text:00028F96 MOV R0, #(selRef_sharedInstance - 0x28FAA)
__text:00028F9E MOV R2, #(classRef_TUCallCenter - 0x28FAC)
__text:00028FA6 ADD R0, PC ; selRef_sharedInstance
__text:00028FA8 ADD R2, PC ; classRef_TUCallCenter
__text:00028FAA LDR R1, [R0] ; “sharedInstance”
__text:00028FAC LDR R0, [R2] ; OBJC_CLASS$_TUCallCenter
__text:00028FAE BLX _objc_msgSend
_text:00028FB2 MOVW R1, #(:lower16:(selRef_dial_callID_service - 0x28FC2))
__text:00028FB6 MOV R2, R4
_text:00028FB8 MOVT.W R1, #(:upper16:(selRef_dial_callID_service - 0x28FC2))
__text:00028FBC MOV R3, R6
_text:00028FBE ADD R1, PC ; selRef_dial_callID_service
__text:00028FC0 STR.W R8, [SP,#0x34+var_34]
__text:00028FC4 LDR R1, [R1] ; “dial:callID:service:”
__text:00028FC6 BLX _objc_msgSend

iOS 7的变化很大,电话相关的操作加入了TelephonyUtilities.framework,这系列微博简要地介绍了一下相关的知识。
手机上的二进制文件是arm的,模拟器是运行在OSX中的,它对应的二进制文件是x86_64的,因此完全不一样。第二本书完整适配iOS 8,应该不会再出现这种情况

多谢老师耐心解答呢,关于framework其实我最大的疑问是,手机上我没有找到二进制文件,因此无法ida它,为何手机上的framework里没有二进制文件呢,是放到别的地方了?

你回看一下dyld_decache的部分

老师,我卡在了第10章寻找接听电话的函数那,在7.1上好像不是TPButon这个类了啊,为何我按照书上10.2.3查找到了TPButton这个类,但layoutSubviews不执行啊,然后我又尝试在IncomingCall.servicebundle中hook了MPIncomingCallController的viewDidLoad,也不执行啊,是不是ios7.1这些都变了呢,希望老师给点提示呢。

7.1确实是都变了,应该不再是TPButon这个类了,但总体的思路是不变的,你可以自己尝试逆向看看

好的,我再试试吧