Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

{


if (11thDataSourceB != 0) return YES;
return NO;
}

As a result, we can ignore data source A and concentrate on the finding of the 13th data


source B, hereafter referred to as the 13th data source. Since the 12th data source B is R5, we can


confirm that 13th data source must be written into R5 by a certain instruction, right? Click R5


and IDA will highlight all R5s as yellow to make it more convenient for tracing in the sea of


ARM assembly. Keep reversing to find where R5 is written.


When we’re searching upward to locate the 13th data source, we see there’re 4 branches to


loc_2903EAE0, as shown in figure 10-41.


Figure 10- 41 loc_2903EAE0


In figure 10-41, the left 3 branches all contain a "MOVS R5, #0", which contradicts the


result of R5 = 1, so loc_2903EAE0 must be reached via the rightmost branch, and the 13th data


source should be located in this branch. Follow this branch for R5.


When we trace into loc_2903EA3E, the situation is similar to loc_2903EAE0. Although


there are 3 branches upon it, the 1st and 2nd branches both contain a "MOVS R5, #0" as shown


in figure 10-42, so they can be excluded for now.


Figure 10- 42 loc_2903EA3E


As a result, the actual upstream is the 3rd branch, i.e. loc_2903E9C4, which has 2 branches

Free download pdf