рдЗрд╕ рдЕрдзреНрдпрд╛рдп рд╕реЗ, рдФрд░ рдЗрд╕ рдкреВрд░реА рдкреБрд╕реНрддрдХ рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ iOS рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реЗ tidbits рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдирд╣реАрдВред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ Apple рдХреА рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдиреАрддрд┐ рд╕рд░рд▓ рд╣реИ: рдЖрдк рдпрд╣ рд╕рдм рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдкрдиреА рдЬреЛрдЦрд┐рдо рдФрд░ рдЬреЛрдЦрд┐рдо рдкрд░ред рдЕрдЧрд▓реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХрд╛ рдХреЛрдб рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдЦрд┐рдо рдФрд░ рд▓рд╛рдн рдХреЗ рдмреАрдЪ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдПрд░рд┐рдХрд╛ рд╕рджреБрди, рдЖрдИрдлреЛрди рдбреЗрд╡рд▓рдкрд░ рдХреА рдХреБрдХрдмреБрдХ
рдореВрд▓рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреБрд╕реНрддрдХ рдореЗрдВ, iPhone рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдХреБрдЫ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдмрд┐рдЯреНрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ iPhone рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдирд╣реАрдВред рдЗрд╕ рдкрд░ Apple рдХреА рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдиреАрддрд┐ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЖрдк рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдлрд░реНрдорд╡реЗрдпрд░ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдб рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИред рдЬреЛрдЦрд┐рдо рдФрд░ рдЗрдирд╛рдо рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдХрд╛рдпрдо рд░рдЦрдирд╛ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред
рддреНрдпрд╛рдЧ
- рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдирд┐рдпрдорд┐рдд iPhone (4S рд╕рд╣рд┐рдд) рдФрд░ iPad (рдирдП iPad рд╕рд╣рд┐рдд) рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЗрд▓рдмреНрд░реЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
- рд╕рднреА рд╕рдорд╛рдзрд╛рди iOS 5 рдкрд░ рд▓рд┐рдЦреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ iOS 4.3 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЖрдИрдУрдПрд╕ 4 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рди рдХрд╣рд╛ рдЬрд╛рдПред рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ iOS 6 рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП iOS 6 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ AppStore рдореЗрдВ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВ :-)
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ: "рдПрдкреНрдкрд▓ рдХреИрд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?"
- Apple iOS рдХреЗ рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реЙрд▓реНрд╡ рд╣реИ, рдФрд░ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрдб рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдмреИрдХрд╡рд░реНрдб рдХрдореНрдкреИрдЯрд┐рдмрд┐рд▓рд┐рдЯреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреАред
- рдореИрдВ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдЬрд┐рди рдПрдкреАрдЖрдИ рдХреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдЙрдирдХрд╛ рдХреЛрдИ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- Apple рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддрд╛ iOS рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИред
- рд▓реЗрдЦ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдПрд╕рдбреАрдХреЗ рдореЗрдВ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдЧрд╛рдЗрдб
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдХрд▓рд╛рдЗрдЯ рд╕реНрддрд░ рдХреЛ рдмрджрд▓реЗрдВ (рдЖрдИрдУрдПрд╕ 5 рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрд╕рдбреАрдХреЗ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛)ред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдРрдкреНрдкрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЪрд░ рдХреЛ рд╕рд╛рд░реНрдердХ рдФрд░ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрд╕рдбреАрдХреЗ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрдордХ, рд╕реНрддрд░, рд╕реНрдХреНрд░реАрдиред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЗрдЦреЛ LookSDKForSymbol.sh (рдпрд╣
nm
рдкрд░ рдореЗрд░рд╛ рдЖрд╡рд░рдг рд╣реИ; рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдмрд╛рдж рдореЗрдВ
рдЯреВрд▓ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ) рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдП рдЧрдП рд╡рд░реНрдгреЛрдВ (рдЬреИрд╕реЗ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ, рдХрд╛рд░реНрдпреЛрдВ, рдЪрд░) рдХреЗ рдирд╛рдо рд▓реМрдЯрд╛рддреА рд╣реИред рдореБрджреНрджрд╛ рдЙрджрд╛рд╣рд░рдг:
$ LookSDKForSymbol.sh рдкреНрд░рдХрд╛рд╢ рд╕реНрддрд░
U _UIBacklightLevelChangedNotification
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ред/System/Library/CoreServices/SpringBoard.app/SpringBoard
режрежрез рдмреА рекрей рд╕реА рек рдЯреА - [рдЕрдкрд░рд┐рдкрдХреНрд╡ рдмреИрдХрд▓рд╛рдЗрдЯ рд▓рд╛рдИрд╡реЗрд▓]
режрежрез рдмреА рекрейремреж рдЯреА - [рдЕрдкрд╛рдЗрд▓реЗрд╢рди рд╕реЗрдЯрдмреЗрдХрд▓рд╛рдЗрдЯ рд▓рд╛рдЗрд╡реЗрд▓:]
0025ce54 t - [UIDevice _backlightLevel]
0025ce40 t - [UIDevice _setBacklightLevel:]
... рдФрд░ рдХреБрдЫ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдЪрд░рд┐рддреНрд░
рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рддреБрд░рдВрдд рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
-[UIApplication backlightLevel]
рдмреИрдХрд▓рд╛рдЗрдЯ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╢реЗрд╖, рдпрджрд┐ рдХреБрдЫ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк Google рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдП рдЧрдП рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдПрдкреАрдЖрдИ рдкрд░ рд╢реЛрдз рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рд▓ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд рдпрд╣ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд╛рд░реНрдп рдХреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдкрд╛рдП рдЧрдП рдЕрд▓рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рдЬреИрд╕реЗред
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЪрд░рд┐рддреНрд░ рдХреЗ рддрд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ:
- рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдФрд░ рд╕реА ++ рдлрд╝рдВрдХреНрд╢рди, рдХрдХреНрд╖рд╛рдПрдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ рдореЗрдВ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ ([]) рдпрд╛ рдбреЙрд▓рд░ рдЪрд┐рдиреНрд╣ ($) рд╣реЛрддреЗ рд╣реИрдВред C ++ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдирд╛рдо рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд░реНрдг, рджреЛ рдХреЙрд▓реЛрди (: :) рд╣реИрдВред
- рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдмреНрд▓реЙрдХред рд╡реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ:
___{}{ }_block_invoke_{2}
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
___22-[AXSystemServer init]_block_invoke_0
- рд╢реБрджреНрдз рд╕реА рдлрд╝рдВрдХреНрд╢рдиред
- рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдЕрд▓рд░реНрдЯред рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЕрдВрдд рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
_SBMenuButtonPressedNotification
ред - рдХреБрдВрдЬреА / рд╕реНрдерд┐рд░рд╛рдВрдХред рдЖрдорддреМрд░ рдкрд░ k рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: _
kCFUserNotificationAlternateButtonTitleKey
ред
рдЖрдЧреЗ рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рддреАрдХ рдХреА рд╢реНрд░реЗрдгреА рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред
- рд╣рдо рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
рдХреНрд▓рд╛рд╕-рдбрдВрдк-рдЬреЗрдб рдлрд╛рдЙрдВрдбреЗрд╢рди> $ / iOS_pStreet_headers / Foundation.h
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЙрддреНрдкрдиреНрди рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдкрджрд╛рдиреБрдХреНрд░рдо, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рд╡рд┐рдзрд┐рдпрд╛рдБ, рдЖрджрд┐ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдереЛрдбрд╝рд╛ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдПрдкреАрдЖрдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрднреА-рдХрднреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдУрдЯреЛрд▓ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд: рдЖрдк рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ рдХрд┐ objc_msgSend (рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛)ред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдЬреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИ (рдмрд╛рдХреА "рд╕рд╛рдорд╛рдиреНрдп" рддрд░реНрдХ рддреАрд╕рд░реЗ, рдЪреМрдереЗ, рдЖрджрд┐ рддрд░реНрдХ рд╣реИрдВ)ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕ hexdump
рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, hexdump
рдорджрдж рдХрд░реЗрдЧрд╛ред
- рдЖрдк рддреБрд░рдВрдд рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ (рдЖрдорддреМрд░ рдкрд░) рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд╕рдмрд╕реЗ рдХрдард┐рди рд╡рд┐рдХрд▓реНрдкред рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╛рдХреА рдореЗрдВ - рдХреЗрд╡рд▓ рдбрд┐рд╕реНрд╕реИрдбред рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ "рдЕрдЬреНрдЮрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ?"
- рдЖрдЗрдП рддреАрди рдореБрдЦреНрдп рдЪреЗрддрд╛рд╡рдиреА рдХреЗрдВрджреНрд░реЛрдВ (рд╕реНрдерд╛рдиреАрдп, рдбрд╛рд░реНрд╡рд┐рди рдФрд░ рдХреЛрд░рдЯреЗрд▓реНрдлреЛрдиреА) рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдЕрд▓рд░реНрдЯ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдпрджрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд▓рд░реНрдЯ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ:
- рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд░реНрдЯ рдПрдХ рдЕрд▓рдЧ, рд╡рд┐рд╢реЗрд╖ рд╕рддрд░реНрдХ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдРрд╕реЗ рд╕реВрдЪрдирд╛ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рд╢рд╛рди рдЙрд╕реА рдврд╛рдБрдЪреЗ рдореЗрдВ рддрд▓рд╛рд╢рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрд▓рд░реНрдЯ рд╣реИред
- рдЕрд▓рд░реНрдЯ рдбрд┐рд▓реАрд╡рд░реА рдЕрдХреНрд╖рдо рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд░реНрдЯ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
- рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрд╕ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдирд┐рд░рдВрддрд░ рдХреБрдВрдЬреА рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдПрдХ рд╣реА рд╢рдмреНрдж рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдирд┐рд░рдВрддрд░
kLockdownDeviceColorKey
-> рдлрд╝рдВрдХреНрд╢рди kLockdownDeviceColorKey
lockdown_copy_value(...)
;
рдЕрдЬреНрдЮрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ?
1. рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдо рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдХреНрд╕рд░ рдЪреАрдиреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдЖрдпрд╛, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХреЛрд░рд┐рдпрд╛рдИ рдФрд░ рдЬрд╛рдкрд╛рдиреА рд╕рд╛рдЗрдЯреЗрдВ рдереАрдВред рдЖрдорддреМрд░ рдкрд░ рдХреЛрдб рд╣реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдЗрд╕ рд╡рд░реНрдЧ, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреА рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
2. рдХрдИ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд╛рд╡рдзрд╛рдиреА , рдпрд╣ рдХрд╛рдлреА рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ рдХрд┐ GSEventSetBackLightLevel, рд╕реНрд╡рдпрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИред
рд╢реВрдиреНрдп GSEventSetBackLightLevel (рдлреНрд▓реЛрдЯ рд╕реНрддрд░);
рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрди рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (SBGetRingerSwitchState рдлрд╝рдВрдХреНрд╢рди рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):
SInt32 ret = 5, out1 = 1, out2 = 2, out3 = 3, out4 = 4; void *libHandle = dlopen(SPRINGBOARD_SERVICES_PATH, RTLD_LAZY); SInt32 (*SBGetRingerSwitchState)(SInt32*,SInt32*,SInt32*,SInt32*) = dlsym(libHandle, "SBGetRingerSwitchState"); ret = SBGetRingerSwitchState(&out1, &out2, &out3, &out4); NSLog(@"%x %x %x %x %x", ret, out1, out2, out3, out4);
рдЗрд╕ рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдирд┐рдХрд▓рд╛
1) рдлрд╝рдВрдХреНрд╢рди рдиреЗ рд╕реНрд╡рд┐рдЪ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░
0x10000003
рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ред
2) рдЪрд░ 2 рдиреЗ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡рдпрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рднреА рд╕реНрд╡рд┐рдЪ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
3) рд╢реЗрд╖ рдЪрд░ рдиреЗ рдЕрдкрдирд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред
1) рд╕реЗ рдореИрдВрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░
kern_return_t
рдХрд╛ рдорд╛рди
kern_return_t
, рдХреНрдпреЛрдВрдХрд┐
0x10000003
MACH_SEND_INVALID_
DEST
рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рддреНрд░реБрдЯрд┐ рдЧрд▓рдд рдкреЛрд░реНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ [рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреЛрд░реНрдЯ рдордЪ рдХрд░реНрдиреЗрд▓ (рдордЪ рдХрд░реНрдиреЗрд▓) рдХрд╛ рдПрдХ рдЕрдореВрд░реНрддрди рд╣реИ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ]ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╣реИред 2) рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрди рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ:
kern_return_t SBGetRingerSwitchState(mach_port_t port, SInt32 *state);
рд╡реИрд╕реЗ, рдЕрдЧрд░ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ, рд╢рдмреНрдж рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдУрдВ-рд╕реА рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред
3. рдмреЗрдЪреИрдиреАред рдЙрд╕реА SBGetRingerSwitchState рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ред рд╣рдо рдУрдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
$ otool -p _SBGetRingerSwitchState -tV -arch armv6 SpringBoardServices | рдХрдо
000038cc b5f0 рдкреБрд╢ {r4, r5, r6, r7, lr}
000038ce af03 r7, sp, # 12 рдЬреЛрдбрд╝реЗрдВ
000038d0 b092 рдЙрдк рдПрд╕рдкреА, # 72
000038d2 aa06 r2, sp, # 24 // рд░рдЬрд┐рд╕реНрдЯрд░ r2 рдХрд╛ рдорд╛рди рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реИ
000038d4 9205 str r2, [sp, # 20]
000038d6 ac08 r4, sp, # 32 // рдЬреЛрдбрд╝реЗрдВ ... рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде r4 рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ
000038d8 ab0f r3, sp, # 60 // ... рдФрд░ r3 рдЬреЛрдбрд╝реЗрдВ
000038da 9304 str r3, [sp, # 16]
000038dc 9103 str r1, [sp, # 12] // r1 рдХрд╛ рдорд╛рди рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ
000038de 4925 ldr r1, [PC, # 148] (0x3974)
000038e0 6011 str r1, [r2, # 0]
000038e2 6020 str r0, [r4, # 0] // r0 рдХрд╛ рдорд╛рди рднреА рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ
...
рдЗрд╕ рдХреЛрдб рд╕реЗ, рдЖрд░реНрдо рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рд╕рддрд╣реА рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╢рдмреНрдж рдХреЗ рджреЛ рддрд░реНрдХреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рддрд░реНрдХ рд╣реИрдВред рд╣рдо рдЖрдЧреЗ, рдмрд╣реБрдд рдЕрдВрдд рддрдХ рдЬрд╛рддреЗ рд╣реИрдВред
...
00003964 9e04 ldr r6, [sp, # 16]
00003966 6836 ldr r6, [r6, # 0]
00003968 9903 ldr r1, [sp, # 12]
0000396a 600e str r6, [r1, # 0]
// рд▓рдЧрднрдЧ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ (рд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ): * r1 = r6; рдпрд╛рдиреА r1 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрддреЗ рдкрд░, r6 рд╕реЗ рдорд╛рди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ;
// рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ
0000396c 462e mov r6, r5
0000396e 4630 mov r0, r6
// рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо r0 рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ
00003970 b012 рдЬреЛрдбрд╝реЗрдВ рдПрд╕рдкреА, # 72
00003972 bdf0 рдкреЙрдк {r4, r5, r6, r7, pc}
...
рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐ рд╣реИ:
int SBGetRingerSwitchState(int arg1, int* arg2);
рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрддреЗ рд╣реИрдВ:
kern_return_t SBGetRingerSwitchState(mach_port_t port, SInt32 *state);
рд╡рд┐рднрд┐рдиреНрди рдлрд░реНрдорд╡реЗрдпрд░ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рд╡рд╛рдЗрд╕: рдХреНрдпрд╛ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдПрдкреАрдЖрдИ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕рднреА рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
UIDevice-IOKitExtension рдПрдХреНрд╕рдЯреЗрдВрд╢рди (IMEI рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕рднреА рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред IOS рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
рдпрд╣рд╛рдБ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
-[NSObject respondsToSelector:]
), рдХрдХреНрд╖рд╛рдПрдВ (
NSClassFromString(@"SomeClass")
nil
рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐
SomeClass
), рдЖрджрд┐ред рдФрд░ рдпрд╣ рднреА рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдПрдкреАрдЖрдИ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рдирддрд╛ NULL рдХреЗ рд▓рд┐рдП dlsym (...) рдФрд░ dlopen (...) рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдЙрджрд╛рд╣рд░рдг
рдЙрджрд╛рд╣рд░рдг 1:
рд╕рд╛рдЗрдб рд╡рд╛рдЗрдмреНрд░реЗрд╢рди рд╕реНрд╡рд┐рдЪ (рдЙрд░реНрдл рд░рд┐рдВрдЧ / рд╕рд╛рдЗрд▓реЗрдВрдЯ рд╕реНрд╡рд┐рдЪ, рдореНрдпреВрдЯ рд╕реНрд╡рд┐рдЪ) рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╡рд╣ рд╕рд╛рдЗрдб рд╕реНрд╡рд┐рдЪ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореВрд▓ рдореЗрдВ рд░рд┐рдВрдЧ / рд╕рд╛рдЗрд▓реЗрдВрдЯ рд╕реНрд╡рд┐рдЪ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ iPhone рдФрд░ iPad рдореЗрдВ "рд╢рд╛рдВрдд" рдФрд░ рд╕рд╛рдорд╛рдиреНрдп / "рдЬрд╝реЛрд░" рдореЛрдб рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред StackOverflow рдкрд░ рдПрдХ рдЦреЛрдЬ рдиреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рджрд┐рдпрд╛:
#import <AudioToolbox/AudioToolbox.h> ... /* : 0: 1: */ int switchState() { // ... // , // kAudioSessionCategoryAmbient // ... UInt32 size = sizeof(CFStringRef)); CFStringRef route; AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &route); // CFIndex len = CFStringGetLength(route); return (len > 0); // - , "" }
рдЬреЛ, рд╣рд╛рд▓рд╛рдБрдХрд┐, iOS 5 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдирдП API (kAudioSessionProperty_AudioRouteDescription) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬреЛ рдСрдбрд┐рдпреЛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред (AUDIOROUTE)
StackOverflow рдкрд░ рдореЗрд░реА рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдиреЗ рдореБрдЭреЗ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рд▓рд╛рдпрд╛ред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди AudioServicesAddSystemSoundCompletion () рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдЧреИрд░-рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдерд╛ред
#import <AudioToolbox/AudioToolbox.h> ... void playSound() { AudioServicesAddSystemSoundCompletion(MySoundId, NULL, NULL, MyAudioServicesSystemSoundCompletionProc, AudioServicesPlaySystemSound(MySoundId); } void MyAudioServicesSystemSoundCompletionProc (SystemSoundID ssID, void *clientData) { // NSLog(@"Playback has been finished"); }
рдЧреИрд░-рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ MyAudioServicesSystemSoundCompletionProc рдХреЙрд▓рдмреИрдХ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рдзреНрд╡рдирд┐ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд AudioServicesPlaySystemSound рдХреЛ рдореВрдХ рдореЛрдб рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рдпрд╣ рд╕реНрд╡рд┐рдЪ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рдорд┐рдпрд╛рдЬрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рд▓рдВрдмрд╛рдИ 1 s рд╣реИ, рддреЛ рдореМрди рдФрд░ рд▓рд╛рдЙрдб рдореЛрдб рдореЗрдВ MyAudioServicesSystemSoundCompletionProc () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп 1 s рд╣реИред рдЗрд╕ рдкрд░, рдореИрдВрдиреЗ рд╕рд╛рдЗрдб рд╕реНрд╡рд┐рдЪ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджреВрд╕рд░рд╛, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛ред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:
#import <AudioToolbox/AudioToolbox.h> #import "MuteSwitchTet.h" ... enum MuteSwitchStates { kMuteSwitchUndefined = -1, kSoundless = 0, kSound = 1 }; @implementation MuteSwitchTest ... void MyAudioServicesSystemSoundCompletionProc (SystemSoundID ssID, void *clientData) { // "" MuteSwitchTest *self = (MuteSwitchTest*)clientData; [NSObject cancelPreviousPerformRequestsWithTarget:self]; self.muteSwitchState = kSoundless; } - (void) cancelSystemSoundCompletion { // "" AudioServicesRemoveSystemSoundCompletion(SoundID); self.muteSwitchState = kSound; } - (void) startPlayback { AudioServicesAddSystemSoundCompletion(SoundID, NULL, NULL, MyAudioServicesSystemSoundCompletionProc, self); AudioServicesPlaySystemSound(SoundID); [self performSelector:@selector(cancelSystemSoundCompletion) withObject:nil afterDelay:0.1]; } ... @end
рдпрджреНрдпрдкрд┐ рдпрд╣ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдерд╛ рдФрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рджреЗрд░реА (рд▓рдЧрднрдЧ 1/10 рд╕реЗрдХрдВрдб) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рджреЗрд░реА рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдкреИрджрд╛ рд╣реБрдИред рджреВрд╕рд░реЗ, рдЗрд╕рдХрд╛ рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдерд╛ - рдЬреЛ рдЦреБрдж рдмрдЬрдиреЗ рд╡рд╛рд▓рд╛ рд╕рд╛рдЙрдВрдб рдерд╛, рдЬреЛ рдпреВрдЬрд░ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рддреЗрдЬ рдЖрд╡рд╛рдЬ рдХрд░рддрд╛ рдерд╛ред рдмрд╛рдж рдореЗрдВ, рдореИрдВрдиреЗ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдСрдбрд┐рдпреЛ рдПрдбрд┐рдЯрд░ рдореЗрдВ рд╡реЙрд▓реНрдпреВрдо рдХреЛ рд╢реВрдиреНрдп рдХрд░ рджрд┐рдпрд╛ред рддреАрд╕рд░рд╛, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЧрдВрджреЗ рд╣реИрдХ рдХреА рддрд░рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
VSSilentSwitch рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди
рдХреЛ рдмреЗрдЪрдиреЗ
рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рдерд╛, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЙрд╕реА рдкреНрд░рднрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдкрд░ рд▓реМрдЯ рдЖрдпрд╛ред рдореИрдВрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП nm рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА, рдЬрд┐рд╕рдХреА рдПрдХ рд╕реВрдЪреА рдиреАрдЪреЗ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ("рдЯреВрд▓" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ)ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ, рджреЛ рдпрд╛ рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдХреАрд╡рд░реНрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
$ sh ~ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / LookSDKForSymbol.sh RingerSwitch
# рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдЫреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ
0000d738 S _kGSRingerSwitchCapability
рдЗрд╕рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред/System/Library/PStreetFrameworks/GraphicsServices.framework/GraphicsServices
000038cc T _SBGetRingerSwitchState
0000370c T _SBGetRingerSwitchState
рдЗрд╕рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред/System/Library/PStreetFrameworks/SpringBoardServices.framework/SpringBoardServices
SBGetRingerSwitchState
рдирд╛рдордХ рдПрдХ рдлреАрдЪрд░ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рд╡рд╛рдВрдЫрд┐рдд рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
mach_port_t SBSSpringBoardServerPort();
рдЙрд╕реА рдврд╛рдВрдЪреЗ рд╕реЗред
рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:
@implementation MuteSwitchTest ... - (int) switchState {
рдЙрджрд╛рд╣рд░рдг 2:
рдЖрдИрдПрдордИрдЖрдИ рдкрд░рд┐рднрд╛рд╖рд╛
IMEI (рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдг рдкрд╣рдЪрд╛рди) - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди
рдкреНрд░рддреНрдпреЗрдХ рдлреЛрди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдлреЛрди рдХрд╛ рдореИрдХ рдПрдбреНрд░реЗрд╕ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлреЛрди рдореЗрдВ рдореИрдХ рдПрдбреНрд░реЗрд╕ рднреА рд╣реЛрддрд╛ рд╣реИ)
рдореБрдЭреЗ рдпрд╣ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдПрд░рд┐рдХрд╛
рд╕рджреБрди рдпреВрдбрд╛рдЗрд╕-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрд╛, рдпрд╣ рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рддрд░рд╣ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА "рд╕реЛрдиреЗ рдХреА рдЦрд╛рди" рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, UIDevie (IOKit_Extensions) IMEI рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ iOS 4 рдХреЗ рд╕рд╛рде iPhone 4 рдФрд░ iOS 4.3 рдХреЗ рд╕рд╛рде iPad рдкрд░ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдореИрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ IMEI рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: iPad 2, рдирдпрд╛ iPad рдФрд░ iPhone 4Sред рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдЧрдпрд╛, рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдбрд░ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реБрдИред рдЦреЛрдЬреЛрдВ рдиреЗ рдореБрдЭреЗ рдлрд┐рд░ CoreTelephony рдирд╛рдордХ рдПрдХ рдврд╛рдВрдЪреЗ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ред
$ nm -g ./CoreTelephony | grep- рдЖрдИ imei
U _kCFAbsoluteTimeIntervalSince1970
00053b28 S _kCTMobileEampleInfoIMEI
00053ad4 S _kCTPostponementInfoIMEI
00053ac4 S _kCTPostponementStatusErrorDefaultIMEI
$ nm -g ./CoreTelephony | grep
000260e4 T __CServerConnectionCopyMobileEampleInfo
00053b34 S _kCTMobileEampleInfo1xIMSI
00053b20 S _kCTMobileEampleInfoCurrentMobileId
00053b24 S _kCTMobileEampleInfoCurrentSubscriberId
00053b40 S _kCTMobileEampleInfoERIVersion
00053b2c S _kCTMobileEampleInfoICCID
00053b28 S _kCTMobileEampleInfoIMEI
00053b30 S _kCTMobileEampleInfoIMSI
00053b38 S _kCTMobileEampleInfoMEID
00053b44 S _kCTMobileEampleInfoMIN
00053b3c S _kCTMobileEampleInfoPRLVersion
рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди (_CServerConnectionCopyMobileEampleInfo (...)) рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (CF рдврдВрдвреЛрд░рдЪреА) рдХреЛ рдкреНрд░рдкрддреНрд░ kCTMobileEampleInfo * рдХреА рдХреБрдВрдЬреА рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдмрд╛рд░ рдореБрдЭреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрд╣рд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред _CServerConnectionCopyMobileEampleInfo рдХреЗ рд▓рд┐рдП Google рдЦреЛрдЬ рдиреЗ рдореБрдЭреЗ
рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛, рдФрд░ рдЬрд▓реНрдж рд╣реА IMEI рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ред
рдпрд╣ IMEI рдбрд┐рдЯреЗрдХреНрд╢рди рдореЗрдердб рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ IMEI (рд▓реЙрдХрд╡реЙрдиреНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред
рдЙрджрд╛рд╣рд░рдг 3:
рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрд▓рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ: рд╡реЙрд▓реНрдпреВрдо рдмрдЯрдиред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрдерд╛ рдХрд┐ "рдЕрдзрд┐рд╕реВрдЪрдирд╛" рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡рд░реНрдг рдирд┐рд░рдВрддрд░ рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рд░реНрдЯ рдХрд╛ рдирд╛рдо рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ [NSNotificationCenter defaultCenter] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
$ sh ~ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / LookSDKForSymbol.sh рдЕрдзрд┐рд╕реВрдЪрдирд╛ $ рдорд╛рддреНрд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди
001dbe60 S _MPAVControllerVolumeDidChangeNotification
001dbe64 S _MPAVControllerVolumeMutedDidChangeNotification
001dc4f8 S _MPMusicPlayerControllerVolumeDidChangeNotification
001dc314 S _MPVolumeViewRouteButtonChangedNotification
001dc310 S _MPVolumeViewVisibilityChangedNotification
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ред/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer
000d6d24 D _AVController_EffectiveVolumeDidChangeNotification
000d6d60 D _AVController_VolumeDidChangeNotification
000d6fec D _AVSystemController_CurrentRouteHasVolumeControlDidChange рдЖрд╡рдзрд┐рдХрд░рдг
000d6ffc D _AVSystemController_EffectiveVolumeDidChangeNotification
000d6fdc D _AVSystemController_SystemVolumeDidChangeNotification
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ред/System/Library/PStreetFrameworks/Celestial.framework/Celestial
... рдФрд░ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдЬрди рдЕрдзрд┐рдХ
рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЬрд╛рдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рд╡реЙрд▓реНрдпреВрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЕрд▓рд░реНрдЯ рдЖрдП рдереЗред
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдЕрдзрд┐рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдмрдбрд╝реА рд╕реВрдЪреА рд╕реЗ, рдХреЗрд╡рд▓ рдпреЗ 2 рдЖрдП:
AVController_EffectiveVolumeDidChangeNotification
AVController_VolumeDidChangeNotification
рдЗрди рдЕрд▓рд░реНрдЯ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐
1) рдЖрдк рд╕реАрдзреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
2) рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рдХрдм рджрдмрд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдХрдм
рдореИрдВ рдЕрдиреНрдп рдХреАрд╡рд░реНрдб рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВ:
$ sh ~ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / LookSDKForSymbol.sh рд╡реЙрд▓реНрдпреВрдо рдмрдЯрди
001b221c t - [UIApplication setWantsVolumeButtonEvents:]
003cce5c t _SBSetWantsVolumeButtonEvents $ рд╢рд┐рдо
0054478c S __UIApplicationVolumeDownButtonDownNotification
00544 790 S __UIApplicationVolumeDownButtonUpNotification
00544784 S __UIApplicationVolumeUpButtonDownNotification
00544788 S __UIApplicationVolumeUpButtonUpNotification
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ./System/Library/Frameworks/UIKit.framework/UIKit
... рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЪреМрдЦрдЯреЛрдВ рд╕реЗ рдХреБрдЫ рджрд░реНрдЬрди рдЕрдзрд┐рдХ
UIKit рдХреЗ рдЪрд╛рд░ рдЕрд▓рд░реНрдЯ рдиреЗ рддреБрд░рдВрдд рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛: рдЙрдирд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
[[UIApplication sharedApplication] setWantsVolumeButtonEvents: YES];
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдЖрдиреЗ рд▓рдЧреАрдВред
рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ: рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╡реЙрд▓реНрдпреВрдо рдмрдЯрди рдЕрдм рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдмрдЯрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
[[UIApplication sharedApplication] setWantsVolumeButtonEvents: NO];
рдЙрджрд╛рд╣рд░рдг 4:
рдЕрдирдбрд╛рдпрд░реЗрдХреНрдЯреЗрдб рдЕрд▓рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рд┐рдо рд╕реНрдерд┐рддрд┐
рд╣рдо рд╕рд┐рджреНрдз рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
$ sh ~ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / LookSDKForSymbol.sh рдЕрдзрд┐рд╕реВрдЪрдирд╛ $ рд╕рд┐рдо
...
00052560 S _kCSIMSupportSIMInsertionNotification
00052564 S _kCSIMSupportSIMStatusChangeNotification
...
000525bc S _kCSIMSupportSIMTrayStatusNotification
...
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ред/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony
...
рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ./System/Library/PStreetFrameworks/FTServices.framework/FTServices
$
рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдЕрд▓рд░реНрдЯ рдореБрдЭреЗ рдирд╛рдореЛрдВ рдХреЗ рддрд╣рдд рд▓рдЧ рд░рд╣реЗ рдереЗ:
1) kCSIMSupportSIMInsertionNotification
2) kCSIMSupportSIMStatusChangeNotification
3) kCSIMSupportSIMTrayStatusNotification
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд┐рдо рдХрд╛рд░реНрдб рдбрд╛рд▓рдиреЗ рдХреЗ рд╕рдордп (1) рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЕрд▓рд░реНрдЯ (рдореИрдВ рдкрд╣рд▓реЗ рдирд╛рдо рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рдерд╛), (2) рдареАрдХ рдЙрд╕реА рд╕рдордп рдЖрдпрд╛ рдЬрдм рдореБрдЭреЗ рдЬрд░реВрд░рдд рдереА (рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдордп), рд╕реВрдЪрдирд╛рдПрдБ (3) ) рдмрд┐рд▓рдХреБрд▓ рдирд╣реАрдВ рдЖрдпрд╛ред рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрд▓рд░реНрдЯ (3) рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рддрд░реНрдХрддрд╛ рдХреЗрдВрджреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд┐рд╕реЗ CTTelephonyCenter рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк
рдпрд╣рд╛рдВ CTTelephonyCenter
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд┐рдо рд╕реНрдерд┐рддрд┐ рдЕрд▓рд░реНрдЯ:
#include "CoreTelephony.h" - (void) notificationCallback:(NSNotification)notification { ... } - (void) startUpdateSIMStatus { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCallback:) name:kCTSIMSupportSIMStatusChangeNotification object:nil ]; } - (void) stopUpdateSIMStatus { [[NSNotificationCenter defaultCenter] removeObserver:self name:kCTSIMSupportSIMStatusChangeNotification object:nil]; }
рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИ
1. рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдзреНрд╡рдирд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
www.iphonedevwiki.net/index.php/AudioServices - рдпрд╣рд╛рдВ рдмрдЯрди рджрдмрд╛рдП рдЬрд╛рдиреЗ рдЬреИрд╕реЗ рдорд╛рдирдХ рд▓рдШреБ (<30sec) рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП SystemSoundID рдЬреИрд╕реЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрддрд╛рдП рдЧрдП рд╣реИрдВред рдЖрдк рдЙрди рд╕рднреА рдХреЛ рд╕реНрд╡рдпрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ 1000 рд╕реЗ рдорд╛рдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЖрдк рдЕрднреА рднреА рдорд╛рдирдХ рд░рд┐рдВрдЧрдЯреЛрди рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ: - (void) playDefaultRingTone { NSURL *defaultRingTone = [NSURL URLWithString:@"/System/Library/CoreServices/SpringBoard.app/ring.m4r"]; AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:defaultRingTone error:nil]; [player play]; }
2. UIView рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЦреЛрдЬ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпреВрдЖрдИрд╡реАрд╡рд╛рдИ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдг) рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ (рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╢реАрд░реНрд╖ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рд╕рдмрд╕реЗ рдКрдкрд░) UIWindow рдСрдмреНрдЬреЗрдХреНрдЯ (s) рд╣реИред рдпрджрд┐ рдЖрдк рдкреВрд░реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣реИ: рдЕрдЬреАрдм рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ UIWindow рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред__ all__ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЕрдирдХрдореНрдбрд░реНрдб рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ + [UIWindow allWindowsIncludingInternalWindows: onlyVisibleWindows:]
рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд╛рдзрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдЪрд╛рд░ рд╡рд┐рдВрдбреЛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ! (UIWindow)1) рдПрдХ рдирд┐рдпрдорд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдВрдбреЛ2) рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ (рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - [UIApplication statusBarWindow])3) UIAlertView рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ (рдкреНрд░рдХрд╛рд░ UIAlertView рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рджреГрд╢реНрдп)ред4) рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛредрд╣рдо рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рдкрд┐рдЫрд▓реЗ рддреАрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рдередрд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:- UIAlertView рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓реЗрдВ, рдкрд╛рда рдлрд╝реАрд▓реНрдб, рд░реЗрдбрд┐рдпреЛ рдмрдЯрди, рдЖрджрд┐ рдЬреЛрдбрд╝реЗрдВред- рд╕реНрдерд┐рддрд┐ рдкрдЯреНрдЯреА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрдХреЗрддрдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдорд╛рдирдХ рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред- рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрдЯрди, рд╕реНрд╡рд┐рдЪ рдЖрджрд┐ рдЬреЛрдбрд╝реЗрдВ,рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рднреА рд╣реИрдВред рдХреБрдЫ рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡ рд╕реАрдзреЗ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЧрд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред @interface UIStatusBarSignalStrengthItemView : UIStatusBarItemView { @private int _signalStrengthRaw; int _signalStrengthBars; BOOL _enableRSSI; BOOL _showRSSI; } -(id)_stringForRSSI; -(float)extraRightPadding; -(void)touchesEnded:(id)ended withEvent:(id)event; -(id)contentsImageForStyle:(int)style; -(BOOL)updateForNewData:(id)newData actions:(int)actions; @end
рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UIStatusBarSignalStrengthItemView рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реЗрд▓реБрд▓рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ RSSI (рдкреНрд░рд╛рдкреНрдд рд╕рд┐рдЧреНрдирд▓ рд╕реНрдЯреНрд░реЗрдВрде) рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрд╛рдиреВрдиреА рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВредрдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рднреА рджреГрд╢реНрдпрдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдХреЛрдб рдХреА рдкреВрд░реА рд╕реВрдЪреАред рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ [UIView рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг]: @interface UIView (RecursiveDescription) - (void) recursiveDescription; + (void) completeDescription @end @implementation UIView (RecursiveDescription) - (void) recursiveDescription { NSLog(@"______________________________________"); NSLog(@"%@", self); NSArray *subviews_ = [self subviews]; if ([subviews_ count] > 0) { for (UIView *subview_ in subviews_) { [subview_ recursiveDescription]; } } } - (void)completeDescription { NSArray *windows = [UIWindow allWindowsIncludingInternalWindows:YES onlyVisibleWindows:NO]; for (UIView *view in windows) { [view recursiveDescription]; } } @end
3. рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдореНрди-рд╕реНрддрд░реАрдп iOS рд╕рдмрд╕рд┐рд╕реНрдЯрдо
MIG рд╕рдмрд╕рд┐рд╕реНрдЯрдо (MIG-рд╕рдмрд╕рд┐рд╕реНрдЯрдо, рдордЪ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЗрдирд░реЗрдЯрд░) рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реНрдиреЗрд▓ (рддрдерд╛рдХрдерд┐рдд "рдордЪ рдХрд░реНрдиреЗрд▓") рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИред рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдордЖрдИрдЬреА-рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдпрд╣рд╛рдБ рд╣реИ: www.opensource.apple.com/source/xnu/xnu-1228.0.2/libsyscall/mach ред рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рднреА рджреЗрдЦреЗрдВ: www.iphonedevwiki.net/index.php/MIG_bubsystem редIORegistry, I / O рд░рдЬрд┐рд╕реНрдЯреНрд░реА - рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА; рдПрдХ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЬреЛ iPhone рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреА рд╣реИред IORegistry рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдПрд░рд┐рдХрд╛ рд╕рджреБрди рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ UIDevice-IOKitExtensions )редрдЙрдкрдХрд░рдг
рдПрдирдПрдо рдПрдХ рдпреВрдирд┐рдХреНрд╕ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдирдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИредрдПрдирдПрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ (рдФрд░ рдмрд▓реНрдХрд┐ рдЧреВрдВрдЧрд╛) рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬреЛ рдЖрдИрдУрдПрд╕ рдПрд╕рдбреАрдХреЗ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрдЬрддреА рд╣реИредLookSDKForSymbol.sh:
c ++ filt - рдирд╛рдореЛрдВ рдХреА рдмрд╣рд╛рд▓реА ( рдбреАрдордВрдЧреНрд▓рд┐рдВрдЧ )ред рдХреЗрд╡рд▓ C ++ рдХреЗ рд▓рд┐рдП; рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдФрд░ рд╕реА рд╕рд┐рд░реНрдл рдорд╛рдирд╡-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рддреБрд░рдВрдд рдЬрд╛рддреЗ рд╣реИрдВредрдУрдЯреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдбрд┐рд╕рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИредрд╣реЗрдХреНрд╕рдбрдВрдк - рдбрдВрдк рдЗрдЯ рдбрдВрдк :-)рдХреНрд▓рд╛рд╕-рдбрдВрдк-рдЬреЗрдб рдПрдХ рд╕реБрдкрд░ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓реЛрдВ, рд╡рд░реНрдЧреЛрдВ, рд╢реНрд░реЗрдгрд┐рдпреЛрдВ, рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ, рдЧреБрдгреЛрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд╡рд┐рд╡рд░рдгредGoogle рдХреЛрдб рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА - рдпрд╣рд╛рдВ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрд╣реЗрдХреНрд╕-рд░реЗрдЬ рдПрдЖрд░рдПрдо рдбреЗрдХреЛрдореНрдкреЗрд▓рд░ - рд╣реЗрдХреНрд╕-рд░реЗрдЬ рдЖрдИрдбреАрдП, рдПрдЖрд░рдПрдо рдХреЛрдб рдбрд┐рдХрдореНрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯредрдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ рдПрд░рд┐рдХрд╛ рд╕рджреБрди - рдПрд░рд┐рдХрд╛ рдХреА рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдХрдИ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рд░реНрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛редрдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрди, рд╕реНрд░реЛрдд
рд╡рд┐рдХреА
www.iphonedevwiki.netрдХреЗрд╡рд▓ рд╡рд┐рдХреА рдореБрдЭреЗ рдЬреЗрд▓рдмреНрд░реЗрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреБрд░рд╛рдиреА рд╣реИ(iOS 3.x, iOS 4.x), рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрди рд╣реИредрд╡реНрдпрдХреНрддрд┐
1. рдЬреЗ рдлреНрд░реАрдореИрди, saurikwww.saurik.com2. рдПрд░рд┐рдХрд╛ рд╕рджреВрди , рдЖрдИрдлреЛрди рдбреЗрд╡рд▓рдкрд░ рдХреА рдХреБрдХрдмреБрдХ рдФрд░ рдж рдЖрдИрдУрдПрд╕ 5 рдбреЗрд╡рд▓рдкрд░ рдХреА рдХреБрдХрдмреБрдХ рдХреА рд▓реЗрдЦрд┐рдХрд╛: рдЖрдИрдУрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдХреЙрдиреНрд╕реЗрдкреНрдЯреНрд╕ рдФрд░ рдПрд╕реЗрдВрд╢рд┐рдпрд▓ рд░реЗрд╕рд┐рдкреАрдЬ: рд╕рд╛рде рд╣реА рдХрдИ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВред рдЙрдирдХреА рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рдХреБрдЫ рдЕрдирдЫреБрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИредericasadun.comрдХреБрдЫ рдПрд░рд┐рдХрд╛ рд╕рджреБрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ:github.com/erica/iOS-5-Cookbookgithub.com/erica/iphone-3.0-cookbook-github.com/erica/uidevice-extension3. KennyTM / networkpx, рдХреНрд▓рд╛рд╕-рдбрдВрдк-рдЬреЗрдб рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдирдЬрд╛рдиреЗрдиреЗрдЯрд╡рд░реНрдХ x рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ StackOverflow.com рдХрд╛ рд╕рдХреНрд░рд┐рдп рд╕рджрд╕реНрдп рд╣реИ ред blogspot.com APIcode.google.com/p/networkpxgithubред com / kennytmstackoverflow.com/users/224671/kennytmgithub.com/kennytm/iphone-pStreet-frameworksрдЬрд╛рдирдХрд╛рд░реА рдмрд╣реБрдд рдкреБрд░рд╛рдиреА (iOS 3) рд╣реИредрдХрд┐рддрд╛рдмреЗрдВ
"рдЖрдИрдлреЛрди рдбреЗрд╡рд▓рдкрд░ рдХреА рдХреБрдХрдмреБрдХ" (рдЖрдИрдУрдПрд╕ 5 рдбреЗрд╡рд▓рдкрд░ рдХреА рдХреБрдХрдмреБрдХ: рдХреЛрд░ рдХреЙрдиреНрд╕реЗрдкреНрдЯреНрд╕ рдФрд░ рдЖрдИрдУрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпрдВрдЬрдиреЛрдВ) рднреА рдЖрдИрдУрдПрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдирдбреВрд╕реНрдб рдЖрдИрдУрдПрд╕ рдлреАрдЪрд░ рд╣реИрдВредрд░реВрд╕реА рдЕрдиреБрд╡рд╛рдж: рдЕрдиреБрд╡рд╛рджрд┐рдд. by/ you / iphone- developers-cookbook-development-native-applications-for-the-iphone/ into- ru/trans