Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

any argument, how does [CKMessageEntryView updateEntryView] know whether it should set


placeholderText to “Text Message” or “iMessage”? Judging from this, we can say that


[CKMessageEntryView updateEntryView] must have conducted some internal judges to get the


conclusion that the address supports iMessage, hence changed the 2nd data source. Let’s get


back to IDA to see where the 2nd data source comes from, as shown in figure 10-17.


Figure 10- 17 Look for the 2nd data source


R2 is the argument of setPlaceholderText:, which is also the 1st data source. And R2 comes


from R5, therefore R5 is the 2nd data source. Where does R5 come from? There is a branch


here, so let’s take a look at its condition, as shown in figure 10-18.


Figure 10- 18 Branch condition


We can see that the branch condition is “[$r0 recipientCount] == 0”. The meaning of


“recipient” is very obvious that it represents the receiver of message. When the recipient count


is 0, namely there’s no recipient, MobileSMS will branch right, otherwise left. In the current

Free download pdf