Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

}


......


18 => {


"cell" => "PSLinkListCell"
"label" => "HOME_CLICK_TITLE"
"detail" => "HomeClickController"
"get" => "homeClickSpeed:"
}
19 => {
"detail" => "PSListItemsController"
"set" => "accessibilitySetPreference:specifier:"
"validValues" => [
0 => 0
1 => 1
2 => 2
]
"get" => "accessibilityPreferenceForSpecifier:"
"validTitles" => [
0 => "DEFAULT"
1 => "HEADSET"
2 => "SPEAKER"
]
"requiredCapabilities" => [
0 => "telephony"
]
"cell" => "PSLinkListCell"
"label" => "ACCESSIBILITY_DEFAULT_HEADSET"
"key" => "DefaultRouteForCall"
}
]
}

It was another standard preferences specifier plist and I knew that the getter and setter for


“Incoming Calls” were accessibilitySetPreference:specifier: and


accessibilityPreferenceForSpecifier:. So it was time to move on to the next step.


5.3.3 Locate methods and functions


According to preferences specifier plist, when selecting a row in “Incoming calls”, its setter,


i.e. accessibilitySetPreference:specifier: would get called. However, a problem came up that this


method was in AccessibilitySettings.bundle, I didn’t know how to load this bundle into memory


at that time and as a result, I wasn’t able to call the method. What’s even worse, I didn’t know


how to use IDA and LLDB while there was nothing helpful in class-dump headers. I felt this


problem was far beyond my ability and couldn’t get solved in a short time. So I’ve sent a


complaint email to Shoghian frustratingly, as shown in figure 5-17.

Free download pdf