Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

Figure 10- 1 Change of placeholder



  • When you start to input message body, if the address only supports SMS, the “Send” button beside


the input box will be green; if it supports iMessage, the button will be blue.



  • When you hit the “Send” button to send this message, if this is an SMS, the message bubble will be


green, otherwise it will be blue.


These 3 phenomena will appear one after another. Since the process of detecting iMessage


has already happened in the 1st phenomenon, it is enough to act as the cut-in point. We’ll focus


on the 1st phenomenon from now on.


After locating the cut-in point, let’s think together to concretize the phenomenon into a


reverse engineering idea.


What we can observe is visible on UI, i.e. the change from “Text Message” to “iMessage”.


As we’ve already known, visualizations on UI don’t come from nowhere but the data source,


hence by referring to visualizations, we can find the data source, i.e. placeholder, using Cycript.


Placeholder doesn’t come from nowhere but its data source either. The reason why


placeholder changes is that its data source (data source’s data source, and so on. Hereafter


referred to as the Nth data source) changes, like the following pseudo code presents:


id dataSource = ?;
id a = function(dataSource);
id b = function(a);
id c = function(b);
...
id z = function(y);
NSString *placeholder = function(z);

From the above snippet we can know that the original data source is dataSource, its change


in turn results in the change of placeholder. Well, what’s the original data source? In the 1st


phenomenon, our only input is the address, so the original data source is sure to be the address.

Free download pdf